Sett LoRa IoTea -løsning: 5 trinn
Sett LoRa IoTea -løsning: 5 trinn
Anonim
Så LoRa IoTea Solution
Så LoRa IoTea Solution

Et automatisk system for innsamling av informasjon som brukes på teplantasje. Det er en del av intelligent landbruksinformasjonsinnsamling.

Trinn 1: Ting som brukes i dette prosjektet

Maskinvarekomponenter

  • Grove - Karbondioksidsensor (MH -Z16)
  • Grove - Digital lyssensor
  • Grove - støvsensor (PPD42NS)
  • Grove-oksygensensor (ME2-O2-Ф20)
  • Jordfuktighet og temperatursensor
  • LoRa LoRaWAN Gateway - 868MHz sett med Raspberry Pi 3
  • Grove - Temp & Humi & Barometersensor (BME280)

Programvare -apper og online -tjenester

Microsoft Visual Studio 2015

Trinn 2: Historie

Smart landbruk skal bruke Internet of Things -teknologien på tradisjonelt landbruk, ved hjelp av sensorer og programvare for å kontrollere landbruksproduksjonen via mobile eller datamaskinplattformer, noe som gjør tradisjonelt landbruk mer "smart".

På Mengding -fjellet nordøst for Ya’an, Sichuan, går fjellryggen vest til øst i et grønt hav. Dette er et mest kjent syn for 36 år gamle Deng, en av de få Mengding-te-skaperne i sin generasjon, med en plantasje på 50 mu (= 3,3 hektar) på 1100 meters havnivå. Deng kommer fra en familie av tekokere, men det er ikke en lett oppgave å videreføre arven etter familien. “Teene våre dyrkes i stor høyde i et organisk miljø for å sikre sin utmerkede kvalitet. Men samtidig er veksttettheten lav, kostnadene høye og spirende er ujevn, noe som gjør te vanskelig å høste. Derfor er te på høyfjell normalt små høstinger og verdiene deres gjenspeiles ikke på markedet. I de siste to årene har Deng prøvd å øke forbrukernes bevissthet om te for å fremme verdien. Og da han møtte Fan, som var på utkikk etter en plantasje for å implementere Seeeds IoTea -teknologi, ble det gjort en perfekt match for en løsning. Seeed IoTea-løsningen tar sikte på å hjelpe tebønder med å bedre håndtere plantasjer uten å endre tradisjonell te-dyrking, og presentere miljødata i sanntid fra plantasjene på en åpen plattform.

IoTea består av sensorer, noder og gateways og samler data i sanntid om faktorer som kan påvirke teens kvalitet under dyrking og produksjonsprosesser, inkludert temperatur og fuktighet, CO2, O2, PM og lyseksponering. Dataene samles inn av sensorene, sendes av nodene til gatewayen og til slutt til skyen, og gjøres tilgjengelig for sluttkunder på en webside.

Trinn 3: Maskinvaretilkobling

Trinn 1: Gateway -tilkobling

Gatewayen installeres separat i en eske. Med tanke på varmespredningsproblemet har vi lagt til 2 vifter. Den ene er for Raspberry Pi's varmespredning, den andre er for intern og ekstern luftsirkulasjon. Gateway -boksen er plassert hjemme hos en bonde, så vi trenger ikke å vurdere strømproblemet.

Bilde
Bilde

Trinn 2: Node -tilkobling

Noden er terminal for dataene, og alle de originale dataene er hentet herfra. Det er 6 sensorer koblet til noden. I tillegg til jordfuktighets- og temperatursensoren setter vi andre sensorer inne i lamellboksen.

Bilde
Bilde
Bilde
Bilde

Noden er plassert i en vanntett boks. For å få en bedre tilkobling til noden, lager vi et adapterkort. Til slutt vil vi gi nedlastingslenken til dette brettskjemaet. Som vist nedenfor er sensorens kabler koblet til adapterkortet gjennom rekkeklemmer. Vi bruker 3 MOS -rør (SI2301) til å bygge bryterkretser for å kontrollere av og på sensorer og vifte. Viften brukes til å kjøle seg ned. Vi har en temperatursensor (DS18B20) montert på brettet. Den kan fortelle oss den interne temperaturen på boksen, og deretter bestemmer mikrokontrolleren om den skal slå på viften. Vi bruker flere motstander for å lage en spenningsdelerkrets for å måle bly-syre batterispenning. Til slutt reserverer vi 3 IIC -grensesnitt og seriell port på kortet for senere utvidelse og feilsøking.

Bilde
Bilde

La oss snakke om nodens strømforsyningsproblem. Noden plasseres tilfeldig i teplantasje, så tradisjonell strømforsyningsmetode er ikke lenger aktuelt. Det er en god idé å bruke en solenergiløsning. Det finnes mange løsninger på markedet for tiden. Vi kan velge en av dem som dekker våre behov. Det er 3 deler i løsningen vi valgte: solcellepanel, solcellelader og blybatteri. For å fange solenergien bedre, legger vi solcellepanel på toppen av braketten og justerer vinkelen for å sikre at den vender mot solen. Vi plasserte solar charge controller i den samme boksen med node. Fordi det ikke er ekstra plass inne i esken, måtte vi finne en ny vanntett boks for å plassere blybatteriet.

Bilde
Bilde
Bilde
Bilde
Bilde
Bilde

Trinn 4: Programvarekonfigurasjon

Node

I denne delen vil vi introdusere hovedsakelig programvarekonfigurasjon av node.

DataFormat

Data lastet opp av noden til gatewayen:

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

Betydningen av hver databit:

Lora_data [0] : Lufttemperatur, ℃

Lora_data [1]: Luftfuktighet, %

Lora_data [2]: Høyde over åtte, m

Lora_data [3]: Lav høyde åtte

Lora_data [4]: CO2 -konsentrasjon høy åtte, ppm

Lora_data [5]: CO2 -konsentrasjon lav åtte

Lora_data [6] : Støvkonsentrasjon høy åtte, stk/0.01cf

Lora_data [7]: Støvkonsentrasjon lav åtte

Lora_data [8]: Lysintensitet høy åtte, lux

Lora_data [9]: Lysintensitet lav åtte

Lora_data [10]: O2 -konsentrasjon, % (rådata delt på 1000)

Lora_data [11] : Jordtemperatur, ℃

Lora_data [12]: Jordfuktighet, %

Lora_data [13] : Batterispenning, v

Lora_data [14]: Feilkode for sensorer

Feil kode:

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

Betydningen av hver bit:

bit 0: 1 ---- Temp & Humi & Barometer Sensor (BME280) feil

bit 1: 1 ---- Karbondioksidsensor (MH-Z16) feil

bit 2: 1 ---- Støvføler (PPD42NS) feil

bit 3: 1 ---- Digital lyssensorfeil

bit 4: 1 ---- Oksygensensor (ME2-O2-Ф20) feil

bit 5: 1 ---- Feil i jordfuktighet og temperatursensor

bit 6: Reservert

bit 7: Reservert

Vi har laget en Error_code_transform.exe, åpnet den og tast inn feilkode i heksadesimal, du vil raskt vite hvilken sensor som er feil. Nedlastingskoblingen er på slutten av denne artikkelen.

Parameterjustering: a) Dataoverføringssyklus

// seeedtea.ino

#defineinterval_time 600 // second

Denne parameteren kan varieres for å endre dataoverføringssyklusen. I hver syklus tar datainnsamling omtrent 1 minutt. Så det anbefales ikke å endre denne verdien til mindre enn 60 sekunder.

b) Oppvarmingstid for støvføler

//seeedtea.ino

#definePreheat_time 30000 // DustSensor warm-up time, milliseond //Dust_other.cpp #definesampletime_ms 30000 // samplingtime30s

c) Spenningskoeffisient

//POWER_Ctrl.cpp

#defineBattery_coefficient 0.159864 // ADC value × Battery_coefficient = battery_voltage #defineSolar_coefficient 0.22559 // ADC value × Solar_coefficient = solar_voltage

Disse to parameterne beregnes basert på spenningsdelerkretsen.

d) Vifteåpningstemperaturterskel

//POWER_Ctrl.cpp

#defineFan_start_temp 45 // temperaturgrense #defineFan_start_light 500 // lysintensitet

Når den faktiske temperaturen overskrider terskelen, vil viften begynne å kjøle seg ned.

e) Initialiseringsparameter for O2 -sensor

//Oksygen.cpp

#defineO2_prosent 208.00 //20.8%

f) Makrobryter

//seeedtea.ino

#defineLORA_RUN // Etter kommentaren vil Lora initialisering og dataoverføring stoppe #defineSENSOR_RUN // Etter kommentaren slutter eksterne sensorer å fungere //POWER_Ctrl.cpp #defineFAN_ON // Fortesting only, Praktisk applikasjon må kommenteres /**** *** DS18B20 kontrollmodus **********************/ #defineSlower_Mode // Sakte modus for å sammenstille temperaturen. Kommentar ut er rask modus

g) Pin -kartlegging

D2: LED -indikator og ekstern reset -mikrokontroller IIC: SCL og SDA

//Dust_other.h

#defineDust_pin 3 // Støvføler //CO2.cpp #defineCO2_serial Serial1 // bruk hardwareserial port (D0 & D1) //seeedtea.ino #definedataPin 6 // Jorddatapinne #defineclockPin 7 // Jordklokke pin // POWER_Ctrl. h #defineDS18B20_pin 8 // DS18B20 #defineFan_pin 9 // Fan #defineAir_CtrlPin 10 // Kontrollpinne for sensorene plassert i louverbox #defineSoil_CtrlPin 11 // Jordfuktighets- og temperatursensorbryterpinne #defineBattery_pin A2 // Mål batterispenning #define /Mål solcellepanelspenning //Oksygen.h #defineO2_pin A1 // O2 sensor

h) Watchdog timer

Watchdog -timeren brukes til å overvåke systemets driftsstatus. Når systemet kjører unormalt, blir noden tilbakestilt, slik at den kan kjøre kontinuerlig i lang tid.

Biblioteket det skal refereres til:

  • Adafruit_SleepyDog.h er lagt til i prosjektet
  • Adafruit_ASFcore-master.zip er pakket i prosjektmappen og må legges til manuelt i Arduino IDE.

Relaterte funksjoner:

Aktiver vakthund

int WatchdogSAMD:: enable (int maxPeriodMS, bool isForSleep)

Inngangsparametere:

Int maxPeriodMS: Ventetid i millisekunder. Maksimalt tillatt er 16000 millisekunder.

returverdi:

Int type, returner den faktiske ventetiden

Tilbakestill vakthund

void WatchdogSAMD:: reset ()

Ring denne funksjonen for å tilbakestille vekterhundtimeren, referert til som "å mate hunden." Overskridelse av ventetiden uten tilbakestilling vil føre til at noden starter på nytt.

Stopp vakthund

void WatchdogSAMD:: deaktiver ()

Inngangsport

I denne delen vil vi introdusere hvordan du kobler til Loriot -serveren.

Trinn 1: Registrering av Loriot Server Gateway

a) Ny bruker må registrere en konto først, klikk på registreringsadressen. Fyll inn brukernavn, passord og e -postadresse for å registrere deg. Etter registrering vil en e -post bli sendt til deg. Følg instruksjonene i e -posten for å aktivere.

b) Etter vellykket aktivering, klikk her for å logge på. Standardnivå er "Community Network", den støtter 1 Gateway (RHF2S001) og 10 noder.

c) Skriv inn Dashboard -> Gateway, klikk på Legg til gateway start for å legge til Gateway.

d) Velg Raspberry Pi 3

e) Sett som nedenfor:

  • Radio front -end -> RHF2S001 868/915 MHz (SX1257)
  • BUSS -> SPI

f) Fyll ut MAC -adressen til RHF2S001, skal være i formatet b8: 27: eb: xx: xx: xx. Og legg også inn Gateway Location -informasjon.

g) Klikk "Registrer Raspberry Pi -gateway" for å fullføre registreringen.

Bilde
Bilde

h) Klikk på den registrerte gatewayen for å gå inn på konfigurasjonssiden, bytt “Frekvensplan” manuelt, planen din her avgjøres av typen RHF2S001 -type, tilgjengelig plan er CN470 , CN473 , CN434 , CN780 , EU868. Etter at du har valgt, må du oppdatere siden for å få den nøyaktige kanalen. I denne wikien velger vi EU868.

i) Kjør kommandoen i kittterminalen:

cd /home/rxhf/loriot/1.0.2

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

Bilde
Bilde

Trinn 2: Loriot Server Connect Node -enhet

a) Få de tilgjengelige gateway -kanalene

Gjeldende gateway -kanaler kan hentes fra Dashboard -> Gateway -> Your Gateway, du kan se de tilgjengelige kanalene som bildet nedenfor.

Bilde
Bilde

b) Seeeduino LoRAWAN GPS (RHF3M076) konfigurasjon

Åpne den serielle skjermen til ArduinoIDE, trykk på kommandoen nedenfor.

ved+kap

For å bekrefte standardkanalen til Seeeduino_LoRAWAN GPS, får du 3 kanaler. Hvis det ikke er noen tilgjengelig kanal, kan du endre kanalene til Seeeduino_LoRAWAN med kommandoen nedenfor.

ved+ch = 0, 868,1

ved+lm = 1, 868,3 ved+lm = 2, 868,5

Deretter kan du bruke at+ch igjen for å sjekke.

c) Legg til Seeeduino_LoRAWAN GPS som en ABP NodeLog i Loriot -serveren, klikk på Dash Board -> Programmer -> SimpleApp. Klikk på Importer ABP , -input under elementene

  • DevAddr: Seeeduino_LoRAWAN GPS kommer gjennom "AT+ID" -kommandoen (Merk: Loriot støtter ikke tykktarmskontakt, må fjernes manuelt)
  • FCntUp: Setto 1
  • FCntDn: Setto 1
  • NWKSKEY: Standardverdi 2B7E151628AED2A6ABF7158809CF4F3C
  • APPSKEY: Standardverdi 2B7E151628AED2A6ABF7158809CF4F3C
  • EUI: DEVEUI, Seeeduino_LoRAWAN GPS kommer gjennom "AT+ID" -kommandoen
Bilde
Bilde

Klikk på Importer enhet -knappen for å fullføre enhetsimporten. Velg nå Dashboard-> Applications -> SampleApp, du vil se den nye ABP -noden du nettopp har lagt til.

Bilde
Bilde

d) Send data fra Seeeduino_LoRAWAN

MERK FØLGENDE! Dette er bare en test.

Tilbake til seriell monitor av ArduinoIDE, send kommando:

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

Gå deretter til Dashboard -> Applications -> SampleApp -> Device, klikk på Node Device EUI eller DevAddr, du finner dataene du nettopp har sendt her.

Bilde
Bilde

For detaljer, se denne wikien.

Trinn 5: Nettstedskonstruksjon

Relaterte verktøy

  • virtualenv
  • Python3
  • Gunicorn
  • Veileder
  • Nginx
  • MySQL

Vi bruker CentOS7 som testdistribueringsmiljø

virtualenv

Bruk virtualenv til å bygge et frittstående python3 -produksjonsmiljø

a) installere

pip installere virtualenv

b) opprett et virtuelt python3 -miljø

virtualenv -p python3 iotea

c) start det virtuelle miljøet og skriv inn iotea -katalogen

kildeboks/aktivere

d) eksisterer miljø

deaktivere

Python3

a) installere

yum installer epel-release

yum installer python36

b) installer avhengig bibliotek PyMySQL, DBUtils, Flask, websocket-klient, configparser

pip installer pymysql

pip install dbutils pip install kolbe pip install websocket-client pip install configparser

Gunicorn

a) installer (under Python3 -miljø)

pip installere gunicorn

b) kjør kolbe prosjekt (under iotea prosjektkatalog)

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

c) kjør websocket-clint for å få loriot-data

gunicorn loriot: ca.

d) se Gunicorn -prosess -treet

pstree -ap | grep gunicorn

Veileder

a) installer (rotbruker)

pip install veileder

b) generer konfigurasjonsfiler

echo_supervisord_conf> /etc/supervisord.conf

c) opprett en katalog og innfør en katalogkonfigurasjon

mkdir -p /etc/supervisor/conf.d

Rediger /etc/supervisord.conf og endre filfeltet under [inkludere] på slutten av filen.

Vær oppmerksom på at du må fjerne ';' foran disse to linjene, som er kommentarfeltet.

[inkludere]

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

Betyr å introdusere /etc/supervisor/conf.d/. Følgende konfigurasjonsfil brukes som prosesskonfigurasjonsfil (overvåket av veilederen).

d) innkommende konfigurasjon (under iotea -katalogen)

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

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

e) åpen iotea -servering

superviosrctl last inn #reload konfigurasjonsfilen

superviosrctl start loriot #open loriot data mottak superviosrctl start iotea #åpne iotea kolbe applikasjonen

f) andre vanlige operasjoner

supervisorctl reload # last inn konfigurasjonsfilen på nytt

supervisorctl oppdater supervisorctl start xxx supervisorctl stopp xxx supervisorctl status xxx supervisorctl hjelp # vis mer kommando

Nginx

a) installere

yum installere -y nginx

b) konfigurasjon

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

c) start Nginx

systemctl starter nginx.service

MySQL

a) relaterte parametere

bruker = 'root'

passwd = '1234' db = 'iotea' port = 3306

b) fil

iotea_iotea.sql

c) konfigurasjonsfil

db.ini