Inhoudsopgave:
- Stap 1: Dingen die in dit project worden gebruikt
- Stap 2: Verhaal
- Stap 3: Hardwareverbinding
- Stap 4: Softwareconfiguratie
- Stap 5: Website bouw
Video: Seeed LoRa IoTea-oplossing - Ajarnpa
2024 Auteur: John Day | [email protected]. Laatst gewijzigd: 2024-01-30 11:17
Een automatisch informatieverzamelsysteem toegepast op theeplantages. Het maakt deel uit van het intelligent verzamelen van landbouwinformatie.
Stap 1: Dingen die in dit project worden gebruikt
Hardware onderdelen
- Grove - Kooldioxidesensor (MH-Z16)
- Grove - Digitale lichtsensor
- Grove - Stofsensor (PPD42NS)
- Grove - Zuurstofsensor (ME2-O2-Ф20)
- Bodemvocht- en temperatuursensor
- LoRa LoRaWAN Gateway - 868MHz Kit met Raspberry Pi 3
- Grove - Temperatuur&Humi&Barometer Sensor (BME280)
Software-apps en online services
Microsoft Visual Studio 2015
Stap 2: Verhaal
Slimme landbouw is het toepassen van de Internet of Things-technologie op traditionele landbouw, waarbij sensoren en software worden gebruikt om de landbouwproductie te regelen via mobiele of computerplatforms, waardoor traditionele landbouw 'slimmer' wordt.
Op de Mengding-berg ten noordoosten van Ya'an, Sichuan, loopt de bergrug van west naar oost in een zee van groen. Dit is een zeer bekend gezicht voor de 36-jarige Deng, een van de weinige Mengding-theemakers van zijn generatie, met een plantage van 50 mu (= 3,3 hectare) op 1100 meter boven zeeniveau. Deng komt uit een familie van theemakers, maar het voortzetten van de familie-erfenis is geen gemakkelijke taak. “Onze theesoorten worden op grote hoogte in een biologische omgeving verbouwd om de uitstekende kwaliteit te garanderen. Maar tegelijkertijd is de groeidichtheid laag, zijn de kosten hoog en is de knop ongelijkmatig, waardoor het moeilijk is om thee te oogsten. Dat is de reden waarom thee uit de hoge bergen normaal gesproken kleine oogsten zijn en hun waarden niet worden weerspiegeld op de markt. De afgelopen twee jaar heeft Deng geprobeerd de consument bewust te maken van high mountain tea om de waarde ervan te promoten. En toen hij Fan ontmoette, die op zoek was naar een plantage om de IoTea-technologie van Seeed te implementeren, werd een perfecte match gemaakt voor een oplossing. De Seeed IoTea-oplossing is bedoeld om theeboeren te helpen plantages beter te beheren zonder de traditionele praktijken van theeteelt te veranderen, en om realtime milieugegevens van de plantages op een open platform te presenteren.
IoTea bestaat uit sensoren, knooppunten en gateways en verzamelt realtime gegevens over factoren die de kwaliteit van thee tijdens teelt- en productieprocessen kunnen beïnvloeden, waaronder temperatuur en vochtigheid, CO2, O2, PM en blootstelling aan licht. De data wordt door de sensoren verzameld, door de nodes naar de gateway en uiteindelijk naar de cloud gestuurd en op een webpagina toegankelijk gemaakt voor eindklanten.
Stap 3: Hardwareverbinding
Stap 1: Gateway-verbinding
De gateway wordt apart in een doos geïnstalleerd. Gezien het probleem met de warmteafvoer hebben we 2 ventilatoren toegevoegd. De ene is voor de warmteafvoer van de Raspberry Pi, de andere voor de interne en externe luchtcirculatie. De gatewaybox wordt in het huis van een boer geplaatst, dus we hoeven geen rekening te houden met het stroomprobleem.
Stap 2: Knooppuntverbinding
Het knooppunt is de terminal van de gegevens en alle originele gegevens worden hier verkregen. Er zijn 6 sensoren aangesloten op het knooppunt. Naast de bodemvocht- en temperatuursensor plaatsen we andere sensoren in de louverbox.
Node wordt in een waterdichte doos geplaatst. Om een betere verbinding met de node te krijgen maken we een adapter board. Als laatste zullen we de downloadlink van dit bord geven. Zoals hieronder wordt getoond, worden de kabels van sensoren via klemmenblokken op de adapterkaart gestoken. We gebruiken 3 MOS-buizen (SI2301) om schakelcircuits te bouwen om het in- en uitschakelen van sensoren en ventilator te regelen. Ventilator wordt gebruikt om af te koelen. We hebben een temperatuursensor (DS18B20) op het bord gemonteerd. Het kan ons de interne temperatuur van de doos vertellen en vervolgens beslist de microcontroller of de ventilator moet worden ingeschakeld. We gebruiken verschillende weerstanden om een spanningsdelercircuit te maken om de loodzuuraccuspanning te meten. Ten slotte reserveren we 3 IIC-interfaces en seriële poort op het bord voor latere uitbreiding en foutopsporing.
Laten we het hebben over het voedingsprobleem van het knooppunt. Het knooppunt wordt willekeurig in theeplantages geplaatst, dus de traditionele voedingsmethode is niet langer van toepassing. Het gebruik van een oplossing voor zonne-energie is een goed idee. Er zijn momenteel veel oplossingen op de markt. We kunnen er een selecteren die aan onze behoeften voldoet. Er zijn 3 onderdelen in de oplossing die we hebben gekozen: zonnepaneel, zonnelaadcontroller en loodzuurbatterij. Om de zonne-energie beter op te vangen, plaatsen we het zonnepaneel op de bovenkant van de beugel en passen we de hoek aan om ervoor te zorgen dat het naar de zon is gericht. We hebben de zonnelaadcontroller in dezelfde doos met knooppunt geplaatst. Omdat er geen extra ruimte in de doos is, moesten we op zoek naar een nieuwe waterdichte doos om de loodzuurbatterij te plaatsen.
Stap 4: Softwareconfiguratie
Knooppunt
In deze sectie zullen we de voornamelijk softwareconfiguratie van node.
Data formaat
Gegevens geüpload door het knooppunt naar de gateway:
niet-ondertekend char Lora_data[15] ={0, 1, 2, 3,, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14};
Betekenis van elk databit:
Lora_data[0] :Luchttemperatuur, ℃
Lora_data[1] :Luchtvochtigheid, %
Lora_data[2] :Altitude high eight, m
Lora_data[3] :Altitude low eight
Lora_data[4] :CO2-concentratie hoge acht, ppm
Lora_data[5] :CO2-concentratie laag acht
Lora_data[6] :Stofconcentratie hoog acht, stuks/0.01cf
Lora_data[7] :Stofconcentratie laag acht
Lora_data[8] :Lichtintensiteit hoog acht, lux
Lora_data[9] :Lichtintensiteit laag acht
Lora_data[10] :O2-concentratie, % (onbewerkte gegevens gedeeld door 1000)
Lora_data[11] :Bodemtemperatuur, ℃
Lora_data[12] :Bodemvochtigheid, %
Lora_data[13] :Batterijspanning, v
Lora_data[14] (foutcode sensoren)
Foutcode:
Lora_data[14] = [bit7, bit6, bit5, bit4, bit3, bit2, bit1, bit0]
Betekenis van elk bit:
bit 0: 1----Temp & Humi & Barometer Sensor (BME280) fout
bit 1: 1---- Kooldioxide Sensor (MH-Z16) fout
bit 2: 1---- Stofsensor (PPD42NS (fout)
bit 3: 1---- Fout digitale lichtsensor
bit 4: 1---- Zuurstofsensor (ME2-O2-Ф20) fout
bit 5: 1---- Bodemvocht- en temperatuursensorfout
bit 6: Gereserveerd
bit 7: Gereserveerd
We hebben een Error_code_transform.exe gemaakt, open deze en voer de foutcode in hexadecimaal in, u weet snel welke sensor de fout heeft. De downloadlink staat aan het einde van dit artikel.
Parametrering: a) Datatransmissiecyclus:
// seeedtea.ino
#defineinterval_time 600 //seconde
Deze parameter kan worden gevarieerd om de datatransmissiecyclus te wijzigen. In elke cyclus duurt het verzamelen van gegevens ongeveer 1 minuut. Het wordt dus niet aanbevolen om deze waarde te wijzigen in minder dan 60 seconden.
b) Opwarmtijd van de stofsensor
//seeedtea.ino
#definePreheat_time 30000 //DustSensor opwarmtijd, milliseconden //Dust_other.cpp #definesampletime_ms 30000 //samplingtime30s
c) Spanningscoëfficiënt:
//POWER_Ctrl.cpp
#defineBattery_coefficient 0.159864 //ADC-waarde× Battery_coefficient = battery_voltage #defineSolar_coefficient 0.22559 //ADC-waarde × Solar_coefficient = solar_voltage
Deze twee parameters worden berekend op basis van het spanningsdelercircuit.
d)Drempel voor openingstemperatuur ventilator
//POWER_Ctrl.cpp
#defineFan_start_temp 45 //temperatuurdrempel #defineFan_start_light 500 //lichtintensiteit
Wanneer de werkelijke temperatuur de drempel overschrijdt, begint de ventilator af te koelen.
e)O2-sensor initialisatie parameter
//Zuurstof.cpp
#defineO2_percentage 208,00 //20,8%
f) Macroschakelaar
//seeedtea.ino
#defineLORA_RUN //Na de opmerking stopt Lora-initialisatie en gegevensoverdracht #defineSENSOR_RUN //Na de opmerking werken externe sensoren niet meer //POWER_Ctrl.cpp #defineFAN_ON //Alleen voor testen, praktische toepassing moet worden verwijderd /**** ***DS18B20-regelmodus *********************/ #defineSlower_Mode // Langzame modus om de temperatuur te krijgen. Reactie uit is snelle modus
g)Pintoewijzing
D2: LED-indicator en externe reset-microcontrollerIIC: SCL en SDA
//Dust_other.h
#defineDust_pin 3 //Stofsensor //CO2.cpp #defineCO2_serial Serial1 //use hardwareserial port (D0 & D1) //seeedtea.ino #definedataPin 6 //Bodemgegevenspin #defineclockPin 7 //Bodemklokpin //POWER_Ctrl. h #defineDS18B20_pin 8 //DS18B20 #defineFan_pin 9 //Fan #defineAir_CtrlPin 10 // Control pin voor de sensoren geplaatst in louverbox #defineSoil_CtrlPin 11 // Soil Moisture & Temperature Sensor switch pin #defineBattery_pin A2 // Meet accuspanning #defineSolar_pin A3 /Meet spanning zonnepaneel //Zuurstof.h #defineO2_pin A1 //O2 sensor
h)Watchdog-timer
De watchdog-timer wordt gebruikt om de werkingsstatus van het systeem te controleren. Wanneer het systeem abnormaal werkt, wordt het knooppunt gereset, zodat het lange tijd continu kan werken.
De bibliotheek waarnaar verwezen moet worden:
- Adafruit_SleepyDog.h is toegevoegd aan het project
- Adafruit_ASFcore-master.zip is verpakt in de projectmap en moet handmatig worden toegevoegd aan de Arduino IDE.
Gerelateerde functies:
Waakhond inschakelen
int WatchdogSAMD::enable(int maxPeriodMS, bool isForSleep)
Invoerparameters:
Int maxPeriodMS: Wachttijd in milliseconden. Het maximaal toegestane is 16000 milliseconden.
winstwaarde:
Int type, retourneer de werkelijke wachttijd
Waakhond resetten
void WatchdogSAMD::reset()
Roep deze functie op om de waakhondtimer opnieuw in te stellen, ook wel 'de hond voeren' genoemd. Als de wachttijd zonder reset wordt overschreden, wordt het knooppunt opnieuw opgestart.
Stop waakhond
void WatchdogSAMD::disable()
poort
In deze sectie zullen we introduceren hoe u verbinding kunt maken met de Loriot-server.
Stap 1: Loriot Server Gateway-registratie
a) Nieuwe gebruiker moet eerst een account registreren, klik op registratieadres. Vul gebruikersnaam, wachtwoord en e-mailadres in om u te registreren, na registratie wordt een e-mail naar u verzonden, volg de instructies in de e-mail om te activeren.
b) Na succesvolle activering, klik hier om in te loggen. Standaardlaag is "Community Network", het ondersteunt 1 Gateway (RHF2S001) en 10 nodes.
c) Ga naar Dashboard -> Gateway, klik op Gateway toevoegen om Gateway toe te voegen.
d) Selecteer Raspberry Pi 3
e) Stel in zoals hieronder:
- Radio front-end -> RHF2S001 868/915 MHz (SX1257)
- BUS -> SPI
f) Vul het MAC-adres van uw RHF2S001 in, moet in het formaat b8:27:eb:xx:xx:xx zijn. En voer ook Gateway Locatie-informatie in.
g) Klik op "Register Raspberry Pi gateway" om de registratie te voltooien.
h) Klik op de geregistreerde gateway om de configuratiepagina te openen, schakel handmatig over naar "Frequentieplan", uw plan hier wordt bepaald door het type van uw RHF2S001-type, het beschikbare abonnement is CN470, CN473, CN434, CN780, EU868, vernieuw na het selecteren de pagina om het exacte kanaal te krijgen. In deze wiki kiezen we voor EU868.
i) Voer de opdracht uit in de putty-terminal:
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.
Stap 2: Loriot Server Connect Node-apparaat
a) Verkrijg de beschikbare gateway-kanalen
Huidige gateway-kanalen kunnen worden verkregen via Dashboard -> Gateway -> Uw gateway, u kunt de beschikbare kanalen zien zoals op de onderstaande afbeelding.
b) Seeeduino LoRAWAN GPS (RHF3M076) Configuratie:
Open de seriële monitor van ArduinoIDE, tik op het onderstaande commando.
at+ch
Om het standaardkanaal van uw Seeeduino_LoRAWAN GPS te bevestigen, krijgt u 3 kanalen. Als er geen kanaal beschikbaar is, kunt u de kanalen van Seeeduino_LoRAWAN wijzigen met het onderstaande commando.
op+ch=0, 868.1
bij+ch=1, 868,3 bij+ch=2, 868.5
Dan kun je at+ch opnieuw gebruiken om te controleren.
c) Voeg Seeeduino_LoRAWAN GPS toe als een ABP NodeLog in Loriot-server, klik op Dashboard -> Toepassingen -> SimpleApp. Klik op ABP importeren (vul onderstaande items in)
- DevAddr: Seeeduino_LoRAWAN GPS doorloopt de opdracht "AT+ID" (Opmerking: Loriot ondersteunt geen dubbele puntconnector, moet handmatig worden verwijderd)
- FCntUp:Setto 1
- FCntDn:Setto 1
- NWKSKEY:Standaardwaarde 2B7E151628AED2A6ABF7158809CF4F3C
- APPSKEY:Standaardwaarde 2B7E151628AED2A6ABF7158809CF4F3C
- EUI:DEVEUI, Seeeduino_LoRAWAN GPS krijgen door "AT+ID" commando
Klik op de knop Apparaat importeren om het importeren van het apparaat te voltooien. Kies nu Dashboard-> Applicaties -> SampleApp, je ziet de nieuwe ABP Node die je zojuist hebt toegevoegd.
d) Gegevens verzenden vanuit Seeeduino_LoRAWAN
AANDACHT! Dit is slechts een proef.
Terug naar seriële monitor van ArduinoIDE, stuur commando:
AT+CMSGHEX="0a 0b 0c 0d 0e"
Ga dan naar Dashboard -> Toepassingen -> SampleApp -> Apparaat, klik op de Node Device EUI of DevAddr, u vindt hier de gegevens die u zojuist heeft verzonden.
Raadpleeg deze wiki voor meer informatie.
Stap 5: Website bouw
Gerelateerde tools
- virtueel
- Python3
- Gunicorn
- Leidinggevende
- Nginx
- MySQL
We gebruiken CentOS7 als testimplementatieomgeving
virtueel
Gebruik virtualenv om een zelfstandige python3-productieomgeving te bouwen
a) installeren
pip virtualenv installeren
b) een virtuele python3-omgeving maken
virtualenv -p python3 iotea
c) start de virtuele omgeving en voer de iotea-map in
bron bin/activeren
d) bestaande omgeving
deactiveren
Python3
a) installeren
yum installeer epel-release
yum installeer python36
b) installeer afhankelijke bibliotheek PyMySQL, DBUtils, Flask, websocket-client, configparser
pip installeer pymysql
pip install dbutils pip install flask pip install websocket-client pip install configparser
Gunicorn
a) installeren (onder Python3-omgeving)
pip installeer gunicorn
b) voer het kolfproject uit (onder de iotea-projectdirectory)
gunicorn -w 5 -b 0.0.0.0:5000 app:app
c) voer websocket-clint uit om loriot-gegevens te krijgen
gunicorn loriot:app
d) Gunicorn-procesboom bekijken
pstree -ap|grep gunicorn
Leidinggevende
a) installeren (rootgebruiker)
pip install supervisor
b) configuratiebestanden genereren
echo_supervisord_conf > /etc/supervisord.conf
c) maak een map aan en introduceer een mapconfiguratie
mkdir -p /etc/supervisor/conf.d
Bewerk /etc/supervisord.conf en wijzig het bestandenveld onder [include] aan het einde van het bestand.
Merk op dat u de ';' moet verwijderen voor deze twee regels, het commentaarteken.
[erbij betrekken]
Bestanden = /etc/supervisor/conf.d/*.conf
Middelen om /etc/supervisor/conf.d/ te introduceren. Het volgende configuratiebestand wordt gebruikt als het procesconfiguratiebestand (bewaakt door de supervisor).
d) inkomende configuratie (onder iotea-map)
cp iotea.conf /etc/supervisor/conf.d/
cp loriot.conf /etc/supervisor/conf.d/
e) open iotea serveren
superviosrctl reload #reload het configuratiebestand
superviosrctl start loriot #open loriot data-ontvangst superviosrctl start iotea #open de iotea-kolftoepassing
f) andere veel voorkomende bewerkingen
supervisorctl reload # herlaad het configuratiebestand
supervisorctl update supervisorctl start xxx supervisorctl stop xxx supervisorctl status xxx supervisorctl help # bekijk meer commando
Nginx
a) installeren
yum install -y nginx
b) configuratie
cp NginxIotea.conf /etc/nginx/conf.d/
c) start Nginx
systemctl start nginx.service
MySQL
a) gerelateerde parameters
gebruiker='root'
passwd='1234' db='iotea' poort=3306
b) bestand
iotea_iotea.sql
c) configuratiebestand
db.ini
Aanbevolen:
Op LoRa gebaseerd visueel bewakingssysteem voor landbouw Iot - Een fronted applicatie ontwerpen met Firebase & Angular: 10 stappen
Op LoRa gebaseerd visueel bewakingssysteem voor landbouw Iot | Een fronted-applicatie ontwerpen met Firebase & Angular: In het vorige hoofdstuk hebben we het gehad over hoe de sensoren werken met de loRa-module om de Firebase Realtime-database te vullen, en we hebben het diagram op zeer hoog niveau gezien hoe ons hele project werkt. In dit hoofdstuk gaan we het hebben over hoe we
Op LoRa gebaseerde afstandsbediening - Apparaten bedienen vanaf grote afstanden: 8 stappen
Op LoRa gebaseerde afstandsbediening | Bedien apparaten van grote afstanden: Hé, wat is er, jongens! Akarsh hier van CETech. In dit project gaan we een afstandsbediening maken die kan worden gebruikt om een verscheidenheid aan instrumenten te bedienen, zoals LED's, motoren of als we het hebben over ons dagelijks leven, kunnen we onze huisapplian
ESP32 met E32-433T LoRa-module zelfstudie - LoRa Arduino-interface: 8 stappen
ESP32 met E32-433T LoRa-module zelfstudie | LoRa Arduino-interface: Hé, wat is er, jongens! Akarsh hier van CETech. Dit project van mij is een interface met de E32 LoRa-module van eByte, een krachtige 1-watt transceivermodule met een ESP32 met behulp van Arduino IDE. We begrepen de werking van de E32 in onze laatste tutorial
Huishoudelijke apparaten bedienen via LoRa - LoRa in Domotica - LoRa-afstandsbediening: 8 stappen
Huishoudelijke apparaten bedienen via LoRa | LoRa in Domotica | LoRa-afstandsbediening: bedien en automatiseer uw elektrische apparaten vanaf lange afstanden (kilometers) zonder de aanwezigheid van internet. Dit kan via LoRa! Hé, wat is er, jongens? Akarsh hier van CETech. Ook deze print heeft een OLED-display en 3 relais die een
Seeed Studio CAN-BUS V2.0 hacken - Aan de slag: 5 stappen
Seeed Studio CAN-BUS V2.0 Hacking - Aan de slag: deze instructable is bedoeld voor beginners die al de weg weten in Arduino. De eerste kennis van hoe je aan de slag moet, is altijd lastig en tijdrovend in elk project. Maar totdat je de weg weet, zou je bijna altijd willen dat je iemand had om te sh