Innehållsförteckning:

Såg LoRa IoTea -lösning: 5 steg
Såg LoRa IoTea -lösning: 5 steg

Video: Såg LoRa IoTea -lösning: 5 steg

Video: Såg LoRa IoTea -lösning: 5 steg
Video: Femårige Osman rappar i Talang 2018 2024, November
Anonim
Har sett LoRa IoTea -lösning
Har sett LoRa IoTea -lösning

Ett automatiskt system för insamling av information som tillämpas på teplantage. Det är en del av intelligent jordbruksinformationsinsamling.

Steg 1: Saker som används i detta projekt

Hårdvarukomponenter

  • Grove - koldioxidgivare (MH -Z16)
  • Grove - Digital ljussensor
  • Grove - Dammsensor (PPD42NS)
  • Grove-Oxygen Sensor (ME2-O2-Ф20)
  • Jordfuktighet och temperatursensor
  • LoRa LoRaWAN Gateway - 868MHz -kit med Raspberry Pi 3
  • Grove - Temp & Humi & Barometersensor (BME280)

Programvaruappar och onlinetjänster

Microsoft Visual Studio 2015

Steg 2: Berättelse

Smart jordbruk är att tillämpa Internet of Things -tekniken på traditionellt jordbruk, med hjälp av sensorer och programvara för att styra jordbrukets produktion via mobila eller datorplattformar, vilket gör det traditionella jordbruket mer "smart".

På Mengdingberget nordost om Ya’an, Sichuan, löper bergskammen väst mot öst i ett grönt hav. Detta är en mycket bekant syn för 36-åriga Deng, en av de få Mengding-tebryggarna i hans generation, med en plantage på 50mu (= 3,3 hektar) belägen på 1100 m ovan havsnivå. Deng kommer från en familj av tebryggare, men det är ingen lätt uppgift att fortsätta med arvet från familjen.”Våra teer odlas på hög höjd i en organisk miljö för att säkerställa dess utmärkta kvalitet. Men samtidigt är tillväxttätheten låg, kostnaden hög och spirande är ojämn, vilket gör te svårt att skörda. Det är därför högfjällste är normalt små skördar och deras värden återspeglas inte på marknaden.” Under de senaste två åren har Deng försökt öka konsumenternas medvetenhet om te för högt berg för att främja deras värde. Och när han träffade Fan, som letade efter en plantage för att implementera Seeeds IoTea -teknik, gjordes en perfekt matchning för en lösning. Seeed IoTea-lösningen syftar till att hjälpa tebönder att bättre hantera plantager utan att ändra de traditionella metoderna för teodling och att presentera miljödata i realtid från plantagerna på en öppen plattform.

IoTea består av sensorer, noder och gateways och samlar data i realtid om faktorer som kan påverka teets kvalitet under odlings- och produktionsprocesser, inklusive temperatur och luftfuktighet, CO2, O2, PM och ljusexponering. Data samlas in av sensorerna, skickas av noder till gatewayen och så småningom till molnet och görs tillgängliga för slutkunder på en webbsida.

Steg 3: Maskinvaruanslutning

Steg 1: Gateway -anslutning

Gatewayen installeras separat i en låda. Med tanke på värmeavledningsproblemet lade vi till 2 fläktar. Den ena är för Raspberry Pi: s värmeavledning, den andra är för intern och extern luftcirkulation. Gatewayboxen placeras i ett bondes hem, så vi behöver inte överväga dess strömproblem.

Bild
Bild

Steg 2: Nodanslutning

Noden är terminal för data, och alla originaldata erhålls härifrån. Det finns 6 sensorer anslutna till noden. Förutom jordfuktigheten och temperatursensorn sätter vi andra sensorer inuti lamellboxen.

Bild
Bild
Bild
Bild

Noden placeras i en vattentät låda. För att få en bättre anslutning till noden gör vi ett adapterkort. Till sist kommer vi att tillhandahålla den här schematiska nedladdningslänken. Som visas nedan är sensorkablarna anslutna till adapterkortet via plintar. Vi använder 3 MOS -rör (SI2301) för att bygga omkopplare för att styra av och på sensorer och fläktar. Fläkten används för att svalna. Vi har en temperatursensor (DS18B20) monterad på kortet. Det kan berätta för oss lådans inre temperatur och sedan bestämmer mikrokontrollern om fläkten ska slås på. Vi använder flera motstånd för att göra en spänningsdelare för att mäta bly-syra batterispänning. Slutligen reserverar vi 3 IIC -gränssnitt och serieport på kortet för senare expansion och felsökning.

Bild
Bild

Låt oss prata om nodens strömförsörjningsproblem. Noden placeras slumpmässigt i teplantage, så traditionell strömförsörjningsmetod är inte längre tillämplig. Att använda en solkraftslösning är en bra idé. Det finns många lösningar på marknaden för närvarande. Vi kan välja en av dem som uppfyller våra behov. Det finns 3 delar i den lösning vi valde: solpanel, solcellsladdare och blybatteri. För att fånga solenergin bättre lägger vi solpanel på toppen av fästet och justerar dess vinkel för att se till att den vetter mot solen. Vi placerade solenergiladdningsregulatorn i samma låda med nod. Eftersom det inte finns något extra utrymme inuti lådan, var vi tvungna att hitta en ny vattentät låda för att placera blybatteriet.

Bild
Bild
Bild
Bild
Bild
Bild

Steg 4: Programvarukonfiguration

Nod

I detta avsnitt kommer vi att introducera huvudsakligen mjukvarukonfigurationen av noden.

Dataformat

Data som laddas upp av noden till gatewayen:

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

Betydelsen av varje databit:

Lora_data [0] : Lufttemperatur, ℃

Lora_data [1]: Luftfuktighet, %

Lora_data [2]: Höjd hög åtta, m

Lora_data [3]: Höjd låg åtta

Lora_data [4]: CO2 -koncentration hög åtta, ppm

Lora_data [5]: CO2 -koncentration låg åtta

Lora_data [6] : Dammkoncentration hög åtta, st/0.01cf

Lora_data [7]: Dammkoncentration låg åtta

Lora_data [8]: Ljusintensitet hög åtta, lux

Lora_data [9]: Ljusintensitet låg åtta

Lora_data [10]: O2 -koncentration, % (rådata dividerat med 1000)

Lora_data [11] : Jordtemperatur, ℃

Lora_data [12] : Jordfuktighet, %

Lora_data [13] : Batterispänning, v

Lora_data [14] : Felkod för sensorer

Felkod:

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

Betydelsen av varje bit:

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

bit 1: 1 ---- Koldioxid sensor (MH-Z16) fel

bit 2: 1 ---- Dammsensor (PPD42NS) fel

bit 3: 1 ---- Digital ljussensorfel

bit 4: 1 ---- Oxygen Sensor (ME2-O2-Ф20) fel

bit 5: 1 ---- Fel i jordfuktighet och temperatursensor

bit 6: reserverad

bit 7: reserverad

Vi har gjort en Error_code_transform.exe, öppnat den och matat in felkoden i hexadecimal, du kommer snabbt att veta vilken sensor som är fel. Nedladdningslänk finns i slutet av denna artikel.

Parameterjustering: a) Dataöverföringscykel

// seeedtea.ino

#defineinterval_time 600 // second

Denna parameter kan varieras för att ändra dataöverföringscykeln. I varje cykel tar datainsamling cirka 1 minut. Så det rekommenderas inte att ändra detta värde till mindre än 60 sekunder.

b) Uppvärmningstid för dammsensor

//seeedtea.ino

#definePreheat_time 30000 // DustSensor-uppvärmningstid, millisekund //Dust_other.cpp #definesampletime_ms 30000 // samplingtime30s

c) Spänningskoefficient

//POWER_Ctrl.cpp

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

Dessa två parametrar beräknas baserat på spänningsdelarkretsen.

d) Tröskelvärde för fläktöppningstemperatur

//POWER_Ctrl.cpp

#defineFan_start_temp 45 // temperaturgräns #defineFan_start_light 500 // ljusintensitet

När den faktiska temperaturen överskrider tröskeln börjar fläkten svalna.

e) Initialiseringsparameter för O2 -sensor

//Oxygen.cpp

#defineO2_procent 208.00 //20.8%

f) Makrobrytare

//seeedtea.ino

#defineLORA_RUN // Efter kommentaren kommer Lora -initialisering och dataöverföring att avbryta #defineSENSOR_RUN // Efter kommentaren slutar externa sensorer att fungera //POWER_Ctrl.cpp #defineFAN_ON // Fortesting only, Praktisk applikation behöver kommenteras /**** *** DS18B20 kontrolläge **********************/ #defineSlower_Mode // Långsamt läge för att nå temperaturen. Kommentar ut är snabbt läge

g) Stiftkartläggning

D2: LED -indikator och extern återställningsmikrokontroller IIC: SCL och SDA

//Stoft_other.h

#defineDust_pin 3 // Dammsensor //CO2.cpp #defineCO2_serial Ser1 h #definieraDS18B20_pin 8 // DS18B20 #defineFan_pin 9 // Fläkt #defineAir_CtrlPin 10 // Kontrollstift för sensorerna placerade i louverbox #defineSoil_CtrlPin 11 // Jordfuktighets- och temperatursensorns stift #defineBattery_pin A2 // Mät batterispänning #define /Mät solpanelspänning //Oxygen.h #defineO2_pin A1 // O2 sensor

h) Watchdog -timer

Vakthundstimern används för att övervaka systemets driftsstatus. När systemet körs onormalt kommer noden att återställas, så att det kan köra kontinuerligt under en lång tid.

Biblioteket som ska refereras:

  • Adafruit_SleepyDog.h har lagts till i projektet
  • Adafruit_ASFcore-master.zip är förpackat i projektmappen och måste läggas till manuellt i Arduino IDE.

Relaterade funktioner:

Aktivera vakthund

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

Ingångsparametrar:

Int maxPeriodMS: Väntetid i millisekunder. Den högsta tillåtna är 16000 millisekunder.

returvärde:

Int typ, returnera den faktiska väntetiden

Återställ vakthund

void WatchdogSAMD:: reset ()

Ring den här funktionen för att återställa vakthundstimern, kallad "mata hunden". Om du överskrider väntetiden utan återställning kommer noden att startas om.

Stoppa vakthund

void WatchdogSAMD:: inaktivera ()

Inkörsport

I det här avsnittet kommer vi att presentera hur du ansluter till Loriot -servern.

Steg 1: Registrering av Loriot Server Gateway

a) Ny användare måste först registrera ett konto, klicka på registreringsadressen. Fyll i användarnamn, lösenord och e -postadress för att registrera dig, efter registrering skickas ett e -postmeddelande till dig, följ instruktionerna i e -postmeddelandet för att aktivera.

b) Efter lyckad aktivering, klicka här för att logga in. Standardnivå är "Community Network", det stöder 1 Gateway (RHF2S001) och 10 noder.

c) Ange instrumentpanelen -> Gateway, klicka på Lägg till gateway start för att lägga till Gateway.

d) Välj Raspberry Pi 3

e) Ställ in enligt nedan:

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

f) Fyll i MAC -adressen för din RHF2S001, bör vara i formatet b8: 27: eb: xx: xx: xx. Och ange även Gateway Location -information.

g) Klicka på "Registrera Raspberry Pi -gateway" för att avsluta registreringen.

Bild
Bild

h) Klicka på den registrerade gatewayen för att komma in på konfigurationssidan, växla “Frekvensplan” manuellt, din plan här avgörs av typen av din RHF2S001 -typ, tillgänglig plan är CN470 , CN473 , CN434 , CN780 , EU868, efter vald, uppdatera sidan för att få den exakta kanalen. I denna wiki väljer vi EU868.

i) Kör kommandot i kittterminalen:

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.

Bild
Bild

Steg 2: Loriot Server Connect Node -enhet

a) Skaffa tillgängliga gateway -kanaler

Nuvarande gateway -kanaler kan hämtas från Dashboard -> Gateway -> Your Gateway, du kan se de tillgängliga kanalerna som bilden nedan.

Bild
Bild

b) Seeeduino LoRAWAN GPS (RHF3M076) konfiguration

Öppna den seriella bildskärmen för ArduinoIDE, tryck på kommandot nedan.

vid+ch

För att bekräfta standardkanalen för din Seeeduino_LoRAWAN GPS får du 3 kanaler. Om det inte finns någon tillgänglig kanal kan du ändra kanalerna i Seeeduino_LoRAWAN med kommandot nedan.

vid+ch = 0, 868,1

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

Sedan kan du använda at+ch igen för att kontrollera.

c) Lägg till Seeeduino_LoRAWAN GPS som en ABP NodeLog i Loriot -servern, klicka på Dash Board -> Program -> SimpleApp. Klicka på Importera ABP , -ingång nedanför objekt

  • DevAddr: Seeeduino_LoRAWAN GPS kommer igenom "AT+ID" -kommandot (Obs: Loriot stöder inte kolonkontakt, måste tas bort manuellt)
  • FCntUp: Setto 1
  • FCntDn: Setto 1
  • NWKSKEY : Standardvärde 2B7E151628AED2A6ABF7158809CF4F3C
  • APPSKEY: Standardvärde 2B7E151628AED2A6ABF7158809CF4F3C
  • EUI: DEVEUI, Seeeduino_LoRAWAN GPS kommer igenom kommandot "AT+ID"
Bild
Bild

Klicka på knappen Importera enhet för att avsluta enhetsimporten. Välj nu Dashboard-> Applications -> SampleApp, du kommer att se den nya ABP -noden du just har lagt till.

Bild
Bild

d) Skicka data från Seeeduino_LoRAWAN

UPPMÄRKSAMHET! Detta är bara ett test.

Tillbaka till seriell bildskärm för ArduinoIDE, skicka kommando:

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

Gå sedan till Dashboard -> Program -> SampleApp -> Device, klicka på Node Device EUI eller DevAddr, du hittar data du just skickat hit.

Bild
Bild

Mer information finns i denna wiki.

Steg 5: Webbplatsbyggande

Relaterade verktyg

  • virtualenv
  • Python3
  • Gunicorn
  • Handledare
  • Nginx
  • MySQL

Vi använder CentOS7 som testdistributionsmiljö

virtualenv

Använd virtualenv för att bygga en fristående python3 -produktionsmiljö

a) installera

pip installera virtualenv

b) skapa en virtuell python3 -miljö

virtualenv -p python3 iotea

c) starta den virtuella miljön och ange iotea -katalogen

källfack/aktivera

d) existera miljö

avaktivera

Python3

a) installera

yum installera epel-release

yum installera python36

b) installera beroende bibliotek PyMySQL, DBUtils, Flask, websocket-klient, configparser

pip installera pymysql

pip install dbutils pip install kolv pip install websocket-client pip install configparser

Gunicorn

a) installera (under Python3 -miljö)

pip installera gunicorn

b) köra kolvprojekt (under iotea -projektkatalogen)

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

c) kör websocket-clint för att få loriot-data

gunicorn loriot: app

d) visa Gunicorn process tree

pstree -ap | grep gunicorn

Handledare

a) installera (root -användare)

pip install supervisor

b) generera konfigurationsfiler

echo_supervisord_conf> /etc/supervisord.conf

c) skapa en katalog och introducera en katalogkonfiguration

mkdir -p /etc/supervisor/conf.d

Redigera /etc/supervisord.conf och ändra filfältet under [inkludera] i slutet av filen.

Observera att du måste ta bort ';' framför dessa två rader, vilket är kommentarskaraktären.

[omfatta]

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

Innebär att införa /etc/supervisor/conf.d/. Följande konfigurationsfil används som processkonfigurationsfil (övervakad av handledaren).

d) inkommande konfiguration (under iotea -katalogen)

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

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

e) öppen iotea servering

superviosrctl ladda om #ladda om konfigurationsfilen

superviosrctl start loriot #open loriot datamottagning superviosrctl start iotea #öppna iotea -kolvprogrammet

f) Övrig gemensam verksamhet

supervisorctl reload # ladda om konfigurationsfilen

supervisorctl uppdatera supervisorctl start xxx supervisorctl stop xxx supervisorctl status xxx supervisorctl hjälp # visa mer kommando

Nginx

a) installera

yum installera -y nginx

b) konfiguration

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

c) starta Nginx

systemctl startar nginx.service

MySQL

a) relaterade parametrar

user = 'root'

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

b) fil

iotea_iotea.sql

c) konfigurationsfil

db.ini

Rekommenderad: