Sommario:

Seeed LoRa IoTea Solution: 5 passaggi
Seeed LoRa IoTea Solution: 5 passaggi

Video: Seeed LoRa IoTea Solution: 5 passaggi

Video: Seeed LoRa IoTea Solution: 5 passaggi
Video: Seeed IoTea Lora Solution 2024, Luglio
Anonim
Seeed LoRa IoTea Solution
Seeed LoRa IoTea Solution

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.

Immagine
Immagine

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.

Immagine
Immagine
Immagine
Immagine

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.

Immagine
Immagine

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.

Immagine
Immagine
Immagine
Immagine
Immagine
Immagine

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.

Immagine
Immagine

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.

Immagine
Immagine

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.

Immagine
Immagine

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"
Immagine
Immagine

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.

Immagine
Immagine

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.

Immagine
Immagine

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: