Innehållsförteckning:
- Steg 1: Saker som används i detta projekt
- Steg 2: Berättelse
- Steg 3: Maskinvaruanslutning
- Steg 4: Programvarukonfiguration
- Steg 5: Webbplatsbyggande
Video: Såg LoRa IoTea -lösning: 5 steg
2024 Författare: John Day | [email protected]. Senast ändrad: 2024-01-30 12:45
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.
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.
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.
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.
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.
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.
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.
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"
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.
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.
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:
GPU Sag Fixer: 5 steg
GPU Sag Fixer: På många datorer finns GPU -sagning, ett problem där GPU: n är för tung för att PCIen helt ska stödja och som ett resultat är GPU: s ände lägre än slutet som är fastare anslutet i PCI spår. Om GPU -sagningen inte är fixad i tid kommer datorn
Akustisk levitation med Arduino Uno Steg-för-steg (8-steg): 8 steg
Akustisk levitation med Arduino Uno Steg-för-steg (8-steg): ultraljudsgivare L298N Dc kvinnlig adapter strömförsörjning med en manlig DC-pin Arduino UNOBreadboardHur det fungerar: Först laddar du upp kod till Arduino Uno (det är en mikrokontroller utrustad med digital och analoga portar för att konvertera kod (C ++)
Säg hej till - Arduino UNO -: 4 steg
Säg hej till | Arduino UNO |: Första saker först..om du är " verkligen " intresserad av att veta mer om Arduino UNO, sedan är det bara att gå med det, ja det är ganska häftigt :-) hej, vänner i dessa instruktioner Jag kommer att visa dig den grundläggande men intressanta användningen av min nya Arduino
ESP32 med E32-433T LoRa-modulhandledning - LoRa Arduino -gränssnitt: 8 steg
ESP32 med E32-433T LoRa-modulhandledning | LoRa Arduino Interfacing: Hej, vad händer, killar! Akarsh här från CETech.Detta projekt är mitt gränssnitt för E32 LoRa-modulen från eByte som är en högeffekts 1-watts transceiver-modul med en ESP32 som använder Arduino IDE.Vi förstod hur E32 fungerade i vår senaste tutoria
Kontrollera hushållsapparater över LoRa - LoRa i Hemautomation - LoRa fjärrkontroll: 8 steg
Kontrollera vitvaror över LoRa | LoRa i Hemautomation | LoRa fjärrkontroll: Styr och automatisera dina elektriska apparater från långa avstånd (kilometer) utan att det finns internet. Detta är möjligt genom LoRa! Hej, vad händer, killar? Akarsh här från CETech. Denna kretskort har också en OLED -display och 3 reläer som en