Sommario:
- Passaggio 1: cose utilizzate in questo progetto
- Fase 2: Storia
- Passaggio 3: connessione hardware
- Passaggio 4: configurazione del software
- Passaggio 5: costruzione del sito web
Video: Seeed LoRa IoTea Solution: 5 passaggi
2024 Autore: John Day | [email protected]. Ultima modifica: 2024-01-30 10:02
Un sistema di raccolta automatica delle informazioni applicato alla piantagione di tè. Fa parte della raccolta intelligente di informazioni agricole.
Passaggio 1: cose utilizzate in questo progetto
Componenti hardware
- Grove - Sensore di anidride carbonica (MH-Z16)
- Grove - Sensore di luce digitale
- Grove - Sensore di polvere (PPD42NS)
- Grove - Sensore di ossigeno (ME2-O2-Ф20)
- Sensore di umidità e temperatura del suolo
- LoRa LoRaWAN Gateway - Kit 868MHz con Raspberry Pi 3
- Grove - Sensore Temp&Humi&Barometro (BME280)
App software e servizi online
Microsoft Visual Studio 2015
Fase 2: Storia
L'agricoltura intelligente consiste nell'applicare la tecnologia Internet of Things all'agricoltura tradizionale, utilizzando sensori e software per controllare la produzione agricola tramite piattaforme mobili o informatiche, rendendo l'agricoltura tradizionale più "intelligente".
Sul monte Mengding a nord-est di Ya'an, nel Sichuan, la cresta della montagna corre da ovest a est in un mare di verde. Questo è uno spettacolo molto familiare per il 36enne Deng, uno dei pochissimi produttori di tè Mengding della sua generazione, con una piantagione di 50 mu (= 3,3 ettari) situata a 1100 m sul livello del mare. Deng proviene da una famiglia di produttori di tè, ma portare avanti l'eredità di famiglia non è un compito facile. “I nostri tè sono coltivati ad alta quota in un ambiente biologico per garantirne l'eccellente qualità. Ma allo stesso tempo, la densità di crescita è bassa, il costo è alto e il germogliamento è irregolare, rendendo il tè difficile da raccogliere. Ecco perché i tè di alta montagna sono normalmente raccolti piccoli e i loro valori non si riflettono sul mercato . Negli ultimi due anni, Deng ha cercato di sensibilizzare i consumatori sul tè di alta montagna per promuoverne il valore. E quando ha incontrato Fan, che stava cercando una piantagione per implementare la tecnologia IoTea di Seeed, è stata creata una soluzione perfetta. La soluzione Seeed IoTea mira ad aiutare i coltivatori di tè a gestire meglio le piantagioni senza alterare le pratiche tradizionali di coltivazione del tè e a presentare dati ambientali in tempo reale dalla piantagione su una piattaforma aperta.
Composto da sensori, nodi e gateway, IoTea raccoglie dati in tempo reale sui fattori che possono influenzare la qualità del tè durante i processi di coltivazione e produzione, tra cui temperatura e umidità, CO2, O2, PM ed esposizione alla luce. I dati vengono raccolti dai sensori, inviati dai nodi al gateway ed eventualmente al cloud, e resi accessibili ai clienti finali su una pagina web.
Passaggio 3: connessione hardware
Passaggio 1: connessione al gateway
Il gateway è installato separatamente in una scatola. Considerando il problema della dissipazione del calore, abbiamo aggiunto 2 ventole. Uno è per la dissipazione del calore del Raspberry Pi, l'altro è per la circolazione dell'aria interna ed esterna. La scatola gateway è collocata nella casa di un agricoltore, quindi non dobbiamo considerare il suo problema di alimentazione.
Passaggio 2: connessione al nodo
Il nodo è terminale dei dati e tutti i dati originali vengono ottenuti da qui. Ci sono 6 sensori collegati al nodo. Oltre al sensore di umidità e temperatura del suolo, abbiamo inserito altri sensori all'interno della scatola della feritoia.
Il nodo è posizionato in una scatola impermeabile. Per avere una migliore connessione al nodo, realizziamo una scheda adattatore. Alla fine, forniremo il link per il download dello schema di questa scheda. Come mostrato di seguito, i cavi dei sensori sono collegati alla scheda adattatore tramite morsettiere. Usiamo 3 tubi MOS (SI2301) per costruire circuiti di commutazione per controllare l'accensione e lo spegnimento di sensori e ventola. La ventola viene utilizzata per raffreddare. Abbiamo un sensore di temperatura (DS18B20) montato sulla scheda. Può dirci la temperatura interna della scatola, quindi il microcontrollore decide se accendere la ventola. Utilizziamo diversi resistori per realizzare un circuito divisore di tensione per misurare la tensione della batteria al piombo. Infine, riserviamo 3 interfacce IIC e porta seriale sulla scheda per successive espansioni e debug.
Parliamo del problema di alimentazione del nodo. Il nodo viene posizionato casualmente nella piantagione di tè, quindi il metodo di alimentazione tradizionale non è più applicabile. L'utilizzo di una soluzione di energia solare è una buona idea. Ci sono molte soluzioni fornite attualmente sul mercato. Possiamo selezionarne uno che soddisfi le nostre esigenze. Ci sono 3 parti nella soluzione che abbiamo scelto: pannello solare, regolatore di carica solare e batteria al piombo. Per catturare meglio l'energia solare, mettiamo il pannello solare sulla parte superiore della staffa e regoliamo il suo angolo per assicurarci che sia rivolto verso il sole. Abbiamo posizionato il controller di carica solare nella stessa scatola con il nodo. Poiché non c'è spazio extra all'interno della scatola, abbiamo dovuto trovare una nuova scatola impermeabile per posizionare la batteria al piombo.
Passaggio 4: configurazione del software
Nodo
In questa sezione, introdurremo la configurazione principalmente software di node.
Formato dei dati
Dati caricati dal nodo al gateway:
unsigned char Lora_data[15] ={0, 1, 2, 3,, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14};
Significato di ogni bit di dati:
Lora_data[0] :Temperatura dell'aria, ℃
Lora_data[1] :Umidità dell'aria, %
Lora_data[2] :Altitudine alta otto, m
Lora_data[3] :Altitudine otto
Lora_data[4] :Concentrazione di CO2 alta otto, ppm
Lora_data[5] :Concentrazione di CO2 bassa otto
Lora_data[6] :Concentrazione polvere alta otto, pz/0.01cf
Lora_data[7] :Concentrazione di polvere bassa otto
Lora_data[8] :Intensità luminosa alta otto, lux
Lora_data[9] :Intensità della luce bassa otto
Lora_data[10] :Concentrazione O2, % (dati grezzi divisi per 1000)
Lora_data[11] :Temperatura del suolo, ℃
Lora_data[12] :Umidità del suolo, %
Lora_data[13] :Voltaggio della batteria, v
Lora_data[14] :Codice errore sensori
Codice di errore:
Lora_data[14] = [bit7, bit6, bit5, bit4, bit3, bit2, bit1, bit0]
Significato di ogni bit:
bit 0: 1 ---- Errore sensore temperatura e umidità e barometro (BME280)
bit 1: 1---- Errore sensore di anidride carbonica (MH-Z16)
bit 2: 1---- Sensore polvere (PPD42NS) errore
bit 3: 1---- Errore del sensore di luce digitale
bit 4: 1---- Errore sensore di ossigeno (ME2-O2-Ф20)
bit 5: 1---- Errore del sensore di umidità e temperatura del suolo
bit 6: Riservato
bit 7: Riservato
Abbiamo creato un Error_code_transform.exe, aprilo e inserisci il codice di errore in esadecimale, saprai rapidamente quale sensore è l'errore. Il link per il download è alla fine di questo articolo.
Regolazione dei parametri: a) Ciclo di trasmissione dei dati
// seedtea.ino
#defineinterval_time 600 //secondo
Questo parametro può essere variato per modificare il ciclo di trasmissione dei dati. In ogni ciclo, l'acquisizione dei dati richiede circa 1 minuto. Pertanto, non è consigliabile modificare questo valore a meno di 60 secondi.
b)Tempo di riscaldamento del sensore della polvere
//seeedtea.ino
#definePreheat_time 30000 //Tempo di riscaldamento del DustSensor, millisecondi //Dust_other.cpp #definesampletime_ms 30000 //samplingtime30s
c) Coefficiente di tensione
//POWER_Ctrl.cpp
#defineBattery_coefficient 0.159864 //Valore ADC × Battery_coefficient = battery_voltage #defineSolar_coefficient 0.22559 //Valore ADC × Solar_coefficient = solar_voltage
Questi due parametri sono calcolati in base al circuito partitore di tensione.
d) Soglia temperatura apertura ventilatore
//POWER_Ctrl.cpp
#defineFan_start_temp 45 //temperaturethreshold #defineFan_start_light 500 //intensità della luce
Quando la temperatura effettiva supera la soglia, la ventola inizierà a raffreddarsi.
e) Parametro di inizializzazione del sensore O2
//Oxygen.cpp
#defineO2_percentuale 208,00 //20,8%
f) Interruttore macro
//seeedtea.ino
#defineLORA_RUN //Dopo il commento, l'inizializzazione di Lora e la trasmissione dei dati si fermeranno #defineSENSOR_RUN //Dopo il commento, i sensori esterni smetteranno di funzionare //POWER_Ctrl.cpp #defineFAN_ON //Solo Fortesting, l'applicazione pratica deve essere commentata /**** ***Modalità di controllo DS18B20 **********************/ #defineSlower_Mode // Modalità lenta per ottenere la temperatura. Il commento è in modalità veloce
g)Mappatura dei pin
D2: Indicatore LED e microcontrollore reset esternoIIC: SCL e SDA
//Dust_other.h
#defineDust_pin 3 //Sensore polvere //CO2.cpp #defineCO2_serial Serial1 //usa la porta hardwareserial (D0 e D1) //seeedtea.ino #definedataPin 6 //pin dati suolo #defineclockPin 7 //pin orologio suolo //POWER_Ctrl. h #defineDS18B20_pin 8 //DS18B20 #defineFan_pin 9 //Fan #defineAir_CtrlPin 10 // Pin di controllo per i sensori posti nella feritoia #defineSoil_CtrlPin 11 // Pin di commutazione del sensore di umidità e temperatura del suolo #defineBattery_pin A2 // Misura la tensione della batteria #defineSolar_pin A3 / /Misura tensione pannello solare //Oxygen.h #defineO2_pin A1 //Sensore O2
h) Timer watchdog
Il timer watchdog viene utilizzato per monitorare lo stato di funzionamento del sistema. Quando il sistema funziona in modo anomalo, il nodo verrà ripristinato, in modo che possa funzionare continuamente per molto tempo.
La biblioteca a cui fare riferimento:
- Adafruit_SleepyDog.h è stato aggiunto al progetto
- Adafruit_ASFcore-master.zip è contenuto nella cartella del progetto e deve essere aggiunto manualmente all'IDE di Arduino.
Funzioni correlate:
Abilita watchdog
int WatchdogSAMD::enable(int maxPeriodMS, bool isForSleep)
Parametri di ingresso:
Int maxPeriodMS: Tempo di attesa in millisecondi. Il massimo consentito è 16000 millisecondi.
valore di ritorno:
Int type, restituisce il tempo di attesa effettivo
Reimposta watchdog
void WatchdogSAMD::reset()
Chiamare questa funzione per ripristinare il timer del watchdog, denominato "dare da mangiare al cane". Il superamento del tempo di attesa senza ripristino provocherà il riavvio del nodo.
Ferma il cane da guardia
void WatchdogSAMD::disable()
Gateway
In questa sezione introdurremo come connettersi al server Loriot.
Passaggio 1: registrazione del gateway del server Loriot
a) Il nuovo utente deve prima registrare un account, fare clic sull'indirizzo di registrazione. Inserisci UserName, Password e indirizzo e-mail per registrarti, dopo la registrazione ti verrà inviata un'e-mail, segui le istruzioni nell'e-mail per l'attivazione.
b) Dopo l'attivazione riuscita, fare clic qui per accedere. Il livello predefinito è "Rete comunitaria", supporta 1 gateway (RHF2S001) e 10 nodi.
c) Accedere a Dashboard -> Gateway, fare clic su Aggiungi Gateway per iniziare ad aggiungere Gateway.
d) Seleziona Raspberry Pi 3
e) Imposta come di seguito:
- Front-end radio -> RHF2S001 868/915 MHz (SX1257)
- AUTOBUS -> SPI
f) Inserisci l'indirizzo MAC del tuo RHF2S001, dovrebbe essere nel formato b8:27:eb:xx:xx:xx. E inserisci anche le informazioni sulla posizione del gateway.
g) Fare clic su "Registra gateway Raspberry Pi" per completare la registrazione.
h) Fare clic sul gateway registrato per accedere alla pagina di configurazione, passare manualmente a "Piano di frequenza", il piano qui è deciso dal tipo di tipo RHF2S001, il piano disponibile è CN470,CN473, CN434,CN780,EU868, dopo aver selezionato si prega di aggiornare la pagina per ottenere il canale esatto. In questo wiki scegliamo EU868.
i) Esegui il comando nel terminale putty:
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.
Passaggio 2: dispositivo Loriot Server Connect Node
a) Ottieni i canali gateway disponibili
I canali gateway attuali possono essere ottenuti da Dashboard -> Gateway -> Your Gateway, puoi vedere i canali disponibili come nell'immagine qui sotto.
b) Configurazione Seeeduino LoRAWAN GPS(RHF3M076)
Apri il monitor seriale di ArduinoIDE, tocca il comando qui sotto.
a+ch
Per confermare il canale predefinito del tuo Seeeduino_LoRAWAN GPS, otterrai 3 canali. Se non ci sono canali disponibili, puoi cambiare i canali di Seeeduino_LoRAWAN con il comando qui sotto.
a+ch=0, 868.1
a+ca=1, 868,3 a+ca=2, 868.5
Quindi puoi usare di nuovo at+ch per controllare.
c) Aggiungi Seeeduino_LoRAWAN GPS come NodeLog ABP nel server Loriot, fai clic su Dash Board -> Applicazioni -> SimpleApp. Fai clic su Importa ABP (inserisci sotto gli elementi)
- DevAddr: Seeeduino_LoRAWAN GPS passa il comando "AT+ID" (Nota: Loriot non supporta il connettore dei due punti, è necessario rimuoverlo manualmente)
- FCntUp:Setto 1
- FCntDn:Setto 1
- NWKSKEY:valore predefinito 2B7E151628AED2A6ABF7158809CF4F3C
- APPSKEY:valore predefinito 2B7E151628AED2A6ABF7158809CF4F3C
- EUI:DEVEUI, Seeeduino_LoRAWAN GPS passa il comando "AT+ID"
Fare clic sul pulsante Importa dispositivo per completare l'importazione del dispositivo. Ora scegli Dashboard-> Applicazioni -> SampleApp, vedrai il nuovo nodo ABP che hai appena aggiunto.
d) Invia dati da Seeeduino_LoRAWAN
ATTENZIONE! Questo è solo un test.
Torna al monitor seriale di ArduinoIDE, invia il comando:
AT+CMSGHEX="0a 0b 0c 0d 0e"
Quindi vai su Dashboard -> Applicazioni -> SampleApp -> Device, fai clic su Node Device EUI o DevAddr, troverai i dati che hai appena inviato qui.
Per i dettagli, fare riferimento a questo wiki.
Passaggio 5: costruzione del sito web
Strumenti correlati
- virtualenv
- Python3
- Gunicorn
- Supervisore
- Nginx
- MySQL
Usiamo CentOS7 come ambiente di distribuzione di prova
virtualenv
Usa virtualenv per costruire un ambiente di produzione python3 autonomo
a) installare
pip install virtualenv
b) creare un ambiente virtuale python3
virtualenv -p python3 iotea
c) avviare l'ambiente virtuale ed entrare nella directory iotea
raccoglitore sorgente/attiva
d) esiste ambiente
disattivare
Python3
a) installare
yum install epel-release
yum installa python36
b) installa la libreria dipendente PyMySQL, DBUtils, Flask, websocket-client, configparser
pip install pymysql
pip install dbutils pip install flask pip install websocket-client pip install configparser
Gunicorn
a) installa (in ambiente Python3)
pip installa gunicorn
b) eseguire il progetto flask (nella directory del progetto iotea)
gunicorn -w 5 -b 0.0.0.0:5000 app:app
c) esegui websocket-clint per ottenere i dati di loriot
loriot gunicorn: app
d) visualizzare l'albero dei processi Gunicorn
pstree -ap|grep gunicorn
Supervisore
a) installa (utente root)
supervisore installazione pip
b) generare file di configurazione
echo_supervisord_conf > /etc/supervisord.conf
c) creare una directory e introdurre una configurazione della directory
mkdir -p /etc/supervisor/conf.d
Modifica /etc/supervisord.conf e modifica il campo dei file sotto [include] alla fine del file.
Nota che devi rimuovere il ';' davanti a queste due righe, che è il carattere di commento.
[includere]
File = /etc/supervisor/conf.d/*.conf
Significa introdurre /etc/supervisor/conf.d/. Il seguente file di configurazione viene utilizzato come file di configurazione del processo (monitorato dal supervisore).
d) configurazione in entrata (nella directory iotea)
cp iotea.conf /etc/supervisor/conf.d/
cp loriot.conf /etc/supervisor/conf.d/
e) aprire iotea serve
superviosrctl reload #reload il file di configurazione
superviosrctl avvia loriot #apri loriot ricezione dati superviosrctl avvia iotea #apri l'applicazione iotea flask
f) altre operazioni comuni
supervisorctl reload # ricarica il file di configurazione
supervisorctl update supervisorctl start xxx supervisorctl stop xxx supervisorctl status xxx supervisorctl help # visualizza altro comando
Nginx
a) installare
yum install -y nginx
b) configurazione
cp NginxIotea.conf /etc/nginx/conf.d/
c) avviare Nginx
systemctl avvia nginx.service
MySQL
a) parametri correlati
utente='radice'
passwd='1234' db='iotea' port=3306
b) file
iotea_iotea.sql
c) file di configurazione
db.ini
Consigliato:
ESP32 con E32-433T Modulo LoRa Tutorial - Interfaccia Arduino LoRa: 8 passaggi
ESP32 con E32-433T Modulo LoRa Tutorial | Interfaccia Arduino LoRa: Ehi, come va, ragazzi! Akarsh qui da CETech. Questo mio progetto sta interfacciando il modulo E32 LoRa di eByte che è un modulo ricetrasmettitore da 1 watt ad alta potenza con un ESP32 che utilizza Arduino IDE. Abbiamo capito il funzionamento dell'E32 nel nostro ultimo tutorial
Controlla gli elettrodomestici su LoRa - LoRa nella domotica - Telecomando LoRa: 8 passaggi
Controlla gli elettrodomestici su LoRa | LoRa nella domotica | LoRa Remote Control: controlla e automatizza i tuoi elettrodomestici da lunghe distanze (chilometri) senza la presenza di Internet. Questo è possibile tramite LoRa! Ehi, che succede, ragazzi? Akarsh qui da CETech. Questo PCB ha anche un display OLED e 3 relè che un
Seeed IoTea LoRa Solution (Aggiornamento 1811): 5 passaggi
Seeed IoTea LoRa Solution (Aggiornamento 1811): Internet+ è un concetto popolare ora. Questa volta abbiamo provato Internet più l'agricoltura per far crescere l'orto del tè dall'Internet Tea
Seeed IoTea LoRa Solution (con Azure, Update 1812): 5 passaggi
Seeed IoTea LoRa Solution (con Azure, Update 1812): Microsoft Azure è un servizio cloud che fornisce una potenza di calcolo più potente e stabile. Questa volta abbiamo provato a inviargli i nostri dati IoTea
Seeed Studio CAN-BUS V2.0 Hacking - Per iniziare: 5 passaggi
Seeed Studio CAN-BUS V2.0 Hacking - Per iniziare: questo istruibile è pensato per i principianti che conoscono già Arduino. L'iniziale sapere come andare avanti è sempre un dolore e richiede tempo in qualsiasi progetto. Ma finché non saprai come muoverti, quasi sempre vorresti avere qualcuno con cui scopare