Përmbajtje:
- Hapi 1: Gjërat e përdorura në këtë projekt
- Hapi 2: Histori
- Hapi 3: Lidhja e harduerit
- Hapi 4: Konfigurimi i softuerit
- Hapi 5: Ndërtimi i faqes në internet
Video: Shikoni LoRa IoTea Zgjidhja: 5 hapa
2024 Autor: John Day | [email protected]. E modifikuara e fundit: 2024-01-30 12:20
Një sistem automatik i mbledhjes së informacionit i aplikuar në plantacionin e çajit. Shtë pjesë e mbledhjes së informacionit inteligjent bujqësor.
Hapi 1: Gjërat e përdorura në këtë projekt
Komponentët e harduerit
- Grove - Sensori i dioksidit të karbonit (MH -Z16)
- Grove - Sensor dixhital i dritës
- Grove - Sensor pluhuri (PPD42NS)
- Grove-Sensori i oksigjenit (ME2-O2-Ф20)
- Sensori i lagështisë dhe temperaturës së tokës
- LoRa LoRaWAN Gateway - Kit 868MHz me Raspberry Pi 3
- Grove - Sensori Temp & Humi & Barometër (BME280)
Aplikacionet softuerike dhe shërbimet online
Microsoft Visual Studio 2015
Hapi 2: Histori
Bujqësia e zgjuar do të thotë të aplikosh teknologjinë e Internetit të Gjërave në bujqësinë tradicionale, duke përdorur sensorë dhe softuerë për të kontrolluar prodhimin e bujqësisë përmes platformave të lëvizshme ose kompjuterike, duke e bërë bujqësinë tradicionale më "të zgjuar".
Në malin Mengding në verilindje të Ya'an, Sichuan, kurrizi malor shkon nga perëndimi në lindje në një det të gjelbër. Kjo është një pamje më e njohur për Dengin 36-vjeçar, një nga shumë pak prodhuesit e çajit Mengding të brezit të tij, me një plantacion prej 50mu (= 3.3 hektarë) të vendosur në 1100m mbi nivelin e detit. Deng vjen nga një familje prodhuesish çaji, por mbajtja e trashëgimisë familjare nuk është një detyrë e lehtë. “Çajrat tanë janë rritur në lartësi të mëdha në një mjedis organik për të siguruar cilësinë e tij të shkëlqyer. Por në të njëjtën kohë, dendësia e rritjes është e ulët, kostoja është e lartë dhe lulëzimi është i pabarabartë, duke e bërë çajin të vështirë për të korrur. Kjo është arsyeja pse çajrat e maleve janë zakonisht të korra të vogla dhe vlerat e tyre nuk reflektohen në treg.” Për dy vitet e fundit, Deng është përpjekur të rrisë ndërgjegjësimin e konsumatorëve për çajin e malit të lartë për të promovuar vlerën e tyre. Dhe kur takoi Fan, i cili po kërkonte një plantacion për të zbatuar teknologjinë IoTea të Seeed, u bë një ndeshje perfekte për një zgjidhje. Zgjidhja e parë IoTea synon të ndihmojë fermerët e çajit të menaxhojnë më mirë plantacionet pa ndryshuar praktikat tradicionale të kultivimit të çajit dhe të paraqesë të dhëna mjedisore në kohë reale nga plantacionet në një platformë të hapur.
I përbërë nga sensorë, nyje dhe porta, IoTea mbledh të dhëna në kohë reale të faktorëve që mund të ndikojnë në cilësinë e çajit gjatë kultivimit dhe proceseve të prodhimit, përfshirë temperaturën dhe lagështinë, CO2, O2, PM, dhe ekspozimin ndaj dritës. Të dhënat mblidhen nga sensorët, dërgohen nga nyjet në portë dhe përfundimisht në re, dhe bëhen të arritshme për klientët përfundimtarë në një faqe në internet.
Hapi 3: Lidhja e harduerit
Hapi 1: Lidhja e Portës
Porta është instaluar veçmas në një kuti. Duke marrë parasysh problemin e shpërndarjes së nxehtësisë, shtuam 2 tifozë. Njëra është për shpërndarjen e nxehtësisë së Raspberry Pi, tjetra është për qarkullimin e brendshëm dhe të jashtëm të ajrit. Kutia e hyrjes vendoset në shtëpinë e një fermeri, kështu që ne nuk kemi nevojë të marrim parasysh problemin e tij të energjisë.
Hapi 2: Lidhja e Nyjeve
Nyja është terminali i të dhënave, dhe të gjitha të dhënat origjinale merren nga këtu. Janë 6 sensorë të lidhur me nyjen. Përveç sensorit të lagështisë dhe temperaturës së tokës, ne vendosim sensorë të tjerë brenda kutisë së mbështjellësve.
Nyja vendoset në një kuti të papërshkueshme nga uji. Për të pasur një lidhje më të mirë me nyjen, ne bëjmë një bord përshtatës. Më në fund, ne do të sigurojmë lidhjen e shkarkimit skematik të këtij bordi. Siç tregohet më poshtë, kabllot e sensorëve lidhen në bordin e përshtatësit përmes blloqeve të terminalit. Ne përdorim 3 tuba MOS (SI2301) për të ndërtuar qarqe kalimi për të kontrolluar ndezjen dhe fikjen e sensorëve dhe ventilatorit. Ventilatori përdoret për tu ftohur. Ne kemi një sensor të temperaturës (DS18B20) të montuar në tabelë. Mund të na tregojë temperaturën e brendshme të kutisë, dhe më pas mikrokontrolluesi vendos nëse do të ndezë tifozin. Ne përdorim disa rezistorë për të bërë një qark ndarës të tensionit për të matur tensionin e baterisë me acid plumbi. Së fundi, ne rezervojmë 3 ndërfaqe IIC dhe port serik në tabelë për zgjerim dhe korrigjim të mëvonshëm.
Le të flasim për problemin e furnizimit me energji të nyjes. Nyja vendoset në plantacionin e çajit rastësisht, kështu që metoda tradicionale e furnizimit me energji nuk është më e zbatueshme. Përdorimi i një zgjidhjeje të energjisë diellore është një ide e mirë. Ka shumë zgjidhje të ofruara në treg aktualisht. Ne mund të zgjedhim njërën prej tyre që plotëson nevojat tona. Ekzistojnë 3 pjesë në zgjidhjen që zgjodhëm: panel diellor, kontrollues i ngarkimit diellor dhe bateri me acid plumbi. Për të kapur më mirë energjinë diellore, ne vendosim panelin diellor në pjesën e sipërme të kllapës dhe rregullojmë këndin e tij për të siguruar që ai të jetë përballë diellit. Ne vendosëm kontrolluesin e ngarkesës diellore në të njëjtën kuti me nyje. Për shkak se nuk ka hapësirë shtesë brenda kutisë, na u desh të gjejmë një kuti të re të papërshkueshëm nga uji për të vendosur baterinë me acid plumbi.
Hapi 4: Konfigurimi i softuerit
Nyja
Në këtë pjesë, ne do të prezantojmë konfigurimin kryesisht të softuerit të nyjes.
DataFormat
Të dhënat e ngarkuara nga nyja në portë:
shenja pa shenjë Lora_data [15] = {0, 1, 2, 3,, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14};
Kuptimi i secilit bit të të dhënave:
Lora_data [0] temperature Temperatura e ajrit, Lora_data [1] humidity Lagështia e ajrit, %
Lora_data [2] : Lartësia e lartë tetë, m
Lora_data [3] : Lartësia e ulët tetë
Lora_data [4] concentration Përqendrim i lartë i CO2 tetë, ppm
Lora_data [5] concentration Përqendrim i ulët i CO2 tetë
Lora_data [6] concentration Përqendrimi i pluhurit tetë i lartë, copë/0.01cf
Lora_data [7] concentration Përqendrimi i pluhurit i ulët tetë
Lora_data [8] intensity Intensitet drite i lartë tetë, lux
Lora_data [9] intensity Intensiteti i dritës i ulët tetë
Lora_data [10] concentration Përqendrimi i O2, % (të dhënat e papërpunuara të ndara me 1000)
Lora_data [11] temperature Temperatura e tokës, Lora_data [12] humidity Lagështia e tokës, %
Lora_data [13] voltage Tensioni i baterisë, v
Lora_data [14] : Kodi i gabimit të sensorëve
Kodi i gabimit:
Lora_data [14] = [bit7, bit6, bit5, bit4, bit3, bit2, bit1, bit0]
Kuptimi i secilit bit:
bit 0: 1 ---- Gabim Temp & Humi & Barometer (BME280)
bit 1: 1 ---- Gabim i sensorit të dioksidit të karbonit (MH-Z16)
bit 2: 1 ---- Sensori i pluhurit (PPD42NS) gabim
bit 3: 1 ---- Gabim i sensorit dixhital të dritës
bit 4: 1 ---- Sensori i oksigjenit (ME2-O2-Ф20) gabim
bit 5: 1 ---- Gabim në sensorin e lagështisë dhe temperaturës së tokës
bit 6: E rezervuar
bit 7: E rezervuar
Ne kemi bërë një Error_code_transform.exe, e hapim atë dhe futim kodin e gabimit në heksadecimal, shpejt do ta dini se cili sensor është gabim. Lidhja e shkarkimit është në fund të këtij artikulli.
Rregullimi i parametrave: a) Cikli i transmetimit të të dhënave
// seeedtea.ino
#defineinterval_time 600 // sekondë
Ky parametër mund të ndryshojë për të ndryshuar ciklin e transmetimit të të dhënave. Në çdo cikël, marrja e të dhënave zgjat rreth 1 minutë. Pra, nuk rekomandohet ndryshimi i kësaj vlere në më pak se 60 sekonda.
b) Koha e ngrohjes së sensorit të pluhurit
//seeedtea.ino
#definePreheat_time 30000 // DustSensor koha e ngrohjes, milisekonda //Dust_other.cpp #definesampletime_ms 30000 // samplingtime30s
c) Koeficienti i tensionit
//POWER_Ctrl.cpp
#defineBattery_coefficient 0.159864 // Vlera ADC × Koeficienti i baterisë = tensioni i baterisë #defineSolar_coefficient 0.22559 // vlera ADC co Koeficienti diellor = tensioni_ diellor
Këta dy parametra llogariten bazuar në qarkun e ndarësit të tensionit.
d) Pragu i temperaturës së hapjes së ventilatorit
//POWER_Ctrl.cpp
#defineFan_start_temp 45 // pragu i temperaturës #defineFan_start_light 500 // intensiteti i dritës
Kur temperatura aktuale tejkalon pragun, ventilatori do të fillojë të ftohet.
e) Parametri i inicimit të sensorit O2
//Oksigjen.cpp
#përcaktoO2_përqindja 208.00 //20.8%
f) Çelës makro
//seeedtea.ino
#defineLORA_RUN // Pas komentit, inicimi i Lora dhe transmetimi i të dhënave do të ndalet #defineSENSOR_RUN // Pas komentit, sensorët e jashtëm do të pushojnë së punuari //POWER_Ctrl.cpp #defineFAN_ON // Vetëm më e rëndësishmja, aplikimi praktik duhet të komentohet /**** *** Mënyra e kontrollit DS18B20 *********************/ #defineSlower_Mode // Mënyra e ngadaltë së bashku me temperaturën. Komenti jashtë është në gjendje të shpejtë
g) Hartimi i kunjave
D2: Treguesi LED dhe mikrokontrolluesi i rivendosur i jashtëmIIC: SCL dhe SDA
//Pluhuri_tjetër.h
#defineDust_pin 3 // Sensori i pluhurit //CO2.cpp #defineCO2_serial Serial1 // përdorni portin hardwareserial (D0 & D1) //seeedtea.ino #definedataPin 6 // Kunja e të dhënave të tokës #defineclockPin 7 // Kodi i orës së tokës // POWER_Ctrl. h #defineDS18B20_pin 8 // DS18B20 #defineFan_pin 9 // Fan #defineAir_CtrlPin 10 // Kunja e kontrollit për sensorët e vendosur në louverbox #defineSoil_CtrlPin 11 // Ndërprerës i lagështisë dhe temperaturës Sensori pin #defineBattery_pin /Matni tensionin e panelit diellor //Oxygen.h #defineO2_pin A1 // O2 sensor
h) Kohëmatësi i rojës
Kohëmatësi vëzhgues përdoret për të monitoruar gjendjen e funksionimit të sistemit. Kur sistemi po funksionon në mënyrë jonormale, nyja do të rivendoset, në mënyrë që të funksionojë vazhdimisht për një kohë të gjatë.
Biblioteka që do të referohet:
- Adafruit_SleepyDog.h i është shtuar projektit
- Adafruit_ASFcore-master.zip është e paketuar në dosjen e projektit dhe duhet të shtohet me dorë në Arduino IDE.
Funksionet e lidhura:
Aktivizo rojtarin
int WatchdogSAMD:: aktivizo (int maxPeriodMS, bool isForSleep)
Parametrat e hyrjes:
Int maxPeriodMS: Koha e pritjes në milisekonda. Maksimumi i lejuar është 16000 milisekonda.
vlera e kthimit:
Lloji Int, ktheni kohën aktuale të pritjes
Rivendos vëzhguesin
void WatchdogSAMD:: reset ()
Thirrni këtë funksion për të rivendosur kohëmatësin mbikëqyrës, i referuar si "ushqyerja e qenit". Tejkalimi i kohës së pritjes pa rivendosur do të bëjë që nyja të riniset.
Ndaloni rojtarin
void WatchdogSAMD:: çaktivizo ()
Porta
Në këtë pjesë do të prezantojmë se si të lidheni me serverin Loriot.
Hapi 1: Regjistrimi i Portës së Serverit Loriot
a) Përdoruesi i ri duhet të regjistrojë një llogari së pari, klikoni adresën e regjistrimit. Plotësoni Emrin e Përdoruesit, Fjalëkalimin dhe adresën e emailit për t'u regjistruar, pas regjistrimit një email do t'ju dërgohet, ju lutemi ndiqni udhëzimet në email për t'u aktivizuar.
b) Pas aktivizimit të suksesshëm, klikoni këtu për t'u regjistruar. Niveli i paracaktuar është "Rrjeti i Komunitetit", ai mbështet 1 Gateway (RHF2S001) dhe 10 nyje.
c) Futni Panelin -> Gateway, klikoni Shto fillimin e Portës për të shtuar Gateway.
d) Zgjidhni Raspberry Pi 3
e) Vendoseni si më poshtë:
- Pjesa e përparme e radios -> RHF2S001 868/915 MHz (SX1257)
- BUS - -SPI
f) Plotësoni adresën MAC të RHF2S001 tuaj, duhet të jetë në formatin b8: 27: eb: xx: xx: xx. Dhe gjithashtu futni informacionin e Vendndodhjes së Portës.
g) Klikoni "Regjistro portën e Raspberry Pi" për të përfunduar regjistrimin.
h) Klikoni portën e regjistruar për të hyrë në faqen e konfigurimit, ndërroni "Planin e Frekuencës" me dorë, plani juaj këtu vendoset sipas llojit të llojit tuaj RHF2S001, plani i disponueshëm është CN470 , CN473 , CN434 , CN780 , EU868, pasi të keni zgjedhur, rifreskoni faqen për të marrë kanalin e saktë. Në këtë wiki ne zgjedhim EU868.
i) Drejtoni komandën në terminalin e stukoit
cd /home/rxhf/loriot/1.0.2
sudo systemctl stop 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.
Hapi 2: Pajisja Loreot Server Connect Node
a) Merrni kanalet e hyrjes në dispozicion
Kanalet aktuale të hyrjes mund të merren nga Paneli -> Porta -> Porta juaj, mund t'i shihni kanalet në dispozicion si fotografia më poshtë.
b) Konfigurimi i Seeeduino LoRAWAN GPS (RHF3M076)
Hapni monitorin serik të ArduinoIDE, prekni komandën më poshtë.
në+ch
Për të konfirmuar kanalin e paracaktuar të GPS -it tuaj Seeeduino_LoRAWAN, do të merrni 3 kanale. Nëse nuk ka kanal të disponueshëm, mund të ndryshoni kanalet e Seeeduino_LoRAWAN me komandën më poshtë.
në+ch = 0, 868.1
në+ch = 1, 868.3 në+ch = 2, 868.5
Pastaj mund të përdorni përsëri+ch për të kontrolluar.
c) Shto Seeeduino_LoRAWAN GPS si një ABP NodeLog në serverin Loriot, Kliko Dashboard -> Aplikimet -> SimpleApp. Klikoni Importo hyrjen ABP below poshtë artikujve
- DevAddr: Seeeduino_LoRAWAN GPS kalon përmes komandës "AT+ID" (Shënim: Loriot nuk mbështet lidhësin e zorrës së trashë, duhet të hiqet me dorë)
- FCntUp : Setto 1
- FCntDn : Setto 1
- NWKSKEY val Vlera e paracaktuar 2B7E151628AED2A6ABF7158809CF4F3C
- APPSKEY val Vlera e paracaktuar 2B7E151628AED2A6ABF7158809CF4F3C
- EUI : DEVEUI, Seeeduino_LoRAWAN GPS kaloni përmes komandës "AT+ID"
Klikoni butonin Import Device për të përfunduar importimin e pajisjes. Tani zgjidhni Paneli -> Aplikimet -> SampleApp, do të shihni Nyjen e re ABP që sapo keni shtuar.
d) Dërgoni të dhëna nga Seeeduino_LoRAWAN
KUJDES! Ky është vetëm një provë.
Kthehuni te monitori serik i ArduinoIDE, dërgoni komandën:
AT+CMSGHEX = "0a 0b 0c 0d 0e"
Pastaj shkoni te Paneli -> Aplikimet -> SampleApp -> Pajisja, klikoni Node Device EUI ose DevAddr, do të gjeni të dhënat që sapo keni dërguar këtu.
Për detaje, ju lutemi referojuni këtij wiki.
Hapi 5: Ndërtimi i faqes në internet
Mjetet e lidhura
- virtualenv
- Python3
- Gunicorn
- Mbikëqyrës
- Nginx
- MySQL
Ne përdorim CentOS7 si një mjedis vendosjeje provash
virtualenv
Përdorni virtualenv për të ndërtuar një mjedis të pavarur të prodhimit të python3
a) instaloni
pip instaloni virtualenv
b) krijoni një mjedis virtual python3
virtualenv -p python3 iotea
c) filloni mjedisin virtual dhe futni drejtorinë iotea
kuti e burimit/aktivizo
d) ekzistojnë mjedise
çaktivizo
Python3
a) instaloni
yum instaloni epel-release
yum instaloni python36
b) instaloni bibliotekën e varur PyMySQL, DBUtils, Flask, websocket-client, configparser
pip instalo pymysql
pip install dbutils pip install pip flask pip install websocket-client pip install configparser
Gunicorn
a) instaloni (nën mjedisin Python3)
pip instaloni gunicorn
b) drejtoni projektin e shisheve (nën drejtorinë e projektit iotea)
gunicorn -w 5 -b 0.0.0.0:5000 aplikacion: aplikacion
c) drejtoni websocket-clint për të marrë të dhëna loriot
gunicorn loriot: aplikacion
d) shikoni pemën e procesit Gunicorn
pstree -ap | grep gunicorn
Mbikëqyrës
a) instaloni (përdoruesi rrënjësor)
mbikëqyrësi i instalimit të pip
b) gjeneroni skedarë konfigurimi
echo_supervisord_conf> /etc/supervisord.conf
c) krijoni një drejtori dhe prezantoni një konfigurim të drejtorisë
mkdir -p /etc/supervisor/conf.d
Ndryshoni /etc/supervisord.conf dhe modifikoni fushën e skedarëve nën [përfshini] në fund të skedarit.
Vini re se ju duhet të hiqni ';' para këtyre dy rreshtave, që është personazhi i komentit.
[përfshi]
Skedarët = /etc/supervisor/conf.d/*.conf
Do të thotë të prezantosh /etc/supervisor/conf.d/. Skedari i mëposhtëm i konfigurimit përdoret si skedar konfigurimi i procesit (i monitoruar nga mbikëqyrësi).
d) konfigurimi në hyrje (nën drejtorinë iotea)
cp iotea.conf /etc/supervisor/conf.d/
cp loriot.conf /etc/supervisor/conf.d/
e) shërbejnë iotea të hapura
superviosrctl ringarkoni #ringarkoni skedarin e konfigurimit
superviosrctl filloni loriot #hapni pritjen e të dhënave loriot superviosrctl filloni iotea #hapni aplikacionin e shisheve iotea
f) operacione të tjera të zakonshme
supervisorctl reload # ringarkoni skedarin e konfigurimit
supervisorctl update supervisorctl start xxx supervisorctl stop xxx status supervisorctl xxx supervisorctl ndihmë # shiko më shumë komandë
Nginx
a) instaloni
yum install -y nginx
b) konfigurimi
cp NginxIotea.conf /etc/nginx/conf.d/
c) filloni Nginx
systemctl start nginx.service
MySQL
a) parametrat e ndërlidhur
përdorues = 'rrënjë'
passwd = '1234' db = 'porta iotea' = 3306
b) dosje
iotea_iotea.sql
c) skedari i konfigurimit
db.ini
Recommended:
Eksperimente të rastësishme DC Motor PWM + Kodifikues Zgjidhja e problemeve: 4 hapa
Eksperimentet e rastësishme DC Motor PWM + Zgjidhja e problemeve me koduesin: Shpesh ka raste kur plehrat e dikujt janë thesar i tjetrit, dhe ky ishte një nga ato momentet për mua. Nëse më keni ndjekur, me siguri e dini që unë mora një projekt të madh për të krijuar printerin tim 3D CNC jashtë skrapit. Ato copa ishin
Zgjidhja e ndotjes së dritës - Artemis: 14 hapa
Zgjidhja e ndotjes së dritës - Artemis: Ndotja e dritës është diçka që prek të gjithë ne në të gjithë botën. Që kur u shpik llamba, drita është bërë shumë më e popullarizuar dhe është përdorur në mënyrë specifike në qytetet e mëdha si New York City dhe Chicago. E gjithë kjo dritë mund të ndikojë
Zgjidhja e tabelave të së vërtetës: 10 hapa
Zgjidhja e Tabelave të së Vërtetës: Një tabelë e së vërtetës është një mënyrë për të përfytyruar të gjitha rezultatet e një problemi. Ky grup udhëzimesh është bërë për njerëzit që fillojnë në matematikë diskrete. Ne do të praktikojmë sot me një problem shembull që është specifik për këto udhëzime. Ti do
Zgjidhja e trafikut: 7 hapa
Zgjidhja e Trafikut: Zgjidhësi i Trafikut automatizon kontrollin e trafikut brenda një korsie të vetme në një zonë ndërtimi. Që ky sistem të funksionojë pa aksidente në mes, duhet të ketë dy njësi, një në secilën anë. Të dy njësitë do të kenë një pajisje mbajtëse me motor dhe rrotullues që
Shihet Zgjidhja IoTea LoRa (me Azure, Përditëso 1812): 5 hapa
Shihet Zgjidhja IoTea LoRa (me Azure, Update 1812): Microsoft Azure është një shërbim cloud i cili siguron fuqi llogaritëse më të fuqishme dhe të qëndrueshme. Këtë herë ne u përpoqëm t'i dërgonim të dhënat tona IoTea