Sadržaj:
2025 Autor: John Day | [email protected]. Zadnja promjena: 2025-01-13 06:57
Sustav automatskog prikupljanja podataka primijenjen na plantaži čaja. To je dio inteligentnog prikupljanja poljoprivrednih informacija.
Korak 1: Stvari korištene u ovom projektu
Hardverske komponente
- Grove - Senzor ugljičnog dioksida (MH -Z16)
- Grove - digitalni svjetlosni senzor
- Grove - Senzor prašine (PPD42NS)
- Grove-Senzor kisika (ME2-O2-F20)
- Senzor vlage i temperature tla
- LoRa LoRaWAN pristupnik - 868MHz komplet s Raspberry Pi 3
- Grove - Senzor za temp i Humi i barometar (BME280)
Softverske aplikacije i mrežne usluge
Microsoft Visual Studio 2015
Korak 2: Priča
Pametna poljoprivreda treba primijeniti tehnologiju Interneta stvari u tradicionalnoj poljoprivredi, koristeći senzore i softver za kontrolu poljoprivredne proizvodnje putem mobilnih ili računalnih platformi, čineći tradicionalnu poljoprivredu "pametnijom".
Na planini Mengding sjeveroistočno od Ya’ana, Sichuan, planinski greben ide od zapada prema istoku u zelenom moru. Ovo je najpoznatiji prizor za 36-godišnjeg Denga, jednog od rijetkih proizvođača čaja Mengding svoje generacije, s plantažom od 50mu (= 3,3 hektara) koja se nalazi na 1100m nadmorske visine. Deng potječe iz obitelji proizvođača čajeva, no nošenje obiteljskog naslijeđa nije lak zadatak. “Naši čajevi uzgajaju se na velikim nadmorskim visinama u organskom okruženju kako bi se osigurala njegova izvrsna kvaliteta. No, u isto vrijeme, gustoća rasta je niska, troškovi su visoki i pupoljci su neravnomjerni, što otežava berbu čaja. Zato su visokoplaninski čajevi obično male berbe i njihove vrijednosti se ne odražavaju na tržištu. Posljednje dvije godine Deng pokušava podići svijest potrošača o planinskim čajevima kako bi promicao njihovu vrijednost. A kad je upoznao Fan, koji je tražio plantažu za implementaciju Seeedove IoTea tehnologije, napravljeno je savršeno rješenje. Rješenje Seeed IoTea ima za cilj pomoći uzgajivačima čaja u boljem upravljanju plantažama bez mijenjanja tradicionalnih praksi uzgoja čaja, te predstaviti podatke o okolišu u stvarnom vremenu s plantaža na otvorenoj platformi.
Sastoji se od senzora, čvorova i pristupnika, IoTea prikuplja podatke o faktorima koji u stvarnom vremenu mogu utjecati na kvalitetu čaja tijekom procesa uzgoja i proizvodnje, uključujući temperaturu i vlagu, CO2, O2, PM i izloženost svjetlu. Podaci se prikupljaju senzorima, čvorovi ih šalju na pristupnik i na kraju u oblak te su dostupni krajnjim korisnicima na web stranici.
Korak 3: Povezivanje hardvera
Korak 1: Povezivanje pristupnika
Gateway se instalira zasebno u kutiju. S obzirom na problem odvođenja topline, dodali smo 2 ventilatora. Jedan je za odvođenje topline Raspberry Pi, drugi je za unutarnju i vanjsku cirkulaciju zraka. Ulazna kutija smještena je u farmerovom domu, pa ne moramo razmatrati problem napajanja.
Korak 2: Povezivanje čvora
Čvor je terminal podataka, a svi izvorni podaci dobivaju se odavde. Na čvor je spojeno 6 senzora. Osim senzora vlage i temperature tla, unutar kutije za žaluzine stavljamo i druge senzore.
Čvor je smješten u vodootpornu kutiju. Kako bismo imali bolju vezu s čvorom, izrađujemo adaptersku ploču. Na kraju ćemo dati vezu za preuzimanje sheme ove ploče. Kao što je dolje prikazano, kabeli senzora uključeni su u adaptersku ploču kroz priključne blokove. Koristimo 3 MOS cijevi (SI2301) za izradu sklopnih krugova za upravljanje uključivanjem i isključivanjem senzora i ventilatora. Ventilator se koristi za hlađenje. Na ploči imamo ugrađen temperaturni senzor (DS18B20). Može nam reći unutarnju temperaturu kutije, a zatim mikrokontroler odlučuje hoće li uključiti ventilator. Koristimo nekoliko otpornika za izradu kruga razdjelnika napona za mjerenje napona olovne baterije. Konačno, rezerviramo 3 IIC sučelja i serijski port na ploči za kasnije proširenje i ispravljanje pogrešaka.
Razgovarajmo o problemu napajanja čvora. Čvor se nasumično postavlja u plantažu čaja, pa tradicionalna metoda napajanja više nije primjenjiva. Korištenje rješenja za solarnu energiju dobra je ideja. Trenutno na tržištu postoji mnogo rješenja. Možemo odabrati jedan od njih koji zadovoljava naše potrebe. U rješenju koje smo odabrali postoje 3 dijela: solarni panel, solarni regulator punjenja i olovna baterija. Kako bismo bolje uhvatili solarnu energiju, stavljamo solarnu ploču na vrh nosača i prilagođavamo njezin kut kako bismo bili sigurni da je okrenuta prema suncu. Stavili smo solarni regulator punjenja u istu kutiju sa čvorom. Budući da unutar kutije nema dodatnog prostora, morali smo pronaći novu vodootpornu kutiju za postavljanje olovne baterije.
Korak 4: Konfiguracija softvera
Čvor
U ovom odjeljku predstavit ćemo uglavnom softversku konfiguraciju čvora.
Format podataka
Podaci koje je čvor prenio na pristupnik:
nepotpisani char Lora_data [15] = {0, 1, 2, 3,, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14};
Značenje svakog bita podataka:
Lora_data [0]: Temperatura zraka, ℃
Lora_data [1]: Vlažnost zraka, %
Lora_data [2]: Visina osam, m
Lora_data [3]: Visina niska osam
Lora_data [4]: Koncentracija CO2 visoka osam, ppm
Lora_data [5]: Koncentracija CO2 niska osam
Lora_data [6]: Visoka koncentracija prašine osam, kom/0,01 cf
Lora_data [7]: Koncentracija prašine niska osam
Lora_data [8]: Intenzitet svjetla visok osam, lux
Lora_data [9]: Intenzitet svjetla nizak osam
Lora_data [10]: Koncentracija O2, % (sirovi podaci podijeljeni s 1000)
Lora_data [11]: Temperatura tla, ℃
Lora_data [12]: Vlažnost tla, %
Lora_data [13]: Napon baterije, v
Lora_data [14] : Kôd pogreške senzora
Kod pogreške:
Lora_data [14] = [bit7, bit6, bit5, bit4, bit3, bit2, bit1, bit0]
Značenje svakog bita:
bit 0: 1 ---- pogreška senzora temp. i Humi & barometra (BME280)
bit 1: 1 ---- Pogreška senzora ugljičnog dioksida (MH-Z16)
bit 2: 1 ---- Greška senzora prašine, PPD42NS
bit 3: 1 ---- Pogreška senzora digitalnog svjetla
bit 4: 1 ---- pogreška osjetnika kisika (ME2-O2-F20)
bit 5: 1 ---- Pogreška osjetnika vlažnosti tla i temperature
bit 6: Rezervirano
bit 7: Rezervirano
Napravili smo Error_code_transform.exe, otvorili ga i unijeli kôd pogreške u šesnaestocifreni broj, brzo ćete znati koji je senzor pogrešan. Veza za preuzimanje nalazi se na kraju ovog članka.
Podešavanje parametara: a) Ciklus prijenosa podataka
// seeedtea.ino
#defineinterval_time 600 // sekunda
Ovaj se parametar može mijenjati za promjenu ciklusa prijenosa podataka. U svakom ciklusu prikupljanje podataka traje oko 1 minute. Dakle, ne preporučuje se mijenjanje ove vrijednosti na manje od 60 sekundi.
b) Vrijeme zagrijavanja osjetnika prašine
//seeedtea.ino
#definePreheat_time 30000 // DustSenzor zagrijavanje, miliseond //Dust_other.cpp #definesampletime_ms 30000 // samplingtime30s
c) Koeficijent napona
//POWER_Ctrl.cpp
#defineBattery_coefficient 0,159864 // ADC vrijednost × koeficijent baterije = napon baterije #defineSolarni koeficijent 0,22559 // vrijednost ADC × solarni koeficijent = solarni napon
Ova dva parametra izračunavaju se na temelju kruga razdjelnika napona.
d) Prag temperature otvaranja ventilatora
//POWER_Ctrl.cpp
#defineFan_start_temp 45 // temperaturni prag #defineFan_start_light 500 // intenzitet svjetla
Kad stvarna temperatura pređe prag, ventilator će se početi hladiti.
e) Parametar inicijalizacije O2 osjetnika
//Kisik.cpp
#defineO2_procent 208.00 //20.8%
f) Makro prekidač
//seeedtea.ino
#defineLORA_RUN // Nakon komentara, inicijalizacija Lore i prijenos podataka će se zaustaviti #defineSENSOR_RUN // Nakon komentara, vanjski senzori će prestati raditi //POWER_Ctrl.cpp #defineFAN_ON // Samo testiranje, potrebno je komentirati praktičnu aplikaciju /**** *** Način upravljanja DS18B20 **********************/ #defineSlower_Mode // Spori način rada za postizanje temperature. Komentar je brz način rada
g) Preslikavanje pinova
D2: LED indikator i vanjski mikrokontroler za resetiranjeIIC: SCL i SDA
//Drugi_prah.h
#defineDust_pin 3 // Senzor prašine //CO2.cpp #defineCO2_serial Serial1 // koristite hardverski serijski priključak (D0 & D1) //seeedtea.ino #definedataPin 6 // Pin podataka o tlu #defineclockPin 7 // Pin sata sata // POWER_Ctrl. h #defineDS18B20_pin 8 // DS18B20 #defineFan_pin 9 // Ventilator #defineAir_CtrlPin 10 // Kontrolni pin za senzore postavljene u žaluzinu #defineSoil_CtrlPin 11 // Sklopka osjetnika osjetnika vlage i temperature tla #defineBattery_pin A2 /Mjeri napon baterije /Izmjerite napon solarne ploče //Kisik.h #defineO2_pin A1 // Senzor O2
h) Mjerač vremena čuvara
Mjerač vremena čuvara koristi se za nadzor statusa rada sustava. Kad sustav radi neuobičajeno, čvor će se resetirati, tako da može raditi kontinuirano dugo vremena.
Knjižnica na koju se treba pozvati:
- Adafruit_SleepyDog.h je dodan u projekt
- Adafruit_ASFcore-master.zip pakiran je u mapu projekta i mora se ručno dodati u Arduino IDE.
Povezane funkcije:
Omogući nadzorni pas
int WatchdogSAMD:: enable (int maxPeriodMS, bool isForSleep)
Ulazni parametri:
Int maxPeriodMS: Vrijeme čekanja u milisekundama. Maksimalno dopušteno je 16000 milisekundi.
povratna vrijednost:
Int type, vrati stvarno vrijeme čekanja
Poništite nadzornog psa
void WatchdogSAMD:: reset ()
Pozovite ovu funkciju da biste poništili mjerač vremena čuvara, koji se naziva "hranjenje psa". Prekoračenje vremena čekanja bez resetiranja uzrokovat će ponovno pokretanje čvora.
Zaustavi stražara
void WatchdogSAMD:: disable ()
Gateway
U ovom odjeljku predstavit ćemo kako se povezati s poslužiteljem Loriot.
1. korak: Registracija pristupnika poslužitelja Loriot
a) Novi korisnik mora prvo registrirati račun, kliknite adresu za registraciju. Ispunite Korisničko ime, Lozinku i adresu e -pošte za registraciju, nakon registracije bit će vam poslana e -poruka, slijedite upute u e -pošti za aktivaciju.
b) Nakon uspješne aktivacije, kliknite ovdje za prijavu. Zadani nivo je “Mreža zajednice”, podržava 1 pristupnik (RHF2S001) i 10 čvorova.
c) Unesite nadzornu ploču -> Gateway, kliknite Dodaj Gateway početak za dodavanje Gateway.
d) Odaberite Raspberry Pi 3
e) Postavite kako slijedi:
- Radio prednji dio -> RHF2S001 868/915 MHz (SX1257)
- AUTOBUS -> SPI
f) Ispunite MAC adresu vašeg RHF2S001, trebala bi biti u formatu b8: 27: eb: xx: xx: xx. Također unesite podatke o lokaciji pristupnika.
g) Pritisnite “Register Raspberry Pi gateway” da biste dovršili registraciju.
h) Pritisnite registrirani pristupnik za ulazak na stranicu s konfiguracijom, ručno prebacite „Frekvencijski plan“, vaš plan ovdje ovisi o vrsti vašeg RHF2S001 tipa, dostupan plan je CN470 , CN473 , CN434 , CN780 , EU868, nakon odabira osvježite stranicu da biste dobili točan kanal. Na ovoj wiki stranici odabiremo EU868.
i) Pokrenite naredbu na terminalu za kit:
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.
2. korak: Uređaj čvora za povezivanje poslužitelja Loriot
a) Nabavite dostupne kanale pristupnika
Trenutni kanali pristupnika mogu se dobiti s nadzorne ploče -> pristupnik -> vaš pristupnik, dostupne kanale možete vidjeti kao na slici ispod.
b) Seeeduino LoRAWAN GPS (RHF3M076) konfiguracija
Otvorite serijski monitor ArduinoIDE -a, dodirnite naredbu ispod.
u+pogl
Da biste potvrdili zadani kanal vašeg Seeeduino_LoRAWAN GPS -a, dobit ćete 3 kanala. Ako nema dostupnih kanala, možete promijeniti kanale Seeeduino_LoRAWAN donjom naredbom.
pri+ch = 0, 868,1
pri+ch = 1, 868,3 pri+ch = 2, 868,5
Zatim možete ponovno upotrijebiti na+ch za provjeru.
c) Dodajte Seeeduino_LoRAWAN GPS kao ABP NodeLog na poslužitelju Loriot, kliknite Nadzorna ploča -> Aplikacije -> SimpleApp. Pritisnite Uvezi ABP , unesite ispod stavki
- DevAddr: Seeeduino_LoRAWAN GPS dobiva naredbu "AT+ID" (Napomena: Loriot ne podržava konektor za dvotočku, potrebno ga je ukloniti ručno)
- FCntUp: Setto 1
- FCntDn: Setto 1
- NWKSKEY: Zadana vrijednost 2B7E151628AED2A6ABF7158809CF4F3C
- APPSKEY: Zadana vrijednost 2B7E151628AED2A6ABF7158809CF4F3C
- EUI: DEVEUI, Seeeduino_LoRAWAN GPS dobivanje naredbe "AT+ID"
Pritisnite gumb Uvoz uređaja da biste dovršili uvoz uređaja. Sada odaberite Nadzorna ploča-> Aplikacije -> SampleApp, vidjet ćete novi čvor ABP -a koji ste upravo dodali.
d) Slanje podataka iz Seeeduino_LoRAWAN -a
PAŽNJA! Ovo je samo test.
Natrag na serijski monitor ArduinoIDE -a, pošaljite naredbu:
AT+CMSGHEX = "0a 0b 0c 0d 0e"
Zatim idite na Nadzornu ploču -> Aplikacije -> SampleApp -> Uređaj, kliknite NI Device EUI ili DevAddr, ovdje ćete pronaći podatke koje ste upravo poslali.
Za detalje pogledajte ovu wiki.
Korak 5: Izrada web stranice
Povezani alati
- virtualenv
- Python3
- Gunicorn
- Nadglednik
- Nginx
- MySQL
Mi koristimo CentOS7 kao okruženje za testiranje implementacije
virtualenv
Koristite virtualenv za izgradnju samostalnog proizvodnog okruženja python3
a) instalirati
pip install virtualenv
b) stvorite python3 virtualno okruženje
virtualenv -p python3 iotea
c) pokrenite virtualno okruženje i unesite iotea direktorij
izvorni spremnik/aktiviranje
d) postojeće okruženje
deaktivirati
Python3
a) instalirati
yum instalirati epel-release
yum instalirajte python36
b) instalirajte ovisnu knjižnicu PyMySQL, DBUtils, Flask, websocket-client, configparser
pip install pymysql
pip install dbutils pip install flask pip install websocket-client pip install configparser
Gunicorn
a) instalirajte (u Python3 okruženju)
pip install gunicorn
b) pokrenite projekt flask (u direktoriju iotea projekta)
gunicorn -w 5 -b 0.0.0.0:5000 app: app
c) pokrenite websocket-clint da biste dobili podatke o loriotu
gunicorn loriot: app
d) pogledajte drvo procesa Gunicorn
pstree -ap | grep top
Nadglednik
a) instaliraj (root korisnik)
pip install supervizor
b) generiranje konfiguracijskih datoteka
echo_supervisord_conf> /etc/supervisord.conf
c) stvoriti direktorij i uvesti konfiguraciju direktorija
mkdir -p /etc/supervisor/conf.d
Uredite /etc/supervisord.conf i izmijenite polje datoteka pod [uključi] na kraju datoteke.
Imajte na umu da morate ukloniti ';' ispred ova dva retka, što je karakter komentara.
[uključi]
Datoteke = /etc/supervisor/conf.d/*.conf
Sredstva za uvođenje /etc/supervisor/conf.d/. Sljedeća konfiguracijska datoteka koristi se kao konfiguracijska datoteka procesa (nadgleda ju nadzornik).
d) dolazna konfiguracija (u direktoriju iotea)
cp iotea.conf /etc/supervisor/conf.d/
cp loriot.conf /etc/supervisor/conf.d/
e) posluživanje otvorene iotee
superviosrctl reload #reload konfiguracijske datoteke
superviosrctl start loriot #open loriot prijem podataka superviosrctl start iotea #open aplikacija iotea flask
f) druge uobičajene operacije
nadzornik reload # ponovno učitavanje konfiguracijske datoteke
supervizorctl ažuriranje supervizorctl početak xxx supervizorctl stop xxx nadzorni status xxx supervizor pomoć # pogledajte više naredbi
Nginx
a) instalirati
yum install -y nginx
b) konfiguracija
cp NginxIotea.conf /etc/nginx/conf.d/
c) pokrenite Nginx
systemctl pokretanje nginx.service
MySQL
a) povezani parametri
korisnik = 'korijen'
passwd = '1234' db = 'iotea' port = 3306
b) datoteku
iotea_iotea.sql
c) konfiguracijsku datoteku
db.ini