Taula de continguts:
- Pas 1: coses utilitzades en aquest projecte
- Pas 2: història
- Pas 3: connexió de maquinari
- Pas 4: Configuració del programari
- Pas 5: construcció de llocs web
Vídeo: Seeed LoRa IoTea Solució: 5 passos
2024 Autora: John Day | [email protected]. Última modificació: 2024-01-30 08:14
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.
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.
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ó.
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.
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.
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.
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.
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"
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.
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.
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:
Experiments PWM de motor CC aleatori + Solució de problemes del codificador: 4 passos
Experiments PWM aleatoris de motor CC + Solució de problemes del codificador: sovint hi ha ocasions en què la brossa d'algú és el tresor d'un altre, i aquest va ser un d'aquests moments per a mi. Si heu estat seguint-me, probablement sabreu que vaig emprendre un enorme projecte per crear la meva pròpia impressora 3D CNC a partir de ferralla. Aquestes peces eren
Controlar els electrodomèstics sobre LoRa - LoRa en domòtica - Control remot LoRa: 8 passos
Controlar els electrodomèstics sobre LoRa | LoRa en domòtica | Control remot LoRa: controleu i automatitzeu els aparells elèctrics des de llargues distàncies (quilòmetres) sense la presència d'Internet. Això és possible a través de LoRa! Ei, què passa, nois? Akarsh aquí de CETech.This PCB també té una pantalla OLED i 3 relés que un
Seeed IoTea LoRa Solution (Actualització 1811): 5 passos
Solució Seeed IoTea LoRa (actualització 1811): Internet + és un concepte popular ara. Aquesta vegada hem provat Internet i l'agricultura perquè el jardí del te creixi a Internet
Seeed IoTea LoRa Solution (amb Azure, actualització 1812): 5 passos
Seeed IoTea LoRa Solution (amb Azure, actualització 1812): Microsoft Azure és un servei al núvol que proporciona una potència informàtica més potent i estable. Aquesta vegada hem intentat enviar-hi les nostres dades IoTea
Projecte Arduino: Prova del mòdul LoRa RF1276 per al seguiment GPS Solució: 9 passos (amb imatges)
Projecte Arduino: Prova del mòdul LoRa RF1276 per al seguiment de GPS Solució: Connexió: USB - Serial Necessitat: Chrome Necessitat del navegador: 1 X Arduino Mega Necessitat: 1 X Necessitat de GPS: 1 X targeta SD Necessitat: 2 X Mòdem LoRa RF1276 Funció: Arduino Enviar valor GPS a la base principal: dades de magatzem de la base principal al mòdul Lora del servidor Dataino: ultra llarg abast