Inhoudsopgave:

Seeed LoRa IoTea-oplossing - Ajarnpa
Seeed LoRa IoTea-oplossing - Ajarnpa

Video: Seeed LoRa IoTea-oplossing - Ajarnpa

Video: Seeed LoRa IoTea-oplossing - Ajarnpa
Video: 🔴BIO - Enraizar Esquejes de Plantas de Uvas - Parra🍇 2024, November
Anonim
Seeed LoRa IoTea-oplossing
Seeed LoRa IoTea-oplossing

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.

Afbeelding
Afbeelding

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.

Afbeelding
Afbeelding
Afbeelding
Afbeelding

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.

Afbeelding
Afbeelding

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.

Afbeelding
Afbeelding
Afbeelding
Afbeelding
Afbeelding
Afbeelding

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.

Afbeelding
Afbeelding

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.

Afbeelding
Afbeelding

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.

Afbeelding
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
Afbeelding
Afbeelding

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.

Afbeelding
Afbeelding

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.

Afbeelding
Afbeelding

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: