Turinys:

Matė „LoRa IoTea“sprendimą: 5 žingsniai
Matė „LoRa IoTea“sprendimą: 5 žingsniai

Video: Matė „LoRa IoTea“sprendimą: 5 žingsniai

Video: Matė „LoRa IoTea“sprendimą: 5 žingsniai
Video: Моя работа наблюдать за лесом и здесь происходит что-то странное 2024, Lapkritis
Anonim
Mačiau „LoRa IoTea“sprendimą
Mačiau „LoRa IoTea“sprendimą

Arbatos plantacijai taikoma automatinė informacijos rinkimo sistema. Tai intelektualios žemės ūkio informacijos rinkimo dalis.

1 žingsnis: šiame projekte naudojami dalykai

Techninės įrangos komponentai

  • „Grove“- anglies dioksido jutiklis (MH -Z16)
  • Grove - skaitmeninis šviesos jutiklis
  • Grove - dulkių jutiklis (PPD42NS)
  • Grove-deguonies jutiklis (ME2-O2-Ф20)
  • Dirvožemio drėgmės ir temperatūros jutiklis
  • „LoRa LoRaWAN Gateway“- 868 MHz rinkinys su „Raspberry Pi 3“
  • Grove - Temp & Humi & Barometer jutiklis (BME280)

Programinės įrangos programos ir internetinės paslaugos

„Microsoft Visual Studio 2015“

2 žingsnis: istorija

Išmanusis žemės ūkis - tai daiktų interneto technologijos taikymas tradiciniam žemės ūkiui, naudojant jutiklius ir programinę įrangą žemės ūkio gamybai valdyti per mobilias ar kompiuterines platformas, kad tradicinis žemės ūkis taptų „protingesnis“.

Mengding kalne į šiaurės rytus nuo Ya'an, Sičuanas, kalnų ketera eina į vakarus į rytus žalioje jūroje. Tai labiausiai pažįstamas vaizdas 36 metų Dengui, vienam iš nedaugelio savo kartos „Mengding“arbatos gamintojų, kurio 50 m (= 3,3 ha) plantacija yra 1100 m aukštyje. Deng yra kilęs iš arbatos gamintojų šeimos, tačiau išlaikyti šeimos palikimą nėra lengva užduotis. „Mūsų arbatos yra auginamos dideliame aukštyje ekologiškoje aplinkoje, kad būtų užtikrinta puiki jos kokybė. Tačiau tuo pačiu metu augimo tankis yra mažas, kaina didelė ir pumpurai nevienodi, todėl arbatą sunku nuimti. Štai kodėl aukštų kalnų arbatos paprastai yra nedidelis derlius ir jų vertybės neatsispindi rinkoje “. Pastaruosius dvejus metus Deng bandė didinti vartotojų supratimą apie aukštaūgę arbatą, siekdama skatinti jų vertę. Ir kai jis susitiko su Fanu, kuris ieškojo plantacijos „Seeed“„IoTea“technologijai diegti, buvo puikiai suderintas sprendimas. „Seeed IoTea Solution“tikslas-padėti arbatos augintojams geriau tvarkyti plantacijas, nekeičiant tradicinės arbatos auginimo praktikos, ir pristatyti plantacijų aplinkosaugos duomenis realiuoju laiku atviroje platformoje.

„IoTea“, kurią sudaro jutikliai, mazgai ir vartai, renka realiu laiku duomenis apie veiksnius, kurie gali turėti įtakos arbatos kokybei auginimo ir gamybos procesų metu, įskaitant temperatūrą ir drėgmę, CO2, O2, PM ir šviesos poveikį. Duomenis renka jutikliai, mazgai siunčia į šliuzą ir galiausiai į debesį, o galutiniams vartotojams jie yra prieinami tinklalapyje.

3 žingsnis: aparatinės įrangos prijungimas

1 žingsnis: Vartų prijungimas

Vartai montuojami atskirai dėžutėje. Atsižvelgdami į šilumos išsklaidymo problemą, pridėjome 2 ventiliatorius. Viena skirta „Raspberry Pi“šilumos išsklaidymui, kita - vidaus ir išorės oro cirkuliacijai. Vartų dėžutė yra ūkininko namuose, todėl mums nereikia svarstyti jo galios problemos.

Vaizdas
Vaizdas

2 žingsnis: mazgų prijungimas

Mazgas yra duomenų terminalas, o visi pirminiai duomenys gaunami iš čia. Prie mazgo prijungti 6 jutikliai. Be dirvožemio drėgmės ir temperatūros jutiklio, į žaliuzių dėžę įdėjome kitus jutiklius.

Vaizdas
Vaizdas
Vaizdas
Vaizdas

Mazgas dedamas į vandeniui atsparią dėžę. Siekiant geresnio ryšio su mazgu, mes gaminame adapterio plokštę. Galiausiai pateiksime šios lentos schemos atsisiuntimo nuorodą. Kaip parodyta žemiau, jutiklių kabeliai yra prijungti prie adapterio plokštės per gnybtus. Mes naudojame 3 MOS vamzdelius (SI2301), kad sukurtume jungiklių grandines, skirtas valdyti jutiklius ir ventiliatorių. Ventiliatorius naudojamas atvėsti. Ant plokštės sumontuotas temperatūros jutiklis (DS18B20). Tai gali mums pasakyti vidinę dėžutės temperatūrą, o tada mikrovaldiklis nusprendžia, ar įjungti ventiliatorių. Mes naudojame kelis rezistorius, kad sukurtume įtampos skirstytuvo grandinę švino rūgšties akumuliatoriaus įtampai matuoti. Galiausiai, lentoje pasiliekame 3 IIC sąsajas ir nuoseklųjį prievadą vėlesniam išplėtimui ir derinimui.

Vaizdas
Vaizdas

Pakalbėkime apie mazgo maitinimo problemą. Mazgas į arbatmedžių plantaciją dedamas atsitiktinai, todėl tradicinis maitinimo metodas nebetaikomas. Naudoti saulės energijos sprendimą yra gera idėja. Šiuo metu rinkoje yra daug sprendimų. Mes galime pasirinkti vieną iš jų, atitinkantį mūsų poreikius. Mūsų pasirinktame sprendime yra 3 dalys: saulės kolektorius, saulės įkrovimo valdiklis ir švino rūgšties akumuliatorius. Norėdami geriau užfiksuoti saulės energiją, ant laikiklio viršaus uždedame saulės kolektorių ir sureguliuojame jo kampą, kad jis būtų nukreiptas į saulę. Saulės įkrovimo valdiklį įdėjome į tą pačią dėžę su mazgu. Kadangi dėžutės viduje nėra papildomos vietos, turėjome rasti naują neperšlampamą dėžę švino rūgšties baterijai įdėti.

Vaizdas
Vaizdas
Vaizdas
Vaizdas
Vaizdas
Vaizdas

4 žingsnis: programinės įrangos konfigūravimas

Mazgas

Šiame skyriuje pristatysime daugiausia mazgo programinės įrangos konfigūraciją.

„DataFormat“

Duomenys, kuriuos mazgas įkėlė į šliuzą:

nepasirašytas simbolis Lora_data [15] = {0, 1, 2, 3,, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14};

Kiekvieno duomenų bito reikšmė:

Lora_data [0] : Oro temperatūra, ℃

Lora_data [1] : Oro drėgmė, %

Lora_data [2] high Aukščio aukštis aštuoni, m

Lora_data [3] low Žemas aukštis aštuoni

Lora_data [4] : CO2 koncentracija aukšta aštuoni, ppm

Lora_data [5] : CO2 koncentracija maža aštuonios

Lora_data [6] high Dulkių koncentracija aukšta aštuonios, vnt/0,01 cf

Lora_data [7] low Dulkių koncentracija maža aštuonios

Lora_data [8] : Šviesos intensyvumas didelis aštuoni, liuksai

Lora_data [9] : Šviesos intensyvumas mažas aštuoni

Lora_data [10] : O2 koncentracija, % (neapdoroti duomenys padalyti iš 1000)

Lora_data [11] : Dirvožemio temperatūra, ℃

Lora_data [12] : Dirvožemio drėgmė, %

Lora_data [13] : Baterijos įtampa, v

Lora_data [14] : Jutiklių klaidos kodas

Klaidos kodas:

Lora_data [14] = [bit7, bit6, bit5, bit4, bit3, bit2, bit1, bit0]

Kiekvieno bito reikšmė:

bitas 0: 1 ---- Temp & Humi & Barometer Sensor (BME280) klaida

bitas 1: 1 ---- Anglies dioksido jutiklio (MH-Z16) klaida

bitas 2: 1 ---- Dulkių jutiklio (PPD42NS) klaida

bitas 3: 1 ---- Skaitmeninio šviesos jutiklio klaida

bitas 4: 1 ---- deguonies jutiklio (ME2-O2-Ф20) klaida

bitas 5: 1 ---- Dirvožemio drėgmės ir temperatūros jutiklio klaida

6 bitas: rezervuotas

7 bitas: rezervuota

Mes padarėme Error_code_transform.exe, atidarykite jį ir įveskite klaidos kodą šešioliktainiu skaičiumi, greitai sužinosite, kuris jutiklis yra klaida. Atsisiuntimo nuoroda yra šio straipsnio pabaigoje.

Parametrų koregavimas: a) Duomenų perdavimo ciklas

// seeedtea.ino

#defineinterval_time 600 // sekundė

Šį parametrą galima keisti norint pakeisti duomenų perdavimo ciklą. Kiekvieno ciklo metu duomenų surinkimas trunka apie 1 minutę. Taigi nerekomenduojama pakeisti šios vertės į trumpesnę nei 60 sekundžių.

b) Dulkių jutiklio įšilimo laikas

//seeedtea.ino

#definePreheat_time 30000 // DustSensor įšilimo laikas, milisekundės // Dust_other.cpp #definesampletime_ms 30000 // samplingtime30s

c) Įtampos koeficientas

//POWER_Ctrl.cpp

#defineBattery_coefficient 0,159864 // ADC reikšmė × Baterijos koeficientas = baterijos įtampa #defineSolar_coefficient 0,22559 // ADC vertė × Saulės koeficientas = saulės energijos įtampa

Šie du parametrai apskaičiuojami pagal įtampos skirstytuvo grandinę.

d) Ventiliatoriaus atidarymo temperatūros slenkstis

//POWER_Ctrl.cpp

#defineFan_start_temp 45 // temperatūros riba #defineFan_start_light 500 // šviesos intensyvumas

Kai tikroji temperatūra viršija slenkstį, ventiliatorius pradės atvėsti.

e) O2 jutiklio inicijavimo parametras

// Deguonis.cpp

#defineO2_percentage 208.00 // 20.8%

f) Makro jungiklis

//seeedtea.ino

#defineLORA_RUN // Po komentaro „Lora“inicijavimas ir duomenų perdavimas bus sustabdytas *** DS18B20 valdymo režimas **********************/ #defineSlower_Mode // Lėtas režimas temperatūrai pakeisti. Komentaras yra greitas režimas

g) kaiščių atvaizdavimas

D2: LED indikatorius ir išorinis mikrokontroleris IIC: SCL ir SDA

// Dulkės_kitos.h

#defineDust_pin 3 // Dulkių jutiklis //CO2.cpp #defineCO2_serial Serial1 // naudoti aparatinės įrangos prievadą (D0 & D1) //seeedtea.ino #definedataPin 6 // Dirvožemio duomenų smeigtukas #defineclockPin 7 // Dirvožemio laikrodžio kaištis // POWER_Ctrl. h #defineDS18B20_pin 8 // DS18B20 #defineFan_pin 9 // Ventiliatorius #defineAir_CtrlPin 10 // Jutiklių, esančių žaliuzėse, valdymo kaištis #defineSoil_CtrlPin 11 // Dirvožemio drėgmės ir temperatūros jutiklio jungiklio kaištis #defineBattery_pin A2 // Išmatuoti akumuliatoriaus įtampą #pin /Išmatuokite saulės kolektoriaus įtampą // Deguonis.h #defineO2_pin A1 // O2 jutiklis

h) „Watchdog“laikmatis

„Watchdog“laikmatis naudojamas stebėti sistemos veikimo būseną. Kai sistema veikia neįprastai, mazgas bus atstatytas, kad jis galėtų ilgą laiką veikti nepertraukiamai.

Biblioteka, į kurią bus remiamasi:

  • Prie projekto pridėtas „Adafruit_SleepyDog.h“
  • „Adafruit_ASFcore-master.zip“yra supakuotas į projekto aplanką ir turi būti rankiniu būdu pridėtas prie „Arduino IDE“.

Susijusios funkcijos:

Įgalinti stebėtoją

int WatchdogSAMD:: įjungti (int maxPeriodMS, bool isForSleep)

Įvesties parametrai:

Int maxPeriodMS: laukimo laikas milisekundėmis. Maksimali leistina trukmė yra 16 000 milisekundžių.

grąžinimo vertė:

Int tipo, grąžinkite faktinį laukimo laiką

Iš naujo nustatyti stebėtoją

void WatchdogSAMD:: atstatyti ()

Paskambinkite šia funkcija, kad iš naujo nustatytumėte stebėtojo laikmatį, vadinamą „šuns šėrimu“. Viršijus laukimo laiką be atstatymo, mazgas bus paleistas iš naujo.

Stop budėtojas

void WatchdogSAMD:: išjungti ()

Vartai

Šiame skyriuje mes pristatysime, kaip prisijungti prie „Loriot“serverio.

1 žingsnis: „Loriot Server Gateway“registracija

a) Naujam vartotojui pirmiausia reikia užregistruoti paskyrą, spustelėkite registracijos adresą. Norėdami užsiregistruoti, užpildykite vartotojo vardą, slaptažodį ir el. Pašto adresą, po registracijos jums bus išsiųstas el. Laiškas. Norėdami suaktyvinti, vykdykite el. Laiške pateiktas instrukcijas.

b) Po sėkmingo aktyvinimo spustelėkite čia, kad prisijungtumėte. Numatytoji pakopa yra „Bendrijos tinklas“, ji palaiko 1 šliuzą (RHF2S001) ir 10 mazgų.

c) Įeikite į prietaisų skydelį -> Vartai, spustelėkite Pridėti šliuzą pradėkite pridėti šliuzą.

d) Pasirinkite Raspberry Pi 3

e) Nustatykite taip:

  • Radijo priekinė dalis -> RHF2S001 868/915 MHz (SX1257)
  • Autobusas -> SPI

f) Užpildykite savo RHF2S001 MAC adresą, kuris turėtų būti formatu b8: 27: eb: xx: xx: xx. Taip pat įveskite „Gateway“vietos informaciją.

g) Norėdami baigti registraciją, spustelėkite „Register Raspberry Pi gateway“.

Vaizdas
Vaizdas

h) Spustelėkite registruotą šliuzą, kad įeitumėte į konfigūracijos puslapį, rankiniu būdu perjunkite „Dažnio planą“, čia jūsų planas nustatomas pagal jūsų RHF2S001 tipo tipą, galimas planas yra CN470 , CN473 , CN434 , CN780 , EU868, pasirinkę atnaujinkite puslapį kad gautumėte tikslų kanalą. Šiame wiki mes pasirenkame EU868.

i) Vykdykite komandą glaisto terminale :

cd /home/rxhf/loriot/1.0.2

sudo systemctl sustabdyti 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.

Vaizdas
Vaizdas

2 žingsnis: „Loriot Server Connect Node“įrenginys

a) Gaukite galimus šliuzo kanalus

Dabartinius šliuzo kanalus galima gauti iš prietaisų skydelio -> Vartai -> Jūsų vartai, galite pamatyti galimus kanalus, kaip parodyta paveikslėlyje žemiau.

Vaizdas
Vaizdas

b) „Seeeduino LoRAWAN GPS“(RHF3M076) konfigūracija

Atidarykite „ArduinoIDE“serijinį monitorių, bakstelėkite žemiau esančią komandą.

+ch

Norėdami patvirtinti numatytąjį „Seeeduino_LoRAWAN“GPS kanalą, gausite 3 kanalus. Jei kanalo nėra, galite pakeisti „Seeeduino_LoRAWAN“kanalus naudodami toliau pateiktą komandą.

esant+ch = 0, 868,1

esant+ch = 1, 868,3 esant+ch = 2, 868,5

Tada vėl galite naudoti+ch, kad patikrintumėte.

c) Pridėkite „Seeeduino_LoRAWAN GPS“kaip „ABP NodeLog“Loriot serveryje, spustelėkite „Dash Board“-> „Applications“-> „SimpleApp“. Spustelėkite Import ABP , įvestį po elementais

  • „DevAddr“: „Seeeduino_LoRAWAN GPS“gauna komandą „AT+ID“(Pastaba: „Loriot“nepalaiko dvitaškio jungties, ją reikia pašalinti rankiniu būdu)
  • FCntUp : Nustatykite 1
  • FCntDn : Nustatykite 1
  • NWKSKEY : Numatytoji vertė 2B7E151628AED2A6ABF7158809CF4F3C
  • APPSKEY : Numatytoji vertė 2B7E151628AED2A6ABF7158809CF4F3C
  • EUI, DEVEUI, Seeeduino_LoRAWAN GPS gauna komandą „AT+ID“
Vaizdas
Vaizdas

Spustelėkite Importuoti įrenginį, kad užbaigtumėte įrenginio importavimą. Dabar pasirinkite Dashboard-> Applications -> SampleApp, pamatysite naują ką tik pridėtą ABP Node.

Vaizdas
Vaizdas

d) Siųsti duomenis iš „Seeeduino_LoRAWAN“

DĖMESIO! Tai tik testas.

Grįžkite į serijinį „ArduinoIDE“monitorių, siųskite komandą:

AT+CMSGHEX = "0a 0b 0c 0d 0e"

Tada eikite į prietaisų skydelį -> Programos -> SampleApp -> Įrenginys, spustelėkite „Node Device EUI“arba „DevAddr“, čia rasite ką tik atsiųstus duomenis.

Vaizdas
Vaizdas

Daugiau informacijos rasite šiame wiki.

5 žingsnis: svetainės kūrimas

Susiję įrankiai

  • virtualenv
  • Python3
  • Gunicornas
  • Vadovas
  • Nginx
  • MySQL

Mes naudojame „CentOS7“kaip bandomąją diegimo aplinką

virtualenv

Naudokite virtualenv, kad sukurtumėte savarankišką „python3“gamybos aplinką

a) įdiegti

pip install virtualenv

b) sukurkite „python3“virtualią aplinką

virtualenv -p python3 iotea

c) paleiskite virtualią aplinką ir įveskite iotea katalogą

šaltinio bin/suaktyvinti

d) egzistuoja aplinka

išjungti

Python3

a) įdiegti

yum įdiegti epel-release

yum įdiegti python36

b) įdiekite priklausomą biblioteką PyMySQL, DBUtils, Flask, websocket-client, configparser

pip įdiegti pymysql

pip install dbutils pip install kolba pip install websocket-client pip install configparser

Gunicornas

a) įdiegti („Python3“aplinkoje)

pip install gunicorn

b) vykdyti kolbos projektą („iotea“projektų kataloge)

gunicorn -w 5 -b 0.0.0.0:5000 programa: app

c) paleiskite „websocket-clint“, kad gautumėte loriot duomenų

gunicorn loriot: app

d) peržiūrėti Gunicorn proceso medį

pstree -ap | grep gunicorn

Vadovas

a) įdiegti (root vartotojas)

pip instaliavimo vadovas

b) generuoti konfigūracijos failus

echo_supervisord_conf> /etc/supervisord.conf

c) sukurti katalogą ir įvesti katalogo konfigūraciją

mkdir -p /etc/supervisor/conf.d

Redaguokite /etc/supervisord.conf ir pakeiskite failų lauką, esantį failo pabaigoje esančiame [include].

Atminkite, kad turite pašalinti „;“prieš šias dvi eilutes, tai yra komentaro simbolis.

[įtraukti]

Failai = /etc/supervisor/conf.d/*.conf

Priemonės įvesti /etc/supervisor/conf.d/. Šis konfigūracijos failas naudojamas kaip proceso konfigūracijos failas (prižiūrimas prižiūrėtojo).

d) gaunama konfigūracija („iotea“kataloge)

cp iotea.conf /etc/supervisor/conf.d/

cp loriot.conf /etc/supervisor/conf.d/

e) atvira iotea

superviosrctl reload #reload konfigūracijos failą

superviosrctl start loriot #open loriot data priėmimas superviosrctl start iotea #atidaryti iotea kolbos programą

f) kitos bendros operacijos

supervisorctl reload # iš naujo įkelkite konfigūracijos failą

supervorctl atnaujinimas supervisorctl start xxx supervorctl stop xxx supervorctl status xxx supervorctl help # view more command

Nginx

a) įdiegti

yum įdiegti -y nginx

b) konfigūracija

cp NginxIotea.conf /etc/nginx/conf.d/

c) paleiskite „Nginx“

systemctl start nginx.service

MySQL

a) susiję parametrai

user = 'root'

passwd = '1234' db = 'iotea' prievadas = 3306

b) byla

iotea_iotea.sql

c) konfigūracijos failas

db.ini

Rekomenduojamas: