Taula de continguts:

Seeed LoRa IoTea Solució: 5 passos
Seeed LoRa IoTea Solució: 5 passos

Vídeo: Seeed LoRa IoTea Solució: 5 passos

Vídeo: Seeed LoRa IoTea Solució: 5 passos
Vídeo: 🚀 RUTUBE и ТОЧКА. Разработка РУТУБА за 5 часов *БЕЗ ВОДЫ* [Next / React / Nest / PostgreSQL / Redux] 2024, Juliol
Anonim
Seeed LoRa IoTea Solution
Seeed LoRa IoTea Solution

Un sistema automàtic de recollida d’informació aplicat a les plantacions de te. Forma part de la recopilació d'informació agrícola intel·ligent.

Pas 1: coses utilitzades en aquest projecte

Components de maquinari

  • Grove - Sensor de diòxid de carboni (MH-Z16)
  • Grove - Sensor de llum digital
  • Grove - Sensor de pols (PPD42NS)
  • Grove - Sensor d'oxigen (ME2-O2-Ф20)
  • Sensor de temperatura i humitat del sòl
  • LoRa LoRaWAN Gateway: kit de 868 MHz amb Raspberry Pi 3
  • Grove - Sensor de temperatura i temperatura i baròmetre (BME280)

Aplicacions de programari i serveis en línia

Microsoft Visual Studio 2015

Pas 2: història

L’agricultura intel·ligent consisteix a aplicar la tecnologia d’Internet de les coses a l’agricultura tradicional, mitjançant sensors i programes per controlar la producció agrícola a través de plataformes mòbils o informàtiques, cosa que fa que l’agricultura tradicional sigui més “intel·ligent”.

A la muntanya Mengding al nord-est de Ya’an, Sichuan, la cresta de la muntanya discorre d’oest a est en un mar verd. Aquesta és una visió més familiar per a Deng, de 36 anys, un dels pocs fabricants de te Mengding de la seva generació, amb una plantació de 50mu (= 3,3 hectàrees) situada a 1100m de nivell sobre el mar. Deng prové d’una família de fabricants de te, però continuar el llegat familiar no és una tasca fàcil. “Els nostres tes es conreen a gran altitud en un entorn orgànic per garantir la seva excel·lent qualitat. Però, al mateix temps, la densitat de creixement és baixa, el cost és elevat i la brotació és desigual, cosa que fa que el te sigui difícil de collir. Per això, els tes d’alta muntanya són normalment collites petites i els seus valors no es reflecteixen al mercat . Durant els darrers dos anys, Deng ha intentat sensibilitzar els consumidors sobre el te d’alta muntanya per promoure el seu valor. I quan va conèixer Fan, que buscava una plantació per implementar la tecnologia IoTea de Seeed, es va fer una combinació perfecta per a una solució. La Seeed IoTea Solution té com a objectiu ajudar els productors de te a gestionar millor les plantacions sense alterar les pràctiques tradicionals de cultiu del te i presentar les dades ambientals en temps real de les plantacions en una plataforma oberta.

Consistent en sensors, nodes i passarel·les, IoTea recopila dades en temps real de factors que poden afectar la qualitat del te durant els processos de cultiu i producció, incloses la temperatura i la humitat, el CO2, l’O2, la PM i l’exposició a la llum. Les dades són recollides pels sensors, enviades pels nodes a la passarel·la i, finalment, al núvol, i es fan accessibles als clients finals en una pàgina web.

Pas 3: connexió de maquinari

Pas 1: connexió de passarel·la

La passarel·la s’instal·la per separat en una caixa. Tenint en compte el problema de dissipació de calor, hem afegit 2 ventiladors. Una és per a la dissipació de calor de Raspberry Pi, l’altra per a la circulació d’aire interna i externa. La caixa de la porta d’entrada es col·loca a la casa d’un agricultor, de manera que no cal que considerem el seu problema d’energia.

Imatge
Imatge

Pas 2: connexió de node

El node és terminal de les dades i totes les dades originals s’obtenen d’aquí. Hi ha 6 sensors connectats al node. A més del sensor d’humitat i temperatura del sòl, posem altres sensors a la caixa de la persiana.

Imatge
Imatge
Imatge
Imatge

El node es col·loca en una caixa impermeable. Per tal de tenir una millor connexió amb el node, fem una placa adaptadora. Finalment, proporcionarem l’enllaç de baixada de l’esquema d’aquest tauler. Com es mostra a continuació, els cables dels sensors es connecten a la placa adaptadora mitjançant blocs de terminals. Utilitzem 3 tubs MOS (SI2301) per construir circuits de commutació per controlar l’encesa i apagada dels sensors i del ventilador. El ventilador s’utilitza per refredar-se. Tenim un sensor de temperatura (DS18B20) muntat a la placa. Ens pot indicar la temperatura interna de la caixa i, a continuació, el microcontrolador decideix si s’encén el ventilador. Utilitzem diverses resistències per crear un circuit divisor de tensió per mesurar la tensió de la bateria plom-àcid. Finalment, reservem 3 interfícies IIC i port sèrie a la placa per a una posterior expansió i depuració.

Imatge
Imatge

Parlem del problema de la font d'alimentació del node. El node es col·loca a la plantació de te de manera aleatòria, de manera que el mètode tradicional d’alimentació ja no és aplicable. L’ús d’una solució d’energia solar és una bona idea. Actualment, hi ha moltes solucions al mercat. Podem seleccionar-ne un que satisfaci les nostres necessitats. Hi ha 3 parts en la solució que hem escollit: panell solar, controlador de càrrega solar i bateria de plom àcid. Per tal de captar millor l'energia solar, posem un panell solar a la part superior del suport i ajustem el seu angle per assegurar-nos que estigui cap al sol. Vam col·locar el controlador de càrrega solar a la mateixa caixa amb el node. Com que no hi ha espai addicional dins de la caixa, hem hagut de trobar una nova caixa impermeable per col·locar la bateria de plom àcid.

Imatge
Imatge
Imatge
Imatge
Imatge
Imatge

Pas 4: Configuració del programari

Node

En aquesta secció, introduirem la configuració principal del programari del node.

DataFormat

Dades penjades pel node a la passarel·la:

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

Significat de cada bit de dades:

Lora_data [0] : Temperatura de l’aire, ℃

Lora_data [1] : Humitat de l'aire,%

Lora_data [2] : Altitud vuit, m

Lora_data [3] : Altitud baixa vuit

Lora_data [4] : concentració de CO2 alta vuit, ppm

Lora_data [5] : Concentració de CO2 baixa vuit

Lora_data [6] : Concentració de pols alta vuit, unitats / 0,01cf

Lora_data [7] : Concentració de pols baixa vuit

Lora_data [8] : Intensitat lumínica alta vuit, lux

Lora_data [9] intensity Intensitat lumínica baixa vuit

Lora_data [10] concentration Concentració d’O2,% (dades brutes dividides per 1000)

Lora_data [11] : Temperatura del sòl, ℃

Lora_data [12] : Humitat del sòl,%

Lora_data [13] voltage Voltatge de la bateria, v

Lora_data [14] code Codi d'error dels sensors

Codi d'error:

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

Significat de cada bit:

bit 0: 1 ---- Error del sensor de temperatura i temperatura Humi i baròmetre (BME280)

bit 1: 1 ---- Error del sensor de diòxid de carboni (MH-Z16)

bit 2: 1 ---- Error de sensor de pols (PPD42NS)

bit 3: 1 ---- Error del sensor de llum digital

bit 4: 1 ---- Error del sensor d'oxigen (ME2-O2-Ф20)

bit 5: 1 ---- Error del sensor d'humitat i temperatura del sòl

bit 6: reservat

bit 7: reservat

Hem creat un Error_code_transform.exe, l’obrim i introduïu el codi d’error en hexadecimal, sabreu ràpidament quin sensor és l’error. L'enllaç de baixada es troba al final d'aquest article.

Ajust de paràmetres: a) Cicle de transmissió de dades

// seeedtea.ino

#defineinterval_time 600 // segon

Aquest paràmetre es pot variar per canviar el cicle de transmissió de dades. En cada cicle, l’adquisició de dades triga aproximadament 1 minut. Per tant, no es recomana canviar aquest valor a menys de 60 segons.

b) Temps d’escalfament del sensor de pols

//seeedtea.ino

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

c) Coeficient de tensió

//POWER_Ctrl.cpp

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

Aquests dos paràmetres es calculen en funció del circuit divisor de tensió.

d) Llindar de temperatura d'obertura del ventilador

//POWER_Ctrl.cpp

#defineFan_start_temp 45 // temperaturaethreshold #defineFan_start_light 500 // intensitat de llum

Quan la temperatura real supera el llindar, el ventilador començarà a refredar-se.

e) Paràmetre d'inicialització del sensor O2

//Oxygen.cpp

# defineO2_percentage 208.00 //20.8%

f) Interruptor macro

//seeedtea.ino

#defineLORA_RUN // Després del comentari, la inicialització de Lora i la transmissió de dades s'aturaran #defineSENSOR_RUN // Després del comentari, els sensors externs deixaran de funcionar //POWER_Ctrl.cpp #defineFAN_ON // Únicament de protecció, cal comentar l'aplicació pràctica / **** *** Mode de control DS18B20 ********************** / #defineSlower_Mode // Mode lent a la temperatura. El comentari és el mode ràpid

g) Assignació de pins

D2: indicador LED i microcontrolador de restabliment extern IIC: SCL i SDA

//Dust_other.h

#defineDust_pin 3 // Dust sensor //CO2.cpp # defineCO2_serial Serial1 // use hardwareserial port (D0 & D1) //seeedtea.ino #definedataPin 6 // Pin de dades del sòl #defineclockPin 7 // Pin del rellotge del sòl // POWER_Ctrl. h # defineDS18B20_pin 8 // DS18B20 #defineFan_pin 9 // Ventilador #defineAir_CtrlPin 10 // Pin de control per als sensors col·locats a la persiana #defineSoil_CtrlPin 11 // Pin del commutador del sensor d’humitat i temperatura del sòl #defineBattery_pin A2 // Mesureu la tensió de la bateria #defineSolar_pin A3 / / Mesureu la tensió del panell solar //Oxygen.h # defineO2_pin A1 // O2 sensor

h) Temporitzador de vigilància

El temporitzador de vigilància s’utilitza per controlar l’estat de funcionament del sistema. Quan el sistema s'està executant de manera anormal, es restablirà el node perquè pugui funcionar contínuament durant molt de temps.

La biblioteca a la qual es fa referència:

  • Adafruit_SleepyDog.h s'ha afegit al projecte
  • Adafruit_ASFcore-master.zip s’empaqueta a la carpeta del projecte i s’ha d’afegir manualment a l’IDE Arduino.

Funcions relacionades:

Activa el gos de vigilància

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

Paràmetres d'entrada:

Int maxPeriodMS: temps d'espera en mil·lisegons. El màxim permès és de 16.000 mil·lisegons.

valor de retorn:

Tipus int: retorna el temps d'espera real

Restableix el gos de vigilància

void WatchdogSAMD:: reset ()

Truqueu a aquesta funció per restablir el temporitzador del gos de vigilància, anomenat "alimentar el gos". La superació del temps d'espera sense restabliment farà que el node es reiniciï.

Atura el gos vigilant

void WatchdogSAMD:: disable ()

Porta d’entrada

En aquesta secció introduirem com connectar-se al servidor Loriot.

Pas 1: registre de la passarel·la del servidor Loriot

a) El nou usuari ha de registrar primer un compte, feu clic a l'adreça de registre. Empleneu Nom d’usuari, contrasenya i adreça de correu electrònic per registrar-vos; després de registrar-vos un missatge de correu electrònic, seguiu les instruccions del correu electrònic per activar-les.

b) Després de l'activació correcta, feu clic aquí per iniciar la sessió. El nivell predeterminat és "Community Network", és compatible amb 1 passarel·la (RHF2S001) i 10 nodes.

c) Introduïu Dashboard -> Gateway, feu clic a Add Gateway start per afegir Gateway.

d) Seleccioneu Raspberry Pi 3

e) Estableix el següent:

  • Front-end de ràdio -> RHF2S001 868/915 MHz (SX1257)
  • BUS -> SPI

f) Empleneu l'adreça MAC del vostre RHF2S001, ha de tenir el format b8: 27: eb: xx: xx: xx. I també introduïu informació sobre la ubicació de la passarel·la.

g) Feu clic a "Registra la passarel·la Raspberry Pi" per finalitzar el registre.

Imatge
Imatge

h) Feu clic a la passarel·la registrada per entrar a la pàgina de configuració, canvieu manualment "Pla de freqüència"; el vostre pla aquí es decideix pel tipus del vostre tipus RHF2S001; el pla disponible és CN470 , CN473 , CN434 , CN780 , EU868, després de seleccionar-lo, actualitzeu la pàgina per obtenir el canal exacte. En aquesta wiki escollim EU868.

i) Executeu l'ordre al terminal de massilla :

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.

Imatge
Imatge

Pas 2: dispositiu Loriot Server Connect Node

a) Obteniu els canals de passarel·la disponibles

Els canals de passarel·la actuals es poden obtenir des de Tauler de control -> Passarel·la -> La vostra passarel·la. Podeu veure els canals disponibles a la imatge següent.

Imatge
Imatge

b) Configuració de Seeeduino LoRAWAN GPS (RHF3M076)

Obriu el monitor sèrie d'ArduinoIDE, toqueu l'ordre següent.

a + cap

Per confirmar el canal per defecte del vostre GPS Seeeduino_LoRAWAN, obtindreu 3 canals. Si no hi ha cap canal disponible, podeu canviar els canals de Seeeduino_LoRAWAN mitjançant l'ordre següent.

a + ch = 0, 868,1

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

A continuació, podeu tornar a utilitzar a + ch per comprovar-ho.

c) Afegiu Seeeduino_LoRAWAN GPS com a ABP NodeLog al servidor Loriot, feu clic a Tauler de control -> Aplicacions -> SimpleApp. Feu clic a Importa l'entrada ABP below a sota dels elements

  • DevAddr: Seeeduino_LoRAWAN GPS passa mitjançant l'ordre "AT + ID" (Nota: Loriot no admet el connector de dos punts, cal eliminar-lo manualment)
  • FCntUp etto Setto 1
  • FCntDn etto Setto 1
  • NWKSKEY ue Valor per defecte 2B7E151628AED2A6ABF7158809CF4F3C
  • APPSKEY ue Valor per defecte 2B7E151628AED2A6ABF7158809CF4F3C
  • EUI : DEVEUI, Seeeduino_LoRAWAN El GPS passa mitjançant l'ordre "AT + ID"
Imatge
Imatge

Feu clic al botó Importa dispositiu per finalitzar la importació del dispositiu. Ara seleccioneu Tauler-> Aplicacions -> SampleApp, veureu el nou node ABP que acabeu d'afegir.

Imatge
Imatge

d) Enviar dades de Seeeduino_LoRAWAN

ATENCIÓ! Això és només una prova.

Torneu al monitor sèrie d'ArduinoIDE, envieu l'ordre:

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

A continuació, aneu a Tauler de control -> Aplicacions -> SampleApp -> Dispositiu, feu clic al dispositiu Node EUI o DevAddr, aquí trobareu les dades que acabeu d’enviar.

Imatge
Imatge

Per obtenir més informació, consulteu aquesta wiki.

Pas 5: construcció de llocs web

Eines relacionades

  • virtualenv
  • Python3
  • Gunicorn
  • Supervisor
  • Nginx
  • MySQL

Utilitzem CentOS7 com a entorn de desplegament de proves

virtualenv

Utilitzeu virtualenv per crear un entorn de producció independent de python3

a) instal·lar

pip instal·lar virtualenv

b) creeu un entorn virtual python3

virtualenv -p python3 iotea

c) inicieu l'entorn virtual i introduïu el directori iotea

contenidor de fonts / activar

d) existir entorn

desactivar

Python3

a) instal·lar

instal·leu epel-release

instal·leu python36

b) instal·leu la biblioteca dependent PyMySQL, DBUtils, Flask, websocket-client, configparser

pip instal·lar pymysql

pip install dbutils pip install flask pip install websocket-client pip install configparser

Gunicorn

a) instal·leu (a l'entorn Python3)

pip install gunicorn

b) executeu el projecte Flask (al directori del projecte iotea)

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

c) executeu websocket-clint per obtenir dades loriot

gunicorn loriot: aplicació

d) veure l'arbre del procés de Gunicorn

pstree -ap | grep gunicorn

Supervisor

a) instal·lar (usuari root)

supervisor d’instal·lacions de pip

b) generar fitxers de configuració

echo_supervisord_conf> /etc/supervisord.conf

c) creeu un directori i introduïu una configuració de directori

mkdir -p /etc/supervisor/conf.d

Editeu /etc/supervisord.conf i modifiqueu el camp de fitxers a [incloure] al final del fitxer.

Tingueu en compte que heu d’eliminar el fitxer ';' davant d’aquestes dues línies, que és el personatge del comentari.

[incloure]

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

Mitjans per introduir /etc/supervisor/conf.d/. El fitxer de configuració següent s’utilitza com a fitxer de configuració del procés (supervisat pel supervisor).

d) configuració entrant (al directori iotea)

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

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

e) obriu el servei iotea

superviosrctl recarrega #reload el fitxer de configuració

superviosrctl start loriot #open loriot data reception superviosrctl start iotea #open the iotea flask application

f) altres operacions habituals

supervisorctl recarrega # recarrega el fitxer de configuració

supervisorctl update supervisorctl start xxx supervisorctl stop xxx supervisorctl status xxx supervisorctl help # view more command

Nginx

a) instal·lar

instal·leu -y nginx

b) configuració

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

c) inicieu Nginx

systemctl inicia nginx.service

MySQL

a) paràmetres relacionats

usuari = 'arrel'

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

b) arxiu

iotea_iotea.sql

c) fitxer de configuració

db.ini

Recomanat: