Sommario:

UCL - Serra IIOT: 11 passaggi
UCL - Serra IIOT: 11 passaggi

Video: UCL - Serra IIOT: 11 passaggi

Video: UCL - Serra IIOT: 11 passaggi
Video: Pós-graduação UCL 2024, Luglio
Anonim
UCL - IIOT Serra
UCL - IIOT Serra

Questo progetto è un'estensione del nostro precedente progetto con la serra (https://www.instructables.com/id/EAL-EMBEDDED-GREE…).

In questo progetto abbiamo aggiunto un database, dove registriamo tutti i nostri dati e poi li visualizziamo con node-red per una panoramica più ampia.

Il contenuto che registriamo nel nostro database è umidità, temperatura e umidità del suolo, che viene mostrato in diversi diagrammi.

Oltre al dataloggin siamo anche in grado di controllare quale profilo è attivo nella Serra e controllarlo da remoto.

Quindi siamo anche in grado di controllare manualmente la pompa e il ventilatore.

Passaggio 1: guida all'installazione

Guida d'installazione
Guida d'installazione

Il primo passo è installare tutti i diversi componenti.

All'interno delle parentesi (), abbiamo elencato dove è collegato il componente. Quindi, ad esempio, Arduino è collegato a Raspberry Pi tramite un cavo USB.

Hardware utilizzato:

  • Arduino (Raspberry Pi)
  • Raspberry Pi 3 B+
  • Igrometro da suolo (Arduino)
  • Sensore DHT11 (Arduino)
  • Pompa dell'acqua sommergibile HG-320 (relè)
  • Relè 5V (Arduino)
  • Un fan del computer (Relè)
  • Alimentazione 230V (Pompa)

Software utilizzato:

  • Raspbian (sistema operativo per Raspberry Pi)
  • Arduino IDE
  • Python (Raspberry Pi)- PySerial- MySQLclient
  • Node-Red (Raspberry Pi)- Pythonshell- Summariser- MySQL- Dashboard
  • Server MySQL (freemysqlhosting.net)

Per prima cosa dovrai collegare i componenti hardware, quindi segui questa guida per costruire la serra: Guida all'installazione.

Quindi dovrai installare il sistema operativo Raspbian sul tuo Raspberry Pi. Dopodiché dovrai installare Python e quindi installare le librerie Python.

Il prossimo passo è installare Node-Red sul Raspberry Pi, quindi accedere al gestore pallet e installare i moduli indicati in precedenza.

Quindi vai su questo sito Free MySQL Server e crea un server MySQL gratuito.

Quando tutto questo è fatto, sei pronto per trasferire lo script Python sul tuo Raspberry Pi, importare lo script Node-Red e caricare il codice per Arduino.

Passaggio 2: vetrina del controllo

Image
Image

Passaggio 3: elenco delle parti/software utilizzati nel progetto

Abbiamo utilizzato la seguente tecnologia per realizzare la serra

  • Arduino
  • Lampone Pi
  • Nodo-rosso
  • Pitone
  • PHPMyAdmin

Passaggio 4: elenco I/0

Schema elettrico
Schema elettrico

Passaggio 5: schema elettrico

Passaggio 6: il codice Arduino

Il codice Arduino funziona stampando i dati, misurati dai sensori, sulla connessione seriale dove vengono letti dal Raspberry Pi e trasferiti al database.

L'Arduino ha anche alcuni ingressi digitali collegati al Raspberry Pi che l'Arduino legge e se uno dei tre diventa ALTO il profilo cambierà a causa di un'istruzione IF.

Inoltre, abbiamo aggiornato il codice per utilizzare Millis invece del ritardo che consente di leggere continuamente i pulsanti e il resto del codice invece di un intervallo dal vecchio ritardo.

Passaggio 7: Raspberry Pi 3 B+

Raspberry Pi 3 B+
Raspberry Pi 3 B+

Abbiamo usato un Raspberry Pi 3 B+ per connettere il nostro Arduino con Internet e un database MySQL. Questo ci ha permesso di memorizzare i dati dai nostri sensori e creare un'interfaccia visiva per l'utente finale. Per l'interfaccia utente abbiamo utilizzato Node-Red con la palette Dashboard.

Ma prima di poter mostrare i dati dei nostri sensori su Node-Red, avevamo bisogno di un modo per caricare i dati su un database MySQL, e per questo abbiamo creato uno script Python che potesse essere eseguito sul nostro Raspberry Pi.

Passaggio 8: Python

Pitone
Pitone

Lo script Python viene utilizzato per ricevere dati dalla comunicazione seriale proveniente da Arduino. Lo script invia quindi i dati a un database MySQL.

Abbiamo usato due librerie, pyserial e mysqlclient.

Quindi il primo passo sarebbe scaricare queste due librerie:

  1. PySerial
  2. MySQLclient

PySerial viene utilizzato per raccogliere dati da Arduino tramite comunicazione seriale.

dispositivo = '/dev/ttyUSB0'

arduino = serial. Serial(dispositivo, 9600)

La prima riga viene utilizzata per definire la nostra porta COM. Sul Raspberry Pi è /dev/ttyUSB0, che usiamo per Arduino. La seconda riga serve per aprire la porta seriale su Arduino. Definiamo semplicemente quale porta COM ea quale velocità è in esecuzione la connessione.

Il resto del codice viene eseguito in un ciclo while.

Successivamente utilizziamo più blocchi Try and Except. Innanzitutto il codice sta cercando di essere eseguito all'interno del blocco Try, se fallisce, esegue il blocco Except. Ma se il blocco Try funziona correttamente, non esegue il blocco Except, esegue solo il resto del codice.

Quindi all'interno dei blocchi Try abbiamo il codice che leggerà la comunicazione seriale e poi la invierà al nostro database MySQL.

hygrolist = arduino.readlines(1)

templist = arduino.readlines(2)humidlist = arduino.readlines(3)

Quindi il codice sopra è per leggere le righe nella comunicazione seriale. Il numero alla fine del codice definisce la riga che è stata letta nel seriale. Quindi queste linee vengono classificate in diverse variabili.

Quando vengono ricevuti i dati da Arduino, abbiamo utilizzato il modulo mysqlclient per inviare i dati al nostro server MySQL.

db = _mysql.connect(host="sql7.freemysqlhosting.net", utente="sql7256552", passwd="3ebtbP8FQ2", db="sql7256552")

Questa riga serve per la connessione al nostro database MySQL. Specifica il server, il nome utente, la password e a quale database deve connettersi all'interno del server. Qui dovresti specificare la connessione al tuo DB MySQL.

db.query("INSERTINTO `TempHumid`(`temp`, `humid`, `hygro`) VALUES (%s, %s, %s)" % (temp, umido, igro))

Quindi qui prendiamo la nostra connessione DB e facciamo una query SQL. La query dice che i valori devono essere inseriti all'interno della tabella “TempHumid” e poi nelle colonne “temp”, “humid” e “hygro”. L'ultima parte "(%s, %s, %s)" è la formattazione della stringa e viene utilizzata per fornire al database un formato che può leggere.

E tutta questa azione viene inserita in un ciclo while, in modo che continuiamo a ricevere i dati inviati al server MySQL.

Se vuoi vedere tutto il codice, scarica lo script python (TempHumid.py).

Passaggio 9: MySQL

MySQL
MySQL
MySQL
MySQL

Per il server MySQL, abbiamo utilizzato un servizio gratuito su www.freemysqlhosting.net. Avremmo potuto creare un server localmente sul Raspberry Pi, ma siamo andati con il servizio gratuito per renderlo completamente connesso al cloud/internet.

Per accedere al tuo MySQL, devi andare su phpmyadmin.co e accedere con le credenziali dal tuo account freemysqlhosting.

Quando sei dentro, devi creare una tabella chiamata "TempHumid", all'interno di questa tabella devi creare 4 colonne chiamate "ID", "temp", "humid" e "hygro". Nella prima colonna (ID) devi spuntare la casella A_I (Auto Increment). In questo modo la colonna ID assegna un ID a ogni set di dati. Tutte le seguenti colonne devono essere impostate come INT (intero) e impostare il valore standard su NULL.

Passaggio 10: nodo rosso

Nodo-rosso
Nodo-rosso
Nodo-rosso
Nodo-rosso
Nodo-rosso
Nodo-rosso

Nel nostro progetto abbiamo utilizzato Node-Red per creare un'interfaccia grafica. Node-Red è in esecuzione sul Raspberry Pi e sta raccogliendo dati dal nostro database MySQL e sta mostrando questi dati con indicatori a forma di ciambella e grafici, in modo che l'utente finale possa monitorare i dati. La cosa intelligente di Node-Red è che è visualizzabile su qualsiasi dispositivo, il che significa che il sito verrà ridimensionato per il determinato dispositivo che sta visualizzando il contenuto.

Per installare la nostra programmazione Node-Red, guarda il passaggio 1 e scarica il documento chiamato "Node-Red.docx". Quindi copia e incolla il testo in Node-Red tramite la funzione di importazione nell'angolo in alto a destra.

Dopodiché modifica le impostazioni del DB per il tuo DB MySQL.

Consigliato: