INHOUDSOPGAWE:
2025 Outeur: John Day | [email protected]. Laas verander: 2025-01-13 06:56
'N Outomatiese stelsel vir die insameling van inligting wat op teeplantasie toegepas word. Dit is deel van intelligente landbou -inligtingversameling.
Stap 1: Dinge wat in hierdie projek gebruik word
Hardeware komponente
- Grove - Koolstofdioksied sensor (MH -Z16)
- Grove - Digitale ligsensor
- Grove - Stofsensor (PPD42NS)
- Grove-Suurstofsensor (ME2-O2-Ф20)
- Grondvog- en temperatuursensor
- LoRa LoRaWAN Gateway - 868MHz -stel met Framboos Pi 3
- Grove - Temp & Humi & Barometersensor (BME280)
Sagteware -programme en aanlyndienste
Microsoft Visual Studio 2015
Stap 2: Verhaal
Slim landbou is om die Internet of Things -tegnologie toe te pas op tradisionele landbou, met behulp van sensors en sagteware om die produksie van landbou via mobiele of rekenaarplatforms te beheer, wat die tradisionele landbou meer "slim" maak.
Op die Mengdingberg noordoos van Ya'an, Sichuan, loop die bergrug wes na oos in 'n see van groen. Dit is 'n bekendste gesig vir die 36-jarige Deng, een van die min Mengding-teemakers van sy generasie, met 'n plantasie van 50 mu (= 3,3 hektaar) op 1100 m bo seespieël. Deng kom uit 'n familie teemakers, maar dit is nie 'n maklike taak om die erfenis van die familie voort te sit nie. 'Ons tee word grootliks in 'n organiese omgewing verbou om die uitstekende kwaliteit daarvan te verseker. Maar terselfdertyd is die groeidigtheid laag, die koste hoog en die bot oneweredig, wat die tee moeilik maak om te oes. Daarom is hoëbergtee gewoonlik klein oeste en word hul waardes nie op die mark weerspieël nie.” Deng het die afgelope twee jaar probeer om verbruikers se bewustheid van hoë-bergtee te verhoog om hul waarde te bevorder. En toe hy Fan ontmoet, wat op soek was na 'n plantasie om Seeed se IoTea -tegnologie te implementeer, was die perfekte oplossing vir 'n oplossing. Die Seeed IoTea-oplossing is daarop gemik om teeboere te help om plantasies beter te bestuur sonder om die tradisionele teebewerkingspraktyke te verander, en om intydse omgewingsdata van die plantasies op 'n oop platform voor te stel.
IoTea, wat bestaan uit sensors, nodusse en gateways, versamel real-time data van faktore wat die kwaliteit van tee tydens verbouing en produksieprosesse kan beïnvloed, insluitend temperatuur en humiditeit, CO2, O2, PM en blootstelling aan lig. Die data word deur die sensors versamel, deur die nodusse na die gateway gestuur en uiteindelik na die wolk, en word op 'n webblad vir eindklante toeganklik gemaak.
Stap 3: Hardewareverbinding
Stap 1: Gateway -verbinding
Die poort word afsonderlik in 'n boks geïnstalleer. Gegewe die probleem met hitte -afvoer, het ons 2 waaiers bygevoeg. Die een is vir die warmteafvoer van Raspberry Pi, die ander vir interne en eksterne lugsirkulasie. Die poortkas word in 'n boer se huis geplaas, sodat ons nie die kragprobleem daarvan moet oorweeg nie.
Stap2: Nodeverbinding
Die knoop is die eindpunt van die data, en al die oorspronklike data word hiervandaan verkry. Daar is 6 sensors wat aan die knoop gekoppel is. Benewens die grondvog- en temperatuursensor, plaas ons ander sensors in die lamellenkas.
Die knoop word in 'n waterdigte boks geplaas. Om 'n beter verbinding met die knoop te kry, maak ons 'n adapterbord. Laastens bied ons die aflaai -skakel van die skema van hierdie bord. Soos hieronder getoon, word die kabels van sensors deur middel van aansluitblokke in die adapterbord gekoppel. Ons gebruik 3 MOS -buise (SI2301) om skakelkringe te bou om die aan en af van sensors en waaier te beheer. Die waaier word gebruik om af te koel. Ons het 'n temperatuursensor (DS18B20) op die bord. Dit kan ons die interne temperatuur van die boks vertel, en dan besluit die mikrobeheerder of die waaier aangeskakel moet word. Ons gebruik verskeie weerstande om 'n spanningsverdelerkring te maak om loodsuurbattery se spanning te meet. Uiteindelik behou ons 3 IIC -koppelvlakke en seriële poort op die bord vir latere uitbreiding en ontfouting.
Kom ons praat oor die knooppunt se kragvoorsieningsprobleem. Die knoop word lukraak in die teeplantasie geplaas, so die tradisionele kragvoorsieningsmetode is nie meer van toepassing nie. Dit is 'n goeie idee om 'n sonkragoplossing te gebruik. Daar is tans baie oplossings op die mark. Ons kan een van hulle kies wat aan ons behoeftes voldoen. Daar is 3 dele in die oplossing wat ons gekies het: sonpaneel, sonlaaibestuurder en loodsuurbattery. Om die sonenergie beter op te vang, plaas ons die sonpaneel bo -op die hakie en pas die hoek aan om te verseker dat dit na die son kyk. Ons plaas sonlaaibestuurder in dieselfde boks met 'n node. Omdat daar geen ekstra ruimte in die boks is nie, moes ons 'n nuwe waterdigte boks kry om die loodsuurbattery te plaas.
Stap 4: Sagteware -opset
Knoop
In hierdie afdeling stel ons die hoofsaaklik sagtewarekonfigurasie van die nodus bekend.
Dataformaat
Data opgelaai deur die knoop na die gateway:
ongetekende char Lora_data [15] = {0, 1, 2, 3,, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14};
Betekenis van elke databit:
Lora_data [0] : Lugtemperatuur, ℃
Lora_data [1]: Lugvog, %
Lora_data [2] : Hoogte hoog agt, m
Lora_data [3]: Hoogte laag agt
Lora_data [4]: CO2 -konsentrasie hoog agt, ppm
Lora_data [5]: CO2 -konsentrasie laag agt
Lora_data [6] : Stofkonsentrasie hoog agt, stuks/0.01cf
Lora_data [7] : Stofkonsentrasie laag agt
Lora_data [8] : Ligintensiteit hoog agt, lux
Lora_data [9]: Ligintensiteit laag agt
Lora_data [10]: O2 -konsentrasie, % (rou data gedeel deur 1000)
Lora_data [11] : Grondtemperatuur, ℃
Lora_data [12]: Grondvog, %
Lora_data [13] : Batteryspanning, v
Lora_data [14] : Sensors -foutkode
Foutkode:
Lora_data [14] = [bit7, bit6, bit5, bit4, bit3, bit2, bit1, bit0]
Betekenis van elke bietjie:
bit 0: 1 ---- Temp & Humi & Barometer Sensor (BME280) fout
bietjie 1: 1 ---- Koolstofdioksied sensor (MH-Z16) fout
bietjie 2: 1 ---- Stofsensor, PPD42NS, fout
bit 3: 1 ---- Digitale ligsensorfout
bietjie 4: 1 ---- Suurstofsensor (ME2-O2-Ф20) fout
bietjie 5: 1 ---- Fout in grondvog en temperatuursensor
stukkie 6: Voorbehou
bietjie 7: Voorbehou
Ons het 'n Error_code_transform.exe gemaak, dit oopgemaak en die foutkode in heksadesimaal ingevoer; u sal vinnig weet watter sensor die fout is. Die aflaai -skakel is aan die einde van hierdie artikel.
Parameteraanpassing: a) Datatransmissiesiklus
// seeedtea.ino
#defineinterval_time 600 // second
Hierdie parameter kan gevarieer word om die datatransmissiesiklus te verander. In elke siklus duur die verkryging van data ongeveer 1 minuut. Dit word dus nie aanbeveel om hierdie waarde na minder as 60 sekondes te verander nie.
b) Opwarmingstyd van stofsensor
//seeedtea.ino
#definePreheat_time 30000 // DustSensor-opwarmingstyd, millisekonde //Dust_other.cpp #definesampletime_ms 30000 // samplingtime30s
c) Spanningskoëffisiënt
//POWER_Ctrl.cpp
#defineBattery_coefficient 0.159864 // ADC value × Battery_coefficient = battery_voltage #defineSolar_coefficient 0.22559 // ADC value × Solar_coefficient = solar_voltage
Hierdie twee parameters word bereken op grond van die spanningsverdelerkring.
d) Waaier se openingstemperatuurdrempel
//POWER_Ctrl.cpp
#defineFan_start_temp 45 // temperatuurgrens #defineFan_start_light 500 // ligintensiteit
As die werklike temperatuur die drempel oorskry, sal die waaier begin afkoel.
e) O2 sensor inisialiseer parameter
//Oxygen.cpp
#definieerO2_persentasie 208.00 //20.8%
f) Makro -skakelaar
//seeedtea.ino
#defineLORA_RUN // Na die opmerking sal Lora -inisialisering en data -oordrag stop *** DS18B20 -beheermodus **********************/ #defineSlower_Mode // Stadige modus om die temperatuur te bereik. Kommentaar uit is 'n vinnige modus
g) Penkartering
D2: LED -aanwyser en eksterne reset -mikrokontroleerder IIC: SCL en SDA
// Stof_ anders.h
#defineDust_pin 3 // Stofsensor //CO2.cpp #defineCO2_serial Serial1 // gebruik hardeware -seriële poort (D0 & D1) //seeedtea.ino #definedataPin 6 // Gronddata -pen #defineclockPin 7 // Grondklokpen // POWER_Ctrl. h #defineDS18B20_pin 8 // DS18B20 #defineFan_pin 9 // Waaier #defineAir_CtrlPin 10 // Bedieningspen vir die sensors wat in die louverbox geplaas word #defineSoil_CtrlPin 11 // Grondvog- en temperatuursensor -skakelaarpen #defineBattery_pin A2 // Meet batteryspanning #define /Meet die spanning van die sonpaneel //Oxygen.h #defineO2_pin A1 // O2 sensor
h) Watchdog timer
Die waghond -timer word gebruik om die status van die stelsel te monitor. As die stelsel abnormaal werk, word die nodus teruggestel, sodat dit vir 'n lang tyd aanhoudend kan werk.
Die biblioteek waarna verwys moet word:
- Adafruit_SleepyDog.h is by die projek gevoeg
- Adafruit_ASFcore-master.zip is verpak in die projekmap en moet handmatig by die Arduino IDE gevoeg word.
Verwante funksies:
Aktiveer waghond
int WatchdogSAMD:: enable (int maxPeriodMS, bool isForSleep)
Invoer parameters:
Int maxPeriodMS: Wagtyd in millisekondes. Die maksimum toegelate is 16000 millisekondes.
opbrengswaarde:
Int, gee die werklike wagtyd terug
Stel waghond terug
void WatchdogSAMD:: reset ()
Bel hierdie funksie om die waghondtimer, wat na verwys word as "die hond voed, terug te stel." Deur die wagtyd te oorskry sonder om te herstel, sal die knoop weer begin.
Stop waghond
void WatchdogSAMD:: deaktiveer ()
Gateway
In hierdie afdeling stel ons bekend hoe u met die Loriot -bediener kan koppel.
Stap 1: Registrasie van Loriot Server Gateway
a) 'n Nuwe gebruiker moet eers 'n rekening registreer; klik op die registrasie -adres. Vul gebruikersnaam, wagwoord en e -posadres in om te registreer; na registrasie word 'n e -pos na u gestuur, volg die instruksies in die e -pos om dit te aktiveer.
b) Na suksesvolle aktivering, klik hier om aan te meld. Standaardvlak is 'Community Network', dit ondersteun 1 Gateway (RHF2S001) en 10 nodes.
c) Gaan na Dashboard -> Gateway, klik op Voeg gateway toe om gateway by te voeg.
d) Kies Raspberry Pi 3
e) Stel soos volg:
- Radio voorkant -> RHF2S001 868/915 MHz (SX1257)
- BUS -> SPI
f) Vul die MAC -adres van u RHF2S001 in, in die formaat b8: 27: eb: xx: xx: xx. Voer ook gateway -ligginginligting in.
g) Klik op “Register Raspberry Pi gateway” om die registrasie te voltooi.
h) Klik op die geregistreerde gateway om die konfigurasiebladsy in te gaan, skakel handmatig oor "Frequency Plan"; u plan hier word bepaal deur die tipe van u RHF2S001 -tipe, die beskikbare plan is CN470, CN473, CN434, CN780, EU868. om die presiese kanaal te kry. In hierdie wiki kies ons EU868.
i) voer die opdrag uit in die stopverf:
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.
Stap2: Loriot Server Connect Node -toestel
a) Kry die beskikbare gateway -kanale
Die huidige gateway -kanale kan van Dashboard -> Gateway -> Your Gateway verkry word; u kan die beskikbare kanale sien soos op die onderstaande foto.
b) Opstelling van Seeeduino LoRAWAN GPS (RHF3M076)
Maak die seriële monitor van ArduinoIDE oop, tik op die opdrag hieronder.
teen+hfst
Om die standaardkanaal van u Seeeduino_LoRAWAN GPS te bevestig, kry u 3 kanale. As daar geen beskikbare kanaal is nie, kan u die kanale van Seeeduino_LoRAWAN verander deur die onderstaande opdrag.
teen+ch = 0, 868,1
by+ch = 1, 868,3 by+ch = 2, 868,5
Dan kan u weer by+ch gebruik om te kontroleer.
c) Voeg Seeeduino_LoRAWAN GPS by as 'n ABP NodeLog in Loriot -bediener, klik op Dash Board -> Toepassings -> SimpleApp. Klik op Import ABP , invoer onder items
- DevAddr: Seeeduino_LoRAWAN GPS kom deur die "AT+ID" opdrag (let op: Loriot ondersteun nie dubbelpuntverbinding nie, moet handmatig verwyder word)
- FCntUp: Setto 1
- FCntDn: Setto 1
- NWKSKEY : Standaardwaarde 2B7E151628AED2A6ABF7158809CF4F3C
- APPSKEY: Standaardwaarde 2B7E151628AED2A6ABF7158809CF4F3C
- EUI: DEVEUI, Seeeduino_LoRAWAN GPS kom deur die "AT+ID" opdrag
Klik op Invoertoestel -knoppie om die invoer van die toestel te voltooi. Kies nou Dashboard-> Toepassings -> SampleApp, u sien die nuwe ABP -knoop wat u pas bygevoeg het.
d) Stuur data van Seeeduino_LoRAWAN
AANDAG! Dit is net 'n toets.
Terug na die seriële monitor van ArduinoIDE, stuur opdrag:
AT+CMSGHEX = "0a 0b 0c 0d 0e"
Gaan dan na Dashboard -> Toepassings -> SampleApp -> Toestel, klik op die Node Device EUI of DevAddr, u kry die data wat u so pas hierheen gestuur het.
Raadpleeg hierdie wiki vir meer inligting.
Stap 5: Bou van die webwerf
Verwante gereedskap
- virtualenv
- Python3
- Gunicorn
- Toesighouer
- Nginx
- MySQL
Ons gebruik CentOS7 as toetsontplooiingsomgewing
virtualenv
Gebruik virtualenv om 'n selfstandige python3 -produksie -omgewing te bou
a) installeer
pip installeer virtualenv
b) skep 'n virtuele python3 -omgewing
virtualenv -p python3 iotea
c) begin die virtuele omgewing en voer die iotea -gids in
bronbak/aktiveer
d) bestaan omgewing
deaktiveer
Python3
a) installeer
yum installeer epel-release
yum installeer python36
b) installeer afhanklike biblioteek PyMySQL, DBUtils, Flask, websocket-kliënt, configparser
pip installeer pymysql
pip install dbutils pip install flask pip install websocket-client pip install configparser
Gunicorn
a) installeer (onder Python3 -omgewing)
pip installeer geweerhoorn
b) voer kolfprojek uit (onder iotea -projekgids)
geweerhoorn -w 5 -b 0.0.0.0:5000 app: app
c) voer websocket-clint uit om loriot-data te kry
gunicorn loriot: app
d) kyk na die Gunicorn -prosesboom
pstree -ap | grep gunicorn
Toesighouer
a) installeer (wortelgebruiker)
pip installeer toesighouer
b) maak konfigurasielêers op
echo_supervisord_conf> /etc/supervisord.conf
c) skep 'n gids en stel 'n gidskonfigurasie in
mkdir -p /etc/supervisor/conf.d
Wysig /etc/supervisord.conf en verander die lêerveld onder [insluit] aan die einde van die lêer.
Let daarop dat u die ';' moet verwyder voor hierdie twee reëls, wat die kommentaarkarakter is.
[insluit]
Lêers = /etc/supervisor/conf.d/*.conf
Beteken om /etc/supervisor/conf.d/ bekend te stel. Die volgende konfigurasie lêer word gebruik as die proses konfigurasie lêer (gemonitor deur die toesighouer).
d) inkomende opset (onder iotea -gids)
cp iotea.conf /etc/supervisor/conf.d/
cp loriot.conf /etc/supervisor/conf.d/
e) oop iotea bedien
superviosrctl herlaai #herlaai die konfigurasie lêer
superviosrctl begin loriot #open loriot data ontvangs superviosrctl begin iotea #maak die iotea fles aansoek oop
f) ander algemene bedrywighede
supervisorctl herlaai # herlaai die konfigurasie lêer
supervisorctl update supervisorctl begin xxx supervisorctl stop xxx supervisorctl status xxx supervisorctl help # sien meer opdrag
Nginx
a) installeer
yum installeer -y nginx
b) opset
cp NginxIotea.conf /etc/nginx/conf.d/
c) begin Nginx
systemctl begin nginx.service
MySQL
a) verwante parameters
gebruiker = 'root'
passwd = '1234' db = 'iotea' poort = 3306
b) lêer
iotea_iotea.sql
c) konfigurasie lêer
db.ini