Sommario:
- Passaggio 1: cose utilizzate in questo progetto
- Fase 2: Storia
- Passaggio 3: connessione hardware
- Fase 4: Programmazione del software
- Passaggio 5: operazione
Video: Seeed IoTea LoRa Solution (Aggiornamento 1811): 5 passaggi
2024 Autore: John Day | [email protected]. Ultima modifica: 2024-01-30 10:03
Internet+ è un concetto popolare ora. Questa volta abbiamo provato Internet e l'agricoltura per far crescere il tè nel giardino di Internet.
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
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.
Passaggio 3: connessione hardware
L'hardware di questo progetto può essere suddiviso in 4 parti: Potenza, Sensori, Nodo e Gateway. Il seguente articolo ti mostrerà come completarlo passo dopo passo.
Parte di potenza
Power Part contiene principalmente un pannello solare e una batteria al litio, se costruisci questo progetto solo per dimostrazione, puoi ignorarli. Oppure puoi seguire il tutorial precedente per installare la potenza del nodo.
Sensori Parte
Nella parte Sensori, a causa dei numerosi sensori, abbiamo utilizzato una stazione meteorologica e realizzato anche una staffa in acrilico per installarli.
Come vedete nell'immagine sopra, Digital Light Sensor sempre in alto, in modo che possa raccogliere informazioni sull'illuminazione. I sensori che genereranno calore sono installati al centro della staffa in acrilico, come il sensore O2, il sensore polvere e il sensore CO2. Infine, sensore di temperatura e umidità nella parte inferiore della staffa in acrilico.
Inoltre, il sensore di temperatura e umidità del suolo è installato da solo nel terreno. Parte del nodo
Node Part è un Seeeduino LoRaWan che installato in una scatola impermeabile, si collega all'alimentazione e ai sensori tramite giunti idrici. Tra questi, il sensore della polvere si collega al pin digitale D3 di LoRaWan, il sensore di CO2 si collega ai pin D4 e D5, il sensore del suolo si collega ai pin D6 e D7, il sensore O2 si collega al pin analogico A1 e il sensore di luce e il sensore barometro si collegano alla porta I2C.
NOTA: è necessario aggiungere un resistore da 10k tra il cavo blu (dati) e il cavo rosso (Vcc) del sensore del suolo.
Seeeduino LoRaWan raccoglie i valori dei sensori di tanto in tanto e li invia al Gateway tramite LoRa. Il formato dei dati come di seguito:
{
[0], /* Temperatura dell'aria (℃) */ [1], /* Umidità dell'aria (%) */ [2], /* Altitudine (m) byte alto */ [3], /* Altitudine (m) byte basso */ [4], /* Concentrazione CO2 (PPM) byte alto */ [5], /* Concentrazione CO2 (PPM) byte basso */ [6], /* Concentrazione polvere (pz/0.01cf) byte alto */ [7], /* Concentrazione polvere (pz/0.01cf) low byte */ [8], /* Intensità luminosa (lux) high byte */ [9], /* Intensità luminosa (lux) low byte */ [10], /* Concentrazione O2 (%) */ [11], /* Temperatura del suolo (℃) */ [12], /* Umidità del suolo (%) */ [13], /* Tensione della batteria (V) */ [14] /* Codice errore sensore */ }
Ogni bit nel byte del codice di errore del sensore ha un significato diverso, proprio come di seguito:
{
bit0: 1; /* Errore sensore barometro */ bit1: 1; /* Errore sensore CO2 */ bit2: 1; /* Errore sensore polvere */ bit3: 1; /* Errore sensore di luce */ bit4: 1; /* Errore sensore O2 */ bit5: 1; /* Errore sensore suolo */ riservato: 2; /* Riservato */ }
Parte gateway
Gateway Part è un Raspberry Pi che ha collegato il modulo Gateway RHF0M301–868 e PRI 2 Bridge RHF4T002, installato in una scatola impermeabile e collegato all'alimentazione e alla fotocamera USB tramite giunti idrici. Poiché utilizza un firmware specializzato, segui Seeed Wiki per configurarlo.
Fase 4: Programmazione del software
Come connessione hardware, anche la programmazione software può essere suddivisa, può essere suddivisa in 3 parti: nodo, gateway e sito Web.
Parte del nodo
La maggior parte dei driver richiesti da Node Part sono già contenuti nella cartella origin_driver. Le librerie seguenti devono essere installate manualmente:
Adafruit_ASFcore
Poiché il progetto è complicato, ti consigliamo di utilizzare Microsoft Visual Studio invece di Arduino IDE. Un plug-in chiamato Visual Micro può aiutarti a creare un progetto Arduino utilizzando Visual Studio, fai clic qui per ulteriori informazioni.
Per una migliore leggibilità e manutenibilità, questa volta utilizziamo la programmazione orientata agli oggetti. Il diagramma delle classi di questo progetto è simile al seguente:
Per quei sensori che hanno già un driver OOP, lo abbiamo riconfezionato per adattare questo progetto, per altri, abbiamo riscritto i loro driver usando OOP. La classe Sensor nel livello middleware viene utilizzata per unificare le interfacce di sensori reali, ad esempio un sensore barometro può raccogliere contemporaneamente temperatura, umidità e altitudine, quindi ha 3 interfacce per acquisire temperatura, umidità e altitudine. Ma hanno un nome di metodo diverso, che renderà più complicato il programma di acquisizione del valore dei sensori, proprio come questo:
barometro->getTemperature();
barometro->getHumidity(); barometro->getAltitude(); // … altro_sensore->getSomeValue(); // …
Ma usando OOP, sembra così:
for (auto i = 0; i getValue();
}
Abbiamo anche confezionato una classe Application, implementa l'interfaccia IApplication, il metodo setup() e loop() in IoTea.ino può chiamare il metodo setup() e loop() nell'oggetto Application.
NOTA: USB Seriale viene utilizzato SOLO per il debug. Dopo il debug, commentare è inizializzare il codice nel metodo setup().
Parte gateway
Il programma Python di Gateway Part nella cartella home viene utilizzato per scattare foto e caricarle sul server Amazon S3 ogni ora. Prima di usarlo, assicurati che fswebcam sia già installato nel tuo Raspberry Pi:
sudo apt-get update && sudo apt-get install fswebcam
Se desideri caricare foto, configura il tuo AWS seguendo i passaggi. Innanzitutto, installa AWS SDK e AWS CLI sul tuo Raspberry Pi utilizzando questi comandi:
sudo pip install boto3
sudo pip install awscli
e quindi, esegui AWS CLI:
sudo aws configure
Configura l'ID della chiave di accesso AWS, l'ID di accesso segreto AWS e il nome della regione predefinita.
Se non ti piace caricare le tue foto, puoi saltare i passaggi di configurazione di AWS e commentare i codici sul caricamento in photo.py. Per eseguire questo programma dopo aver avviato ogni volta Raspberry Pi, puoi creare una foto con il nome del file in /etc/init.d e scriverci il codice seguente.
#!/bin/bash
# /etc/init.d/photo ### BEGIN INIT INFO # Fornisce: seeed_photo # Avvio richiesto: $remote_fs $syslog # Stop richiesto: $fs_remoto $syslog # Avvio predefinito: 2 3 4 5 # Stop predefinito: 0 1 6 # Descrizione breve: initscript per scattare foto # Descrizione: Questo servizio viene utilizzato per gestire lo scatto di foto ### END INIT INFO case "$1" in start) echo "Inizia a scattare foto" /home/rxhf/photo.py &;; stop) echo "Smetti di scattare foto" kill $(ps aux | grep -m 1 'python3 /home/rxhf/photo.py' | awk '{ print $2 }');; *) echo "Utilizzo: start|stop foto servizio" exit 1;; esac uscita 0
impostare il permesso di esecuzione
sudo chmod 777 /etc/init.d/photo
sudo chmod 777 /home/rxhf/photo.py
e provalo
sudo /etc/init.d/photo start
Se non ci sono problemi, fermalo e aggiungilo all'applicazione di avvio
sudo /etc/init.d/photo stop
sudo update-rc.d impostazioni predefinite foto
NOTA: se si desidera avviare il gateway dopo l'avvio di Raspberry Pi, aggiungere i codici di avvio del gateway in Seeed Wiki a /etc/rc.local, in modo che assomigli a:
#!/bin/sh -e
# # rc.local # # Questo script viene eseguito alla fine di ogni runlevel multiutente. # Assicurati che lo script "uscirà da 0" in caso di successo o qualsiasi altro # valore in caso di errore. # # Per abilitare o disabilitare questo script basta cambiare i # bit di esecuzione. # # Di default questo script non fa nulla. # Stampa l'indirizzo IP _IP=$(hostname -I) || vero se ["$_IP"]; quindi printf "Il mio indirizzo IP è %s\n" "$_IP" fi cd /home/rxhf/loriot/1.0.2 sudo systemctl stop pktfwd sudo gwrst wget https://cn1.loriot.io/home/gwsw/loriot -risinghf-r… -O loriot-gw.bin chmod +x loriot-gw.bin./loriot-gw.bin -f -s cn1.loriot.io exit 0
Sito web
Abbiamo distribuito il sito Web su CentOS 7. I seguenti passaggi ti mostreranno come eseguire la distribuzione.
Passaggio 1. Installa Python3
sudo yum -y install epel-release
sudo yum -y install python36
Passaggio 2. Installa Python pip e ambiente virtuale
wget
sudo python36 get-pip.py sudo pip install virtualenv
Setp 3. Clona il nostro sito Web da GitHub
sudo yum -y install git
git clone
Passaggio 4. Crea e attiva l'ambiente virtuale
virtualenv -p python36 iotea-hb
cd iotea-hb source bin/activate
Passaggio 5. Installa le librerie dipendenti
pip install pymysql
pip install dbutils pip install flask pip install websocket-client pip install cofigparser
Passaggio 6. Crea database
sudo yum -y install mariadb mariabd-server
sudo systemctl enable mariadb sudo systemctl start mariadb mysql -uroot -p
e poi usa iotea_hb.sql per creare una tabella.
Passaggio 7. Crea db.ini e scrivici questi codici
[db]
db_port = 3306 db_user = root db_host = localhost db_pass = db_name = iotea
cambia il percorso di db.ini in db.py
# in db.py
#cf.read("/data/www/python3_iotea_hb/iotea/conf/db.ini") cf.read("/home//iotea-hb/db.ini")
Passaggio 8. Cambia porta in app.py e avvia il sito Web:
# in app.py
#app.run(debug=True, port=6000) app.run(debug=True, port=8080)
# nel terminale
pip install gunicorn gunicorn -w 5 -b 0.0.0.0:8080 app:app
ora visita 127.0.0.1:8080 nel tuo browser web, puoi vedere il sito web, ma i dati in tempo reale non vengono visualizzati.
Passaggio 9. Ottieni i dati di Loriot
Apri un altro terminale, rientra nell'ambiente virtuale e avvia l'app loriot:
cd iotea-hb
source bin/activate gunicorn loriot: app
Aspetta un po', vedrai i dati visualizzati nel sito web, oppure puoi cambiare wss in loriot.py:
# in loriot.py
#ws = create_connection("wss://cn1.loriot.io/app?token=vnwEuwAAAA1jbjEubG9yaW90LmlvRpscoh9Uq1L7K1zbrcBz6w==")
ws = create_connection()
Passaggio 5: operazione
Puoi visitare i nostri siti Web per visualizzare i dati in tempo reale:
- a Ya'an
- Per dimostrazione
Consigliato:
Aggiornamento del trapano cordless economico!: 4 passaggi
Aggiornamento del trapano cordless economico!: Questa volta condividerò come aggiornare la batteria del trapano cordless economico. L'unica cosa che aggiorneremo è solo la batteria stessa, dal momento che il trapano economico ha una piccola capacità della batteria. Aggiungeremo alcune funzioni sulla batteria ! Funzionalità aggiunte: Carica il b
(AGGIORNAMENTO - C'È UN LEGGERISSIMO PROBLEMA) CONTROLLER DI GIOCO USB PER P.C: 10 passaggi (con immagini)
(AGGIORNAMENTO - C'È UN LEGGERISSIMO PROBLEMA) CONTROLLER DI GIOCO USB PER P.C: UN CONTROLLER DI GIOCO PER QUALSIASI GIOCO (QUASI)
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 LoRa IoTea Solution: 5 passaggi
Seeed LoRa IoTea Solution: un sistema di raccolta automatica delle informazioni applicato alla piantagione di tè. Fa parte della raccolta intelligente di informazioni sull'agricoltura
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