Orodha ya maudhui:

Suluhisho la LoRa IoTea la Seeed: Hatua 5
Suluhisho la LoRa IoTea la Seeed: Hatua 5

Video: Suluhisho la LoRa IoTea la Seeed: Hatua 5

Video: Suluhisho la LoRa IoTea la Seeed: Hatua 5
Video: Только правда имеет значение | 3 сезон 25 серия 2024, Julai
Anonim
Ufumbuzi wa LoRa IoTea ya Seeed
Ufumbuzi wa LoRa IoTea ya Seeed

Mfumo wa kukusanya habari moja kwa moja unaotumika kwenye shamba la chai. Ni sehemu ya mkusanyiko wa habari ya kilimo yenye akili.

Hatua ya 1: Vitu vinavyotumiwa katika Mradi huu

Vipengele vya vifaa

  • Grove - sensorer ya kaboni ya kaboni (MH-Z16)
  • Grove - Sura ya Nuru ya Dijiti
  • Grove - Sura ya Vumbi (PPD42NS)
  • Grove - Sensor ya oksijeni (ME2-O2--20)
  • Unyevu wa Udongo & Sensorer ya Joto
  • Lango la LoRa LoRaWAN - Kitanda cha 868MHz na Raspberry Pi 3
  • Grove - Temp & Humi & Barometer Sensor (BME280)

Programu za programu na huduma za mkondoni

Studio ya Visual ya Microsoft 2015

Hatua ya 2: Hadithi

Kilimo mahiri ni kutumia mtandao wa teknolojia ya Vitu kwa kilimo cha jadi, kwa kutumia sensorer na programu kudhibiti uzalishaji wa kilimo kupitia majukwaa ya rununu au kompyuta, na kufanya kilimo cha jadi kuwa "smart" zaidi.

Kwenye Mlima wa Mengding kaskazini mashariki mwa Ya'an, Sichuan, mlima wa mlima huenda magharibi kuelekea mashariki katika bahari ya kijani kibichi. Huu ni mwonekano unaofahamika zaidi kwa Deng mwenye umri wa miaka 36, mmoja wa watunga chai wa Mengding wa kizazi chake, na shamba la 50mu (= hekta 3.3) lililoko 1100m juu ya usawa wa bahari. Deng hutoka kwa familia ya watengenezaji wa chai, lakini kutekeleza urithi wa familia sio kazi rahisi. "Chai zetu hupandwa katika urefu wa juu katika mazingira ya kikaboni ili kuhakikisha ubora wake. Lakini wakati huo huo, wiani wa ukuaji ni mdogo, gharama ni kubwa na chipukizi hazitoshi, na kufanya chai kuwa ngumu kuvuna. Ndio maana chai ya mlima mrefu kawaida huwa mavuno madogo na maadili yake hayaonekani sokoni. " Kwa miaka miwili iliyopita, Deng amekuwa akijaribu kukuza uelewa wa watumiaji juu ya chai ya mlima mrefu ili kukuza thamani yao. Na alipokutana na Shabiki, ambaye alikuwa akitafuta shamba ili kutekeleza teknolojia ya IoTea ya Seeed, mechi kamili ya suluhisho ilifanywa. Suluhisho la Seeed IoTea linalenga kusaidia wakulima wa chai kusimamia vyema mashamba bila kubadilisha mazoea ya jadi ya kilimo cha chai, na kuwasilisha data ya mazingira ya wakati halisi kutoka kwenye shamba kwenye jukwaa wazi.

Inayojumuisha sensorer, nodi, na malango, IoTea hukusanya data ya wakati halisi wa sababu ambazo zinaweza kuathiri ubora wa chai wakati wa kulima na michakato ya uzalishaji, pamoja na joto na unyevu, CO2, O2, PM, na mwanga. Takwimu hukusanywa na sensorer, zilizotumwa na nodi kwenye lango na mwishowe kwenye wingu, na inafanywa kupatikana kwa kumaliza wateja kwenye ukurasa wa wavuti.

Hatua ya 3: Uunganisho wa vifaa

Hatua ya 1: Uunganisho wa lango

Lango limewekwa kando kwenye sanduku. Kuzingatia shida ya utaftaji wa joto, tumeongeza mashabiki 2. Moja ni kwa utaftaji wa joto wa Raspberry Pi, nyingine ni ya mzunguko wa hewa wa ndani na nje. Sanduku la lango limewekwa katika nyumba ya mkulima, kwa hivyo hatuitaji kuzingatia shida yake ya umeme.

Picha
Picha

Step2: Uunganisho wa Node

Node ni mwisho wa data, na data zote za asili zinapatikana kutoka hapa. Kuna sensorer 6 zilizounganishwa na node. Kwa kuongeza unyevu wa mchanga na sensorer ya joto, tunaweka sensorer zingine ndani ya sanduku la louver.

Picha
Picha
Picha
Picha

Node imewekwa kwenye sanduku lisilo na maji. Ili kuwa na unganisho bora kwa node, tunafanya bodi ya adapta. Mwishowe, tutatoa kiunga cha upakuaji wa bodi hii. Kama inavyoonyeshwa hapa chini, nyaya za sensorer zimechomekwa kwenye bodi ya adapta kupitia vizuizi vya wastaafu. Tunatumia zilizopo 3 za MOS (SI2301) kujenga nyaya za kubadili kudhibiti na kuzima kwa sensorer na shabiki. Shabiki hutumiwa kupoa. Tuna sensor ya joto (DS18B20) iliyowekwa kwenye ubao. Inaweza kutuambia joto la ndani la sanduku, na kisha mdhibiti mdogo anaamua ikiwa awasha shabiki. Tunatumia vipingaji kadhaa kutengeneza mzunguko wa mgawanyiko wa voltage kupima voltage ya asidi-asidi ya risasi. Mwishowe, tunahifadhi miingiliano 3 ya IIC na bandari ya serial kwenye bodi kwa upanuzi wa baadaye na utatuaji.

Picha
Picha

Wacha tuzungumze juu ya shida ya usambazaji wa umeme wa node. Node imewekwa kwenye shamba la chai kwa nasibu, kwa hivyo njia ya jadi ya usambazaji wa umeme haitumiki tena. Kutumia suluhisho la nguvu ya jua ni wazo nzuri. Kuna suluhisho nyingi zinazotolewa kwenye soko kwa sasa. Tunaweza kuchagua moja yao ambayo yanakidhi mahitaji yetu. Kuna sehemu 3 katika suluhisho tulilochagua: jopo la jua, mdhibiti wa malipo ya jua na betri ya asidi inayoongoza. Ili kunasa nishati ya jua vizuri, tunaweka paneli ya jua juu ya bracket na kurekebisha pembe yake ili kuhakikisha kuwa inakabiliwa na jua. Tuliweka mtawala wa malipo ya jua kwenye sanduku moja na node. Kwa sababu hakuna nafasi ya ziada ndani ya sanduku, ilibidi tutafute sanduku jipya lisilo na maji ili kuweka betri ya asidi inayoongoza.

Picha
Picha
Picha
Picha
Picha
Picha

Hatua ya 4: Usanidi wa Programu

Nodi

Katika sehemu hii, tutaanzisha usanidi wa programu haswa wa nodi.

Takwimu

Takwimu zilizopakiwa na node kwenye lango:

char iliyosajiliwa Lora_data [15] = {0, 1, 2, 3,, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14};

Maana ya kila data kidogo:

Lora_data [0]: Joto la hewa, ℃

Lora_data [1]: Unyevu wa hewa,%

Lora_data [2]: Urefu urefu wa nane, m

Lora_data [3]: Urefu chini wa nane

Lora_data [4]: mkusanyiko wa CO2 juu ya nane, ppm

Lora_data [5]: mkusanyiko wa CO2 chini ya nane

Lora_data [6]: Mkusanyiko wa vumbi juu nane, pcs / 0.01cf

Lora_data [7]: Mkusanyiko wa vumbi chini ya nane

Lora_data [8]: Mwangaza wa kiwango cha juu cha nane, lux

Lora_data [9]: Nguvu nyepesi chini ya nane

Lora_data [10]: Mkusanyiko wa O2,% (data ghafi imegawanywa na 1000)

Lora_data [11]: Joto la mchanga, ℃

Lora_data [12]: Unyevu wa udongo,%

Lora_data [13]: Voltage ya betri, v

Lora_data [14]: Nambari ya makosa ya sensorer

Nambari ya hitilafu:

Lora_data [14] = [bit7, bit6, bit5, bit4, bit3, bit2, bit1, bit0]

Maana ya kila kidogo:

kidogo 0: 1 ---- Hitilafu ya Temp & Humi & Barometer Sensor (BME280)

kidogo 1: 1 ---- Hitilafu ya sensorer ya dioksidi ya kaboni (MH-Z16)

kidogo 2: 1 ---- Sura ya Vumbi) kosa la PPD42NS.

kidogo 3: 1 ---- Hitilafu ya Sura ya Nuru ya Dijiti

kidogo 4: 1 ---- Hitilafu ya Sensorer ya Oksijeni (ME2-O2-Ф20)

kidogo 5: 1 - Hitilafu ya Unyevu wa Udongo na Joto

kidogo 6: Imehifadhiwa

kidogo 7: Imehifadhiwa

Tumefanya Error_code_transform.exe, kuifungua na kuingiza nambari ya makosa katika hexadecimal, utajua haraka ni sensor ipi ni makosa. Kiungo cha kupakua ni mwisho wa nakala hii.

Marekebisho ya parameta: a) Mzunguko wa usafirishaji wa data

// sawedtea.ino

#defineinterval_time 600 // sekunde

Kigezo hiki kinaweza kutofautiana kubadilisha mzunguko wa usafirishaji wa data. Katika kila mzunguko, upatikanaji wa data unachukua kama dakika 1. Kwa hivyo, haipendekezi kubadilisha thamani hii kuwa chini ya sekunde 60.

b) Wakati wa joto wa sensor ya vumbi

//seeedtea.ino

#definePreheat_time 30000 // Wakati wa joto wa vumbi, milliseond //Dust_other.cpp #finesinesampletimeime_ms 30000 // wakati wa sampuli30s

c) Mgawo wa Voltage

//POWER_Ctrl.cpp

#defineBattery_coefficient 0.159864 // ADC value × Battery_coefficient = betri_voltage #defineSolar_coefficient 0.22559 // Thamani ya ADC × Solar_coefficient = Solar_voltage

Vigezo hivi viwili vinahesabiwa kulingana na mzunguko wa mgawanyiko wa voltage.

d) Kizingiti cha joto la kufungua shabiki

//POWER_Ctrl.cpp

#defineFan_start_temp 45 45 // kiwango cha joto #fafanuaFan_start_light 500 // nguvu ndogo

Wakati joto halisi linazidi kizingiti, shabiki ataanza kupoa.

e) Kigezo cha uanzishaji wa sensorer O2

// Oksijeni.cpp

# fafanuaO2_percentage 208.00 //20.8%

f) Kubadilisha Macro

//seeedtea.ino

#fafanuaLORA_RUN // Baada ya maoni, uanzishaji wa Lora na usambazaji wa data utasimamisha #fafanuaSENSOR_RUN // Baada ya maoni, waulizaji wa nje wataacha kufanya kazi //POWER_Ctrl.cpp #fineFAN_ON // Kujizuia tu, maombi ya vitendo yanahitajika kutolewa maoni / **** Modi ya kudhibiti DS18B20 ********************** / #fafanuaPolepole_Mode // Hali polepole ili kupunguza joto. Kutoa maoni ni hali ya haraka

g) Ramani ya pini

D2: Kiashiria cha LED na udhibiti mdogo wa nje microcontrollerIIC: SCL na SDA

//Vumbi_lingine.h

#defineVust_pin 3 // sensor vumbi //CO2.cpp # defineCO2_serial Serial1 // tumia bandari ngumu (D0 & D1) //seeedtea.ino #definedataPin 6 // Siri ya udongo #defineclockPin 7 // Siri ya saa ya udongo // POWER_Ctrl. h # defineDS18B20_pin 8 // DS18B20 #defineFan_pin 9 // Shabiki #defineAir_CtrlPin 10 // Pini ya kudhibiti sensorer zilizowekwa kwenye louverbox #defineSoil_CtrlPin 11 // Unyevu wa mchanga na sensorer ya sensorer ya Joto #defineBattery_pin A2 // Pima nguvu ya betri # / Pima upepo wa umeme wa jua // Oxygen.h # defineO2_pin A1 // O2 sensor

h) Kipima muda cha mwangalizi

Kipima muda cha mwangalizi kinatumika kufuatilia hali ya mfumo. Wakati mfumo unafanya kazi isivyo kawaida, node itawekwa upya, ili iweze kuendelea kwa muda mrefu.

Maktaba itakayotajwa:

  • Adafruit_SleepyDog.h imeongezwa kwenye mradi huo
  • Adafruit_ASFcore-master.zip imewekwa kwenye folda ya mradi na inahitaji kuongezwa kwa mikono kwa IDE ya Arduino.

Kazi zinazohusiana:

Wezesha mbwa wa kutazama

int WatchdogSAMD:: wezesha (int maxPeriodMS, bool isForSleep)

Vigezo vya kuingiza:

Int maxPeriodMS: Wakati wa kusubiri kwa milliseconds. Upeo unaoruhusiwa ni milisekunde 16000.

Thamani ya kurudisha:

Aina ya Int, rudisha wakati halisi wa kusubiri

Weka upya mbwa wa kutazama

utupu wa mwangaliziSAMD:: reset ()

Piga kazi hii kuweka upya kipima saa cha mwangalizi, kinachojulikana kama "kulisha mbwa." Kuzidi wakati wa kusubiri bila kuweka upya kutasababisha nodi kuanza upya.

Acha mbwa wa kutazama

utupu wa KuangaliaSAMD:: afya ()

Lango

Katika sehemu hii tutaanzisha jinsi ya kuungana na seva ya Loriot.

Step1: Usajili wa Langoot Server Gateway

a) Mtumiaji mpya anahitaji kujiandikisha akaunti kwanza, bonyeza anwani ya usajili. Jaza Jina la Mtumiaji, Nenosiri na anwani ya barua pepe kujiandikisha, baada ya usajili barua pepe itatumwa kwako, tafadhali fuata maagizo kwenye barua pepe ili kuamsha.

b) Baada ya kufanikisha uanzishaji, bonyeza hapa kuingia. Kiwango chaguomsingi ni "Mtandao wa Jumuiya", inasaidia 1 Gateway (RHF2S001) na nodi 10.

c) Ingiza Dashibodi -> Gateway, bonyeza Ongeza Gateway anza kuongeza Gateway.

d) Chagua Raspberry Pi 3

e) Weka kama ilivyo hapo chini:

  • Mbele ya redio -> RHF2S001 868/915 MHz (SX1257)
  • BASI -> SPI

f) Jaza anwani ya MAC ya RHF2S001 yako, inapaswa kuwa katika muundo wa b8: 27: eb: xx: xx: xx. Na pia ingiza habari ya Mahali pa Gateway.

g) Bonyeza "Sajili Raspberry Pi lango" kumaliza usajili.

Picha
Picha

h) Bonyeza lango lililosajiliwa ili kuingia ukurasa wa usanidi, badilisha "Mpango wa Frequency" kwa mikono, mpango wako hapa umeamuliwa na aina ya aina yako ya RHF2S001, mpango unaopatikana ni CN470, CN473 , CN434 , CN780 , EU868, baada ya kuchaguliwa tafadhali onyesha ukurasa upya kupata kituo halisi. Katika wiki hii tunachagua EU868.

i) Endesha amri katika kituo cha putty:

cd / nyumba/rxhf/loriot/1.0.2

Sudo systemctl acha pktfwd sudo gwrst wget > -O loriot-gw.bin chmod +x loriot-gw.bin./loriot-gw.bin -f -s cn1.loriot.io

j) Finish gateway registration. You will see the gateway is Connected now. Next is to register node.

Picha
Picha

Step2: Kifaa cha Nodi ya Unganisha Loriot

a) Pata njia zinazopatikana za lango

Njia za sasa za lango zinaweza kupatikana kutoka kwa Dashibodi -> Lango -> Lango lako, unaweza kuona vituo vinavyopatikana kama picha hapa chini.

Picha
Picha

b) Usanidi wa Seeeduino LoRAWAN GPS (RHF3M076)

Fungua mfuatiliaji wa mfululizo wa ArduinoIDE, gonga amri hapa chini.

saa + ch

Ili kudhibitisha kituo chaguomsingi cha Seeeduino_LoRAWAN GPS yako, utapata vituo 3. Ikiwa hakuna kituo kinachopatikana, unaweza kubadilisha vituo vya Seeeduino_LoRAWAN kwa amri hapa chini.

saa + ch = 0, 868.1

kwa + ch = 1, 868.3 kwa + ch = 2, 868.5

Basi unaweza kutumia + ch tena kuangalia.

c) Ongeza Seeeduino_LoRAWAN GPS kama ABP NodeLog katika seva ya Loriot, Bonyeza Bodi ya Dash -> Maombi -> SimpleApp. Bonyeza Ingiza ABP, pembejeo chini ya vitu

  • DevAddr: Seeeduino_LoRAWAN GPS ipitie amri ya "AT + ID" (Kumbuka: Loriot haiungi mkono kiunganishi cha koloni, inahitaji kuondoa mwenyewe)
  • FCntUp: Setto 1
  • FCntDn: Setto 1
  • NWKSKEY: Defaultvalue 2B7E151628AED2A6ABF7158809CF4F3C
  • APPSKEY: Defaultvalue 2B7E151628AED2A6ABF7158809CF4F3C
  • EUI: DEVEUI, Seeeduino_LoRAWAN GPS kupitia amri ya "AT + ID"
Picha
Picha

Bonyeza kitufe cha Ingiza Kifaa kumaliza uingizaji wa kifaa. Sasa chagua Dashibodi-> Maombi -> SampuliApp, utaona Node mpya ya ABP ambayo umeongeza tu.

Picha
Picha

d) Tuma data kutoka Seeeduino_LoRAWAN

UMAKINI! Huu ni mtihani tu.

Rudi kwa mfuatiliaji wa mfululizo wa ArduinoIDE, tuma amri:

AT + CMSGHEX = "0a 0b 0c 0d 0e"

Kisha nenda kwenye Dashibodi -> Maombi -> SampuliApp -> Kifaa, bofya Kifaa cha Node EUI au DevAddr, utapata data ambayo umetuma hapa.

Picha
Picha

Kwa maelezo, tafadhali rejea wiki hii.

Hatua ya 5: Ujenzi wa Wavuti

Zana zinazohusiana

  • fadhila
  • Python3
  • Gunicorn
  • Msimamizi
  • Nginx
  • MySQL

Tunatumia CentOS7 kama mazingira ya kupelekwa kwa mtihani

fadhila

Tumia fadhila kujenga mazingira ya uzalishaji wa chatu3

a) kusakinisha

bomba funga fadhila

b) unda mazingira halisi ya python3

fadhila -p python3 iotea

c) anza mazingira halisi na ingiza saraka ya iotea

chanzo bin / activate

d) kuwepo kwa mazingira

zima

Python3

a) kufunga

yum kufunga kutolewa kwa epel

yum kufunga python36

b) kusanikisha maktaba tegemezi PyMySQL, DBUtils, Flask, websocket-mteja, configparser

bomba funga pymysql

pip install dbutils pip install flask pip install websocket-mteja pip install configparser

Gunicorn

a) kusanikisha (chini ya mazingira ya Python3)

bomba kufunga gunicorn

b) kuendesha mradi wa chupa (chini ya saraka ya mradi wa iotea)

gunicorn -w 5 -b 0.0.0.0:5000 programu: programu

c) endesha websocket-clint kupata data ya loriot

gunicorn loriot: programu

d) angalia mti wa mchakato wa Gunicorn

pstree -ap | grep gunicorn

Msimamizi

a) kusanikisha (mtumiaji wa mizizi)

msimamizi wa kufunga bomba

b) toa faili za usanidi

echo_supervisord_conf> /etc/supervisord.conf

c) kuunda saraka na kuanzisha usanidi wa saraka

mkdir -p /etc/supervisor/conf.d

Hariri /etc/supervisord.conf na urekebishe uwanja wa faili chini [ujumuishe] mwishoni mwa faili.

Kumbuka kuwa unahitaji kuondoa ';' mbele ya mistari hii miwili, ambayo ni tabia ya maoni.

[pamoja na]

Faili = /etc/supervisor/conf.d/*.conf

Inamaanisha kuanzisha /etc/supervisor/conf.d/. Faili ya usanidi ifuatayo hutumiwa kama faili ya usanidi wa mchakato (inayofuatiliwa na msimamizi).

d) usanidi unaoingia (chini ya saraka ya iotea)

cp iotea.conf /etc/supervisor/conf.d/

cp loriot.conf /etc/supervisor/conf.d/

e) kufungua iotea kutumika

superviosrctl pakia tena #pakia tena faili ya usanidi

superviosrctl anza loriot #fungua loriot data mapokezi superviosrctl anza iotea #ufungue programu ya iotea flask

f) shughuli zingine za kawaida

msimamizi pakia upya # pakia tena faili ya usanidi

sasisha supervisorctl supervisorctl kuanza xxx supervisorctl stop xxx supervisorctl status xxx supervisorctl help # view more command

Nginx

a) kufunga

yum kufunga -y nginx

b) usanidi

cp NginxIotea.conf /etc/nginx/conf.d/

c) anza Nginx

systemctl kuanza nginx.huduma

MySQL

a) vigezo vinavyohusiana

mtumiaji = 'mzizi'

passwd = '1234' db = 'bandari ya iotea' = 3306

b) faili

iotea_iotea.sql

c) faili ya usanidi

db.ini

Ilipendekeza: