Sisukord:
2025 Autor: John Day | [email protected]. Viimati modifitseeritud: 2025-01-13 06:57
Automaatne teabe kogumise süsteem, mida rakendatakse teeistandusele. See on osa intelligentsest põllumajandusteabe kogumisest.
Samm: selles projektis kasutatud asjad
Riistvara komponendid
- Grove - süsinikdioksiidi andur (MH -Z16)
- Grove - digitaalne valgusandur
- Grove - tolmuandur (PPD42NS)
- Grove-hapnikuandur (ME2-O2-Ф20)
- Mulla niiskuse ja temperatuuri andur
- LoRa LoRaWAN Gateway - 868 MHz komplekt koos Raspberry Pi 3 -ga
- Grove - Temp & Humi & Barometer Sensor (BME280)
Tarkvararakendused ja võrguteenused
Microsoft Visual Studio 2015
2. samm: lugu
Nutikas põllumajandus on rakendada asjade Interneti tehnoloogiat traditsioonilises põllumajanduses, kasutades andureid ja tarkvara, et juhtida põllumajandustootmist mobiil- või arvutiplatvormide kaudu, muutes traditsioonilise põllumajanduse "targemaks".
Sichuanis Ya’anist kirdes Mengdingi mäel kulgeb mäeharja rohelises meres läänest itta. See on kõige tuttavam vaatepilt 36-aastasele Dengile, kes on üks vähestest oma põlvkonna Mengdingi tee valmistajatest ja mille istandus 50 m (= 3,3 hektarit) asub 1100 m kõrgusel merepinnast. Deng pärineb teekeetjate perekonnast, kuid perekonna pärandi jätkamine pole lihtne ülesanne. „Meie teed kasvatatakse orgaanilises keskkonnas suurel kõrgusel, et tagada selle suurepärane kvaliteet. Kuid samal ajal on kasvutihedus madal, kulud kõrged ja tärkamine ebaühtlane, mistõttu teed on raske koristada. Seetõttu on mägiteed tavaliselt väikesed saagid ja nende väärtused ei kajastu turul.” Viimase kahe aasta jooksul on Deng püüdnud tõsta tarbijate teadlikkust mägiteest, et edendada nende väärtust. Ja kui ta kohtus Faniga, kes otsis istandust Seeedi IoTea tehnoloogia rakendamiseks, leiti lahendus ideaalselt. Seeed IoTea lahenduse eesmärk on aidata teekasvatajatel paremini hallata istandusi ilma traditsioonilisi tee kasvatamise tavasid muutmata ning esitada istandustest reaalajas keskkonnaandmeid avatud platvormil.
Anduritest, sõlmedest ja lüüsidest koosnev IoTea kogub reaalajas andmeid tegurite kohta, mis võivad mõjutada tee kvaliteeti kasvatamise ja tootmisprotsesside ajal, sealhulgas temperatuuri ja niiskuse, CO2, O2, PM ja valguse käes. Andurid koguvad andurid, saadavad sõlmed lüüsile ja lõpuks pilve ning muudetakse lõppklientidele veebisaidil kättesaadavaks.
Samm: riistvaraühendus
Samm: lüüsiühendus
Lüüs paigaldatakse eraldi kasti. Arvestades soojuse hajumise probleemi, lisasime 2 ventilaatorit. Üks on mõeldud Raspberry Pi soojuse hajumiseks, teine sise- ja välisõhu ringluseks. Väravakast on paigutatud põllumehe koju, nii et me ei pea selle elektriprobleemiga arvestama.
Samm: sõlmeühendus
Sõlm on andmete terminal ja kõik algandmed saadakse siit. Sõlmega on ühendatud 6 andurit. Lisaks mulla niiskus- ja temperatuuriandurile paneme lamellkasti sisse ka teised andurid.
Sõlm on paigutatud veekindlasse karpi. Sõlmega parema ühenduse loomiseks teeme adapterplaadi. Lõpuks pakume selle tahvli skeemi allalaadimislingi. Nagu allpool näidatud, on andurite kaablid ühendatud adapterplaadiga klemmliistude kaudu. Andurite ja ventilaatori sisse- ja väljalülitamiseks kasutame lülitusahelate ehitamiseks 3 MOS -toru (SI2301). Jahutamiseks kasutatakse ventilaatorit. Tahvlile on paigaldatud temperatuuriandur (DS18B20). See võib meile öelda kasti sisetemperatuuri ja seejärel otsustab mikrokontroller, kas ventilaator sisse lülitada. Pliiaku pinge mõõtmiseks kasutame pingejaotusahela valmistamiseks mitut takistit. Lõpuks reserveerime tahvlile 3 IIC liidest ja jadaporti hilisemaks laiendamiseks ja silumiseks.
Räägime sõlme toiteallika probleemist. Sõlm asetatakse teeistandusse juhuslikult, nii et traditsiooniline toiteallikas pole enam rakendatav. Päikeseenergia lahenduse kasutamine on hea mõte. Praegu pakutakse turul palju lahendusi. Saame valida ühe neist, mis vastab meie vajadustele. Meie valitud lahenduses on 3 osa: päikesepaneel, päikeseenergia laadimiskontroller ja pliiakud. Päikeseenergia paremaks jäädvustamiseks paneme päikesepaneeli kronsteini ülaosale ja reguleerime selle nurka nii, et see oleks päikese poole suunatud. Asetasime päikeseenergia laengu regulaatori sõlmega samasse kasti. Kuna karbis ei ole lisaruumi, pidime leidma uue veekindla karbi pliiaku paigutamiseks.
Samm: tarkvara konfigureerimine
Sõlm
Selles osas tutvustame sõlme peamiselt tarkvara konfiguratsiooni.
DataFormat
Sõlme poolt lüüsile üles laaditud andmed:
allkirjastamata sümbol Lora_data [15] = {0, 1, 2, 3,, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14};
Iga andmebiti tähendus:
Lora_data [0] : Õhutemperatuur, ℃
Lora_data [1] : Õhuniiskus, %
Lora_data [2] : Kõrgus kõrgel kaheksa, m
Lora_data [3] low Madal kõrgus kaheksa
Lora_data [4] : CO2 kontsentratsioon kõrge kaheksa, ppm
Lora_data [5] : CO2 kontsentratsioon madal kaheksa
Lora_data [6] : Tolmukontsentratsioon kõrge kaheksa, tk/0,01 cf
Lora_data [7] : Tolmu kontsentratsioon madal kaheksa
Lora_data [8] : Valgustugevus kõrge kaheksa, luksi
Lora_data [9] : Valguse intensiivsus madal kaheksa
Lora_data [10] : O2 kontsentratsioon, % (lähteandmed jagatud 1000 -ga)
Lora_data [11] : Mullatemperatuur, ℃
Lora_data [12] il Mulla niiskus, %
Lora_data [13] : Aku pinge, v
Lora_data [14] : Andurite veakood
Veakood:
Lora_andmed [14] = [bit7, bit6, bit5, bit4, bit3, bit2, bit1, bit0]
Iga bitti tähendus:
bit 0: 1 ---- Temp & Humi & Barometer Sensor (BME280) viga
bit 1: 1 ---- süsinikdioksiidi anduri (MH-Z16) viga
bit 2: 1 ---- Tolmuandur (PPD42NS) viga
bit 3: 1 ---- Digitaalse valgusanduri viga
bit 4: 1 ---- Hapnikuanduri (ME2-O2-Ф20) viga
bitt 5: 1 ---- Mulla niiskuse ja temperatuurianduri viga
bit 6: reserveeritud
bit 7: reserveeritud
Oleme teinud Error_code_transform.exe, avage see ja sisestage veakood kuueteistkümnendsüsteemis, saate kiiresti teada, milline andur on viga. Allalaadimise link on selle artikli lõpus.
Parameetrite reguleerimine: a) Andmeedastustsükkel
// seeedtea.ino
#defineinterval_time 600 // sekund
Seda parameetrit saab andmeedastustsükli muutmiseks muuta. Igas tsüklis võtab andmete kogumine aega umbes 1 minuti. Seega ei ole soovitatav seda väärtust muuta vähem kui 60 sekundiks.
b) Tolmuanduri soojenemisaeg
//seeedtea.ino
#definePreheat_time 30000 // DustSensor soojenemisaeg, millisekund //Dust_other.cpp #definesampletime_ms 30000 // samplingtime30s
c) Pinge koefitsient
//POWER_Ctrl.cpp
#defineBattery_coefficient 0,159864 // ADC väärtus × aku_koefitsient = aku_pinge #defineSolar_coefficient 0,22559 // ADC väärtus × päikese_koefitsient = päikese_pinge
Need kaks parameetrit arvutatakse pingejaotusahela põhjal.
d) Ventilaatori avamistemperatuuri künnis
//POWER_Ctrl.cpp
#defineFan_start_temp 45 // temperatuurilävi #defineFan_start_light 500 // valguse intensiivsus
Kui tegelik temperatuur ületab künnise, hakkab ventilaator jahtuma.
e) O2 anduri initsialiseerimise parameeter
// Hapnik.cpp
#defineO2_percentage 208,00 //20,8%
f) Makrolüliti
//seeedtea.ino
#defineLORA_RUN // Pärast kommentaari lõpetab Lora initsialiseerimine ja andmeedastus #defineSENSOR_RUN // Pärast kommentaari lõpetavad välisandurid töö //POWER_Ctrl.cpp #defineFAN_ON // Ainult kinnitamine, praktilist rakendust tuleb kommenteerida /**** *** DS18B20 juhtimisrežiim **********************/ #defineSlower_Mode // Aeglane režiim temperatuuri muutmiseks. Kommenteerimine on kiire režiim
g) tihvtide kaardistamine
D2: LED -indikaator ja väline lähtestamise mikrokontroller IIC: SCL ja SDA
//Tolm_muu.h
#defineDust_pin 3 // Tolmuandur //CO2.cpp #defineCO2_serial Serial1 // kasutage hardwareserial porti (D0 & D1) //seeedtea.ino #definedataPin 6 // Pinnaseandmete tihvt #defineclockPin 7 // Pinnase kella tihvt // POWER_Ctrl. h #defineDS18B20_pin 8 // DS18B20 #defineFan_pin 9 // Ventilaator #defineAir_CtrlPin 10 // Juhtnöör lukustuskasti paigutatud andurite jaoks #defineSoil_CtrlPin 11 // Mulla niiskuse ja temperatuuri anduri lüliti tihvt #defineBattery_pin A2 // Aku pinge mõõtmine /Mõõda päikesepaneeli pinget // Hapnik.h #defineO2_pin A1 // O2 andur
h) Vahtkoera taimer
Valvekoera taimerit kasutatakse süsteemi töötamise oleku jälgimiseks. Kui süsteem töötab ebanormaalselt, lähtestatakse sõlm, nii et see saab pikka aega pidevalt töötada.
Raamatukogu, millele viidata:
- Projekti on lisatud Adafruit_SleepyDog.h
- Adafruit_ASFcore-master.zip on pakitud kausta projekt ja see tuleb käsitsi Arduino IDE-sse lisada.
Seotud funktsioonid:
Luba valvekoer
int WatchdogSAMD:: lubamine (int maxPeriodMS, bool isForSleep)
Sisendparameetrid:
Int maxPeriodMS: ooteaeg millisekundites. Maksimaalne lubatud aeg on 16000 millisekundit.
tagastamisväärtus:
Int tüüp, tagastage tegelik ooteaeg
Vahtkoera lähtestamine
tühine WatchdogSAMD:: lähtestamine ()
Helistage sellele funktsioonile, et lähtestada valvekoera taimer, mida nimetatakse "koera toitmiseks". Ooteaja ületamine ilma lähtestamiseta põhjustab sõlme taaskäivitamist.
Peatage valvekoer
tühine WatchdogSAMD:: keelata ()
Värav
Selles jaotises tutvustame, kuidas Lorioti serveriga ühenduse luua.
Samm: Loriot Server Gateway registreerimine
a) Uus kasutaja peab esmalt konto registreerima, klõpsake registreerimisaadressil. Registreerimiseks sisestage kasutajanimi, parool ja e -posti aadress, pärast registreerimist saadetakse teile e -kiri, aktiveerimiseks järgige e -kirjas toodud juhiseid.
b) Pärast edukat aktiveerimist klõpsake siin sisselogimiseks. Vaikimisi on „Community Network”, see toetab 1 lüüsi (RHF2S001) ja 10 sõlme.
c) Sisestage armatuurlaud -> Gateway, klõpsake Gateway lisamiseks nuppu Add Gateway.
d) Valige Raspberry Pi 3
e) Määrake järgmiselt:
- Raadio esiosa -> RHF2S001 868/915 MHz (SX1257)
- BUSS -> SPI
f) Sisestage oma RHF2S001 MAC -aadress, mis peaks olema vormingus b8: 27: eb: xx: xx: xx. Samuti sisestage Gateway asukoha teave.
g) Registreerimise lõpetamiseks klõpsake „Register Raspberry Pi gateway”.
h) Konfiguratsioonilehele sisenemiseks klõpsake registreeritud lüüsi, lülitage „Sagedusplaan” käsitsi, teie plaani otsustab siin teie RHF2S001 tüübi tüüp, saadaolev plaan on CN470 , CN473 , CN434 , CN780 , EU868, pärast valimist värskendage lehte täpse kanali saamiseks. Selles wikis valime EU868.
i) Käivitage kitteterminalis käsk :
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.
Samm: Loriot Server Connect Node'i seade
a) Hankige saadaolevad lüüsi kanalid
Praegused lüüsi kanalid saab hankida armatuurlaualt -> Gateway -> Your Gateway, näete saadaolevaid kanaleid alloleval pildil.
b) Seeeduino LoRAWAN GPS (RHF3M076) konfiguratsioon
Avage ArduinoIDE seeriamonitor, puudutage allolevat käsku.
kell+ch
Seeeduino_LoRAWAN GPS -i vaikekanali kinnitamiseks saate 3 kanalit. Kui saadaolevat kanalit pole, saate saidi Seeeduino_LoRAWAN kanaleid muuta alloleva käsuga.
juures+ch = 0, 868,1
temperatuuril+ch = 1, 868,3 temperatuuril+ch = 2, 868,5
Seejärel saate kontrollimiseks uuesti kasutada nuppu+ch.
c) Lisage Seeeduino_LoRAWAN GPS ABP NodeLogina Lorioti serverisse, klõpsake Dash Board -> Applications -> SimpleApp. Klõpsake üksuste all Import ABP , sisendit
- DevAddr: Seeeduino_LoRAWAN GPS läbib käsu "AT+ID" (Märkus: Loriot ei toeta käärsooleühendust, see tuleb käsitsi eemaldada)
- FCntUp : Seadke 1
- FCntDn : Seadke 1
- NWKSKEY : Vaikeväärtus 2B7E151628AED2A6ABF7158809CF4F3C
- APPSKEY fault Vaikeväärtus 2B7E151628AED2A6ABF7158809CF4F3C
- EUI, DEVEUI, Seeeduino_LoRAWAN GPS läbib käsu "AT+ID"
Seadme importimise lõpetamiseks klõpsake nuppu Impordi seade. Nüüd valige Armatuurlaud -> Rakendused -> SampleApp, näete äsja lisatud uut ABP -sõlme.
d) Saatke andmeid saidilt Seeeduino_LoRAWAN
TÄHELEPANU! See on lihtsalt test.
Tagasi ArduinoIDE seeriamonitori juurde, saatke käsk:
AT+CMSGHEX = "0a 0b 0c 0d 0e"
Seejärel mine Dashboard -> Applications -> SampleApp -> Device, klõpsa Node Device EUI või DevAddr, leiad äsja saadetud andmed siit.
Üksikasjalikumat teavet leiate sellest wikist.
Samm: veebisaidi ehitamine
Seotud tööriistad
- virtualenv
- Python3
- Gunicorn
- Juhendaja
- Nginx
- MySQL
Kasutame test -juurutuskeskkonnana CentOS7
virtualenv
Kasutage virtualenvi iseseisva python3 tootmiskeskkonna loomiseks
a) paigaldada
pip install virtualenv
b) luua virtuaalne keskkond python3
virtualenv -p python3 iotea
c) käivitage virtuaalne keskkond ja sisestage iotea kataloog
allikakast/aktiveeri
d) keskkond olemas
deaktiveerida
Python3
a) paigaldada
yum install epel-release
yum install python36
b) installige sõltuv raamatukogu PyMySQL, DBUtils, Flask, websocket-client, configparser
pip install pymysql
pip install dbutils pip install kolb pip install websocket-client pip install configparser
Gunicorn
a) installige (Python3 keskkonnas)
pip paigaldada gunicorn
b) käivitage kolbiprojekt (iotea projekti kataloogi all)
gunicorn -w 5 -b 0.0.0.0:5000 app: app
c) käivitage loriot-andmete saamiseks veebipistik-clint
gunicorn loriot: rakendus
d) vaadata Gunicorni protsessipuu
pstree -ap | grep gunicorn
Juhendaja
a) install (juurkasutaja)
pip installijuhendaja
b) konfiguratsioonifailide loomine
echo_supervisord_conf> /etc/supervisord.conf
c) luua kataloog ja tutvustada kataloogi konfiguratsiooni
mkdir -p /etc/supervisor/conf.d
Muutke /etc/supervisord.conf ja muutke faili lõpus välja [include] all olevat failivälja.
Pange tähele, et peate eemaldama ';' nende kahe rea ees, mis on kommentaari tegelane.
[kaasa]
Failid = /etc/supervisor/conf.d/*.conf
Vahendid /etc/supervisor/conf.d/ tutvustamiseks. Protsessi konfiguratsioonifailina kasutatakse järgmist konfiguratsioonifaili (jälgib juhendaja).
d) sissetulev konfiguratsioon (iotea kataloogi all)
cp iotea.conf /etc/supervisor/conf.d/
cp loriot.conf /etc/supervisor/conf.d/
e) avatud iotea serveerimine
superviosrctl reload #reload konfiguratsioonifail
superviosrctl start loriot #open loriot andmete vastuvõtt superviosrctl start iotea #avage iotea kolbi rakendus
f) muud ühised toimingud
supervisorctl reload # laadige konfiguratsioonifail uuesti
supervisorctl update supervorctl start xxx supervorctl stop xxx supervorctl staatus xxx supervorctl abi # vaata rohkem käsku
Nginx
a) paigaldada
yum install -y nginx
b) konfiguratsioon
cp NginxIotea.conf /etc/nginx/conf.d/
c) käivitage Nginx
systemctl start nginx.service
MySQL
a) seotud parameetrid
kasutaja = 'juur'
passwd = '1234' db = 'iotea' port = 3306
b) fail
iotea_iotea.sql
c) konfiguratsioonifail
db.ini