Sisällysluettelo:
2025 Kirjoittaja: John Day | [email protected]. Viimeksi muokattu: 2025-01-13 06:57
Automaattinen tiedonkeruujärjestelmä, jota sovelletaan teen istutukseen. Se on osa älykästä maataloustiedon keräämistä.
Vaihe 1: Tässä projektissa käytetyt asiat
Laitteiston osat
- Grove - hiilidioksidianturi (MH -Z16)
- Grove - digitaalinen valotunnistin
- Grove - Pölyanturi (PPD42NS)
- Grove-happianturi (ME2-O2-Ф20)
- Maaperän kosteus- ja lämpötila -anturi
- LoRa LoRaWAN -yhdyskäytävä - 868 MHz: n sarja ja Raspberry Pi 3
- Grove - lämpötila- ja humi- ja ilmanpainemittari (BME280)
Ohjelmistosovellukset ja verkkopalvelut
Microsoft Visual Studio 2015
Vaihe 2: Tarina
Älykkään maatalouden tarkoituksena on soveltaa esineiden Internet -tekniikkaa perinteiseen maatalouteen käyttämällä antureita ja ohjelmistoja maatalouden tuotannon ohjaamiseen mobiili- tai tietokonealustojen kautta, mikä tekee perinteisestä maataloudesta "älykkäämpää".
Mengding -vuorella Yaichista koilliseen, Sichuanissa, vuoristoharja kulkee länteen itään vihreässä meressä. Tämä on tutuin näky 36-vuotiaalle Dengille, joka on yksi harvoista sukupolvensa Mengding-teenkeittimistä ja jonka istutusalue on 50 m (= 3,3 hehtaaria) 1100 metrin korkeudella merenpinnan yläpuolella. Deng tulee teekoneiden perheestä, mutta perheen perinnön jatkaminen ei ole helppo tehtävä.”Teemme on kasvatettu korkealla luonnonmukaisessa ympäristössä sen erinomaisen laadun varmistamiseksi. Mutta samaan aikaan kasvutiheys on alhainen, kustannukset ovat korkeat ja orastaminen on epätasaista, mikä tekee teestä vaikean sadon. Siksi korkean vuoren teet ovat yleensä pieniä satoja, eikä niiden arvot näy markkinoilla.” Kahden viime vuoden aikana Deng on pyrkinyt lisäämään kuluttajien tietoisuutta korkean vuoren teestä edistääkseen niiden arvoa. Ja kun hän tapasi Fanin, joka etsi istutusta Seeedin IoTea -tekniikan toteuttamiseen, ratkaisu löytyi täydellisesti. Seeed IoTea -ratkaisun tarkoituksena on auttaa teeviljelijöitä hallitsemaan paremmin istutuksia muuttamatta perinteisiä teenviljelykäytäntöjä ja esittää reaaliaikaisia ympäristötietoja istutuksista avoimella alustalla.
IoTea kerää antureista, solmuista ja yhdyskäytävistä reaaliaikaisia tietoja tekijöistä, jotka voivat vaikuttaa teen laatuun viljelyn ja tuotantoprosessien aikana, mukaan lukien lämpötila ja kosteus, CO2, O2, PM ja valolle altistuminen. Anturit keräävät tiedot, solmut lähettävät yhdyskäytävään ja lopulta pilveen, ja ne asetetaan loppukäyttäjien saataville verkkosivulla.
Vaihe 3: Laitteistoyhteys
Vaihe 1: Yhdyskäytäväyhteys
Yhdyskäytävä asennetaan erikseen laatikkoon. Kun otetaan huomioon lämmöntuottoon liittyvä ongelma, lisäsimme 2 tuuletinta. Toinen on tarkoitettu Raspberry Pi: n lämmöntuottoon, toinen sisäiseen ja ulkoiseen ilmankiertoon. Yhdyskäytävälaatikko on sijoitettu viljelijän kotiin, joten meidän ei tarvitse harkita sen sähköongelmaa.
Vaihe 2: Solmuliitäntä
Solmu on datapääte, ja kaikki alkuperäinen data saadaan täältä. Solmuun on kytketty 6 anturia, ja maaperän kosteus- ja lämpötila -anturin lisäksi asetamme muut anturit säleikköön.
Solmu on sijoitettu vedenpitävään laatikkoon. Saavuttaaksemme paremman yhteyden solmuun teemme sovitinkortin. Lopuksi tarjoamme tämän levyn kaavion latauslinkin. Kuten alla on esitetty, anturien kaapelit on kytketty sovitinkorttiin riviliittimien kautta. Käytämme kolmea MOS -putkea (SI2301) rakentaaksemme kytkentäpiirejä antureiden ja tuulettimen päälle- ja poiskytkennän ohjaamiseksi. Tuuletinta käytetään jäähtymään. Levyyn on asennettu lämpötila -anturi (DS18B20). Se voi kertoa meille laatikon sisäisen lämpötilan ja sitten mikro -ohjain päättää, kytkeekö tuuletin päälle. Käytämme useita vastuksia tehdäksesi jännitteenjakajapiirin lyijyakkujännitteen mittaamiseen. Lopuksi varaamme 3 IIC -liitäntää ja sarjaportin levylle myöhempää laajennusta ja virheenkorjausta varten.
Puhutaan solmun virtalähdeongelmasta. Solmu sijoitetaan teeviljelmiin satunnaisesti, joten perinteinen virtalähde ei ole enää sovellettavissa. Aurinkosähköratkaisun käyttäminen on hyvä idea. Tällä hetkellä markkinoilla on monia ratkaisuja. Voimme valita niistä yhden, joka vastaa tarpeitamme. Valitsemassamme ratkaisussa on 3 osaa: aurinkopaneeli, aurinkopaneelien lataussäädin ja lyijyakku. Saadaksemme aurinkoenergian paremmin kiinni, asetamme aurinkopaneelin kannattimen yläosaan ja säädä sen kulmaa niin, että se on aurinkoon päin. Asetimme aurinkopaneelien varaussäätimen samaan laatikkoon solmun kanssa. Koska laatikon sisällä ei ole ylimääräistä tilaa, meidän oli löydettävä uusi vedenpitävä laatikko lyijyakun sijoittamiseksi.
Vaihe 4: Ohjelmiston määritys
Solmu
Tässä osiossa esittelemme solmun pääasiassa ohjelmistokokoonpanon.
DataFormat
Solmun yhdyskäytävälle lataamat tiedot:
allekirjoittamaton merkki Lora_data [15] = {0, 1, 2, 3,, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14};
Jokaisen tietobitin merkitys:
Lora_data [0] : Ilman lämpötila, ℃
Lora_data [1] : Ilmankosteus, %
Lora_data [2] : Korkeus kahdeksan, m
Lora_data [3] low Matala korkeus kahdeksan
Lora_data [4] : CO2 -pitoisuus korkea kahdeksan, ppm
Lora_data [5] : CO2 -pitoisuus alhainen kahdeksan
Lora_data [6] : Pölypitoisuus korkea kahdeksan, kpl/0,01 cf
Lora_data [7] : Pölypitoisuus alhainen kahdeksan
Lora_data [8] : Valon voimakkuus korkea kahdeksan, lux
Lora_data [9] : Valon voimakkuus alhainen kahdeksan
Lora_data [10] : O2 -pitoisuus, % (raakatiedot jaettuna 1000: lla)
Lora_data [11] : Maaperän lämpötila, ℃
Lora_data [12] : Maaperän kosteus, %
Lora_data [13] : Akun jännite, v
Lora_data [14] : Anturien virhekoodi
Virhekoodi:
Lora_data [14] = [bit7, bit6, bit5, bit4, bit3, bit2, bit1, bit0]
Jokaisen bitin merkitys:
bitti 0: 1 ---- Lämpötila- ja humi- ja ilmanpaineanturin (BME280) virhe
bitti 1: 1 ---- Hiilidioksidianturin (MH-Z16) virhe
bitti 2: 1 ---- Pölyanturi (PPD42NS) virhe
bitti 3: 1 ---- Digitaalisen valoanturin virhe
bitti 4: 1 ---- Happianturin (ME2-O2-Ф20) virhe
bitti 5: 1 ---- Maaperän kosteus- ja lämpötila-anturin virhe
bitti 6: Varattu
bitti 7: Varattu
Olemme tehneet Error_code_transform.exe -tiedoston, avaamalla sen ja syöttämällä virhekoodin heksadesimaaliluvulla. Tiedät nopeasti, mikä anturi on virhe. Latauslinkki on tämän artikkelin lopussa.
Parametrien säätö: a) Tiedonsiirtosykli
// seeedtea.ino
#defineinterval_time 600 // sekunti
Tätä parametria voidaan muuttaa tiedonsiirtosyklin muuttamiseksi. Jokaisessa syklissä tiedonkeruu kestää noin minuutin. Ei siis ole suositeltavaa muuttaa tätä arvoa alle 60 sekuntiin.
b) Pölyanturin lämpenemisaika
//seeedtea.ino
#definePreheat_time 30000 // Pölyanturin lämpenemisaika, millisekunti // Dust_other.cpp #definesampletime_ms 30000 // samplingtime30s
c) Jännitekerroin
//POWER_Ctrl.cpp
#defineBattery_coefficient 0,159864 // ADC -arvo × Battery_coefficient = akun_jännite #defineSolar_coefficient 0,22559 // ADC -arvo × Solar_coefficient = aurinko_jännite
Nämä kaksi parametria lasketaan jännitteenjakajapiirin perusteella.
d) Puhaltimen avautumislämpötilan kynnys
//POWER_Ctrl.cpp
#defineFan_start_temp 45 // lämpötilaraja #defineFan_start_light 500 // valon voimakkuus
Kun todellinen lämpötila ylittää kynnyksen, tuuletin alkaa jäähtyä.
e) O2 -anturin alustusparametri
// Happi.cpp
#defineO2_percentage 208,00 //20,8%
f) Makrokytkin
//seeedtea.ino
#defineLORA_RUN // Kommentin jälkeen Loran alustus ja tiedonsiirto pysähtyvät #defineSENSOR_RUN // Kommentin jälkeen ulkoiset anturit lakkaavat toimimasta //POWER_Ctrl.cpp #defineFAN_ON // Vain vahvistaminen, Käytännön sovellus täytyy kommentoida /**** *** DS18B20 -ohjaustila **********************/ #defineSlower_Mode // Hidas tila lämpötilan vaihtamiseksi. Kommenttien lähettäminen on nopeaa tilaa
g) Nastan kartoitus
D2: LED -merkkivalo ja ulkoinen nollausmikro -ohjain IIC: SCL ja SDA
// Pöly_muut.h
#defineDust_pin 3 // Pölyanturi //CO2.cpp #defineCO2_serial Serial1 // käytä hardwareserial -porttia (D0 & D1) //seeedtea.ino #definedataPin 6 // Maaperätiedon nasta #defineclockPin 7 // Maaperän kellotappi // POWER_Ctrl. h #defineDS18B20_pin 8 // DS18B20 #defineFan_pin 9 // Tuuletin #defineAir_CtrlPin 10 // Ohjaustappi ohjainlaatikkoon sijoitetuille antureille #defineSoil_CtrlPin 11 // Maaperän kosteus- ja lämpötila -anturikytkimen nasta #defineBattery_pin A2 // Mittaa akun jännite # /Mittaa aurinkopaneelin jännite // Happi.h #defineO2_pin A1 // O2 -anturi
h) Vahtikoiran ajastin
Vahtikoira -ajastinta käytetään järjestelmän käynnin tilan seurantaan. Kun järjestelmä toimii epänormaalisti, solmu nollataan, jotta se voi toimia jatkuvasti pitkään.
Viitattu kirjasto:
- Adafruit_SleepyDog.h on lisätty projektiin
- Adafruit_ASFcore-master.zip on pakattu projektikansioon ja se on lisättävä manuaalisesti Arduino IDE: hen.
Liittyvät toiminnot:
Ota vahtikoira käyttöön
int WatchdogSAMD:: ota käyttöön (int maxPeriodMS, bool isForSleep)
Syöttöparametrit:
Int maxPeriodMS: Odotusaika millisekunteina. Suurin sallittu aika on 16 000 millisekuntia.
palautusarvo:
Int -tyyppi, palauta todellinen odotusaika
Nollaa vahtikoira
mitätön vahtikoiraSAMD:: nollaus ()
Soita tämä toiminto nollataksesi vahtikoiran ajastimen, jota kutsutaan "koiran ruokkimiseksi". Odotusajan ylittäminen ilman nollausta aiheuttaa solmun uudelleenkäynnistyksen.
Lopeta vahtikoira
void WatchdogSAMD:: poista käytöstä ()
Yhdyskäytävä
Tässä osiossa esittelemme yhteyden muodostamisen Loriot -palvelimeen.
Vaihe 1: Loriot Server Gateway -rekisteröinti
a) Uuden käyttäjän on ensin rekisteröitävä tili, napsauta rekisteröintiosoitetta. Täytä käyttäjätunnus, salasana ja sähköpostiosoite rekisteröidäksesi, rekisteröinnin jälkeen sinulle lähetetään sähköposti, noudata sähköpostin ohjeita aktivoidaksesi.
b) Onnistuneen aktivoinnin jälkeen kirjaudu sisään napsauttamalla tätä. Oletustaso on”Community Network”, se tukee 1 yhdyskäytävää (RHF2S001) ja 10 solmua.
c) Siirry Dashboard -> Gateway, napsauta Add Gateway aloita Gatewayn lisääminen.
d) Valitse Raspberry Pi 3
e) Aseta seuraavasti:
- Radion etuosa -> RHF2S001 868/915 MHz (SX1257)
- BUSS -> SPI
f) Täytä RHF2S001 -laitteen MAC -osoite, jonka muodon on oltava b8: 27: eb: xx: xx: xx. Syötä myös yhdyskäytävän sijaintitiedot.
g) Viimeistele rekisteröinti napsauttamalla”Rekisteröi Raspberry Pi -yhdyskäytävä”.
h) Siirry asetussivulle napsauttamalla rekisteröityä yhdyskäytävää, vaihda "Taajuussuunnitelma" manuaalisesti, suunnitelmasi päätetään RHF2S001 -tyypin tyypin mukaan, käytettävissä oleva suunnitelma on CN470 , CN473 , CN434 , CN780 , EU868, päivitä sivu valitun jälkeen saadaksesi oikean kanavan. Tässä wikissä valitsemme EU868.
i) Suorita komento kittipäätteessä :
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.
Vaihe 2: Loriot Server Connect Node -laite
a) Hanki käytettävissä olevat yhdyskäytäväkanavat
Nykyiset yhdyskäytäväkanavat voidaan hakea hallintapaneelista -> Yhdyskäytävä -> Yhdyskäytäväsi, näet käytettävissä olevat kanavat alla olevan kuvan mukaisesti.
b) Seeeduino LoRAWAN GPS (RHF3M076) -määritykset
Avaa ArduinoIDE -sarjan näyttö, napauta alla olevaa komentoa.
+ch
Jos haluat vahvistaa Seeeduino_LoRAWAN GPS: n oletuskanavan, saat 3 kanavaa. Jos käytettävissä olevaa kanavaa ei ole, voit vaihtaa Seeeduino_LoRAWANin kanavia alla olevalla komennolla.
+ch = 0, 868,1
+ch = 1, 868,3+ch = 2, 868,5
Sitten voit tarkistaa uudelleen+ch: llä.
c) Lisää Seeeduino_LoRAWAN GPS ABP NodeLogiksi Loriot -palvelimelle, napsauta Dash Board -> Applications -> SimpleApp. Napsauta kohtaa Tuo ABP , syöte kohteiden alla
- DevAddr: Seeeduino_LoRAWAN GPS saa "AT+ID" -komennon (Huomautus: Loriot ei tue kaksoispistoliitintä, täytyy poistaa manuaalisesti)
- FCntUp : Aseta arvoon 1
- FCntDn : Aseta 1
- NWKSKEY fault Oletusarvo 2B7E151628AED2A6ABF7158809CF4F3C
- APPSKEY fault Oletusarvo 2B7E151628AED2A6ABF7158809CF4F3C
- EUI : DEVEUI, Seeeduino_LoRAWAN GPS saa "AT+ID" -komennon
Viimeistele laitteen tuonti napsauttamalla Tuo laite -painiketta. Valitse nyt Kojelauta-> Sovellukset -> SampleApp, näet juuri lisäämäsi uuden ABP -solmun.
d) Lähetä tietoja Seeeduino_LoRAWANilta
HUOMIO! Tämä on vain testi.
Takaisin ArduinoIDE -sarjan näyttöön, lähetä komento:
AT+CMSGHEX = "0a 0b 0c 0d 0e"
Siirry sitten Dashboard -> Applications -> SampleApp -> Device, napsauta Node Device EUI tai DevAddr, löydät juuri lähettämäsi tiedot täältä.
Katso lisätietoja tästä wikistä.
Vaihe 5: Verkkosivuston rakentaminen
Aiheeseen liittyvät työkalut
- virtualenv
- Python 3
- Gunicorn
- Valvoja
- Nginx
- MySQL
Käytämme CentOS7 -testiympäristönä
virtualenv
Käytä virtualenv -ohjelmaa itsenäisen python3 -tuotantoympäristön luomiseen
a) asenna
pip asenna virtualenv
b) Luo python3 -virtuaalinen ympäristö
virtualenv -p python3 iotea
c) Käynnistä virtuaalinen ympäristö ja kirjoita iotea -hakemisto
lähdesäiliö/aktivoi
d) olemassa oleva ympäristö
deaktivoida
Python 3
a) asenna
yum asenna epel-release
yum asenna python36
b) asenna riippuvainen kirjasto PyMySQL, DBUtils, Flask, websocket-client, configparser
pip asenna pymysql
pip install dbutils pip install pullo pip install websocket-client pip install configparser
Gunicorn
a) asenna (Python3 -ympäristössä)
pip asennus gunicorn
b) suorittaa pullohanke (iotea -projektihakemiston alla)
gunicorn -w 5 -b 0.0.0.0:5000 app: app
c) suorita websocket-clint saadaksesi loriot-tietoja
gunicorn loriot: sovellus
d) tarkastella Gunicorn -prosessipuuta
pstree -ap | grep gunicorn
Valvoja
a) asenna (pääkäyttäjä)
pip -asennuksen valvoja
b) luoda määritystiedostoja
echo_supervisord_conf> /etc/supervisord.conf
c) luo hakemisto ja ota käyttöön hakemistokokoonpano
mkdir -p /etc/supervisor/conf.d
Muokkaa /etc/supervisord.conf ja muokkaa tiedoston lopussa olevaa [include] -kenttien tiedostokenttää.
Huomaa, että sinun on poistettava ';' näiden kahden rivin edessä, mikä on kommenttihahmo.
[sisältää]
Tiedostot = /etc/supervisor/conf.d/*.conf
Keinot käyttöön /etc/supervisor/conf.d/. Seuraavaa määritystiedostoa käytetään prosessin määritystiedostona (valvoja valvoo).
d) saapuvat kokoonpanot (iotea -hakemistossa)
cp iotea.conf /etc/supervisor/conf.d/
cp loriot.conf /etc/supervisor/conf.d/
e) avoin iotea -tarjoilu
superviosrctl reload #reload määritystiedosto
superviosrctl start loriot #open loriot datan vastaanotto superviosrctl start iotea #avaa iotea -pullo -sovellus
f) muut yhteiset toiminnot
supervisorctl reload # lataa asetustiedosto uudelleen
supervisorctl päivitys supervisorctl start xxx supervorctl stop xxx supervorctl status xxx supervorctl help # view more command
Nginx
a) asenna
yum asentaa -y nginx
b) kokoonpano
cp NginxIotea.conf /etc/nginx/conf.d/
c) käynnistä Nginx
systemctl käynnistä nginx.service
MySQL
a) asiaan liittyvät parametrit
user = 'root'
passwd = '1234' db = 'iotea' portti = 3306
b) tiedosto
iotea_iotea.sql
c) asetustiedosto
db.ini