Sommario:
- Forniture
- Passaggio 1: misurare la temperatura e l'umidità
- Passaggio 2: crea e configura il progetto
- Passaggio 3: installa le librerie
- Passaggio 4: collegare un sensore DHT11
- Passaggio 5: invio di dati al cloud
- Passaggio 6: diagnostica
- Passaggio 7: avviare ed eseguire il debug del progetto
- Passaggio 8: configurazione del dashboard
- Passaggio 9: conclusione
Video: Collegamento di un sensore DHT11/DHT22 al cloud con una scheda basata su ESP8266: 9 passaggi
2024 Autore: John Day | [email protected]. Ultima modifica: 2024-01-30 10:02
Nell'articolo precedente, ho collegato la mia scheda NodeMCU basata su ESP8266 a un servizio Cloud4RPi. Ora è il momento di un vero progetto!
Forniture
Requisiti hardware:
- Qualsiasi scheda basata su un chip ESP8266 (ad esempio NodeMCU)
- Un sensore DHT11 o DHT22
Software e servizi:
- Libreria di sensori DHT di Adafruit - v1.3.7
- Sensore unificato Adafruit - v1.0.3
- cloud4rpi-esp-arduino - v0.1.0
- Cloud4RPI - Pannello di controllo in cloud per dispositivi IoT
- PlatformIO IDE per VSCode
Passaggio 1: misurare la temperatura e l'umidità
Possedevo già un sensore DHT11, quindi ho deciso di utilizzarlo per misurazioni di temperatura e umidità. Scegliamo una libreria Arduino per leggere i dati del sensore.
Il registro di Arduino contiene diverse librerie, tra le quali ho selezionato quella più popolare.
Secondo il loro repository GitHub, ci viene anche richiesto di aggiungere un pacchetto Adafruit Unified Sensor.
Passaggio 2: crea e configura il progetto
Ho già descritto come creare un progetto PlatformIO e installare le librerie nella prima parte. Il mio progetto si chiama "MyNodeMCU". La struttura è mostrata sopra.
Questo progetto è un esempio Cloud4RPi leggermente modificato. Ho deciso di memorizzare il token del dispositivo e le credenziali Wi-Fi nel file di configurazione invece del codice.
Il file platform.io ha il seguente aspetto:
[platformio]default_envs = nodemcuv2[env:nodemcuv2] platform = espressif8266 framework = arduino board = nodemcuv2
Passaggio 3: installa le librerie
L'installazione delle librerie è abbastanza semplice. Puoi farlo dall'interfaccia grafica dell'IDE o aggiungendo i nomi delle librerie richieste alla sezione lib_deps del file platform.io:
; …lib_deps = cloud4rpi-esp-arduino Adafruit Unified Sensor Libreria di sensori DHT build_flags = -D MQTT_MAX_PACKET_SIZE=1024 -D MQTT_MAX_TRANSFER_SIZE=128 -D CLOUD4RPI_DEBUG=0 -D SSID_Y\NAME=\"=_YOUR_PASS_P_I\" -WORD_WIFI_\" D CLOUD4RPI_TOKEN=\"_IL_TUO_DISPOSITIVO_TOKEN_\"
Le librerie aggiunte verranno installate automaticamente nella sottocartella di un progetto.
L'intestazione main.cpp ha il seguente aspetto:
#include #include #include #include "DHT.h"
Passaggio 4: collegare un sensore DHT11
Adafruit fornisce un esempio DHTtester.ino di connessione di un sensore.
Questo codice inizializza un sensore e definisce una struttura per memorizzare il risultato della misurazione (nel caso sia andata a buon fine):
#define DHTPIN 2 // Pin digitale connesso al sensore DHT#define DHTTYPE DHT11 // DHT 11 // … DHT dht(DHTPIN, DHTTYPE); dht.begin(); // … struct DHT_Result { float h; galleggiante t; }; DHT_Result dhtResult;
La funzione successiva mostra come leggere i dati del sensore e memorizzarli nella struttura dati sopra descritta
void readSensors() { float h = dht.readHumidity(); // Legge la temperatura come Celsius (predefinita) float t = dht.readTemperature();
// Controlla se qualche lettura è fallita ed esci
if (isnan(h) || isnan(t)) { Serial.println(F("Impossibile leggere dal sensore DHT!")); Restituzione; } dhtResult.h = h; dhtResult.t = t; }
Passaggio 5: invio di dati al cloud
Una volta che abbiamo quei dati, il passo successivo è inviarli al servizio Cloud4RPi.
La pagina Cloud4RPi per Arduino descrive l'API della libreria, che è un insieme di metodi utilizzati per:
- creare, leggere e aggiornare le variabili,
- inviare valori variabili nel cloud utilizzando il protocollo MQTT.
La libreria supporta tre tipi di variabili: Bool, Numeric e String.
Il flusso di lavoro della libreria inizia con la creazione di un'istanza API utilizzando il token del dispositivo dal sito Web cloud4rpi.io (fare riferimento alla parte 1 dell'articolo per i dettagli).
#se definito(CLOUD4RPI_TOKEN) Cloud4RPi c4r(CLOUD4RPI_TOKEN); #else Cloud4RPi c4r("!!!_NO_DEVICE_TOKEN_!!!"); #finisci se
Quindi, dichiara le variabili per le letture DHT11:
c4r.declareNumericVariable("DHT11_Temp");c4r.declareNumericVariable("DHT11_Hum");
Quindi, prendi i dati dal sensore, salvali in variabili e pubblica i dati su Cloud4RPi:
c4r.setVariable("DHT11_Temp", dhtResult.t);c4r.setVariable("DHT11_Hum", dhtResult.h); c4r.publishData();
La temperatura e l'umidità non cambiano rapidamente, quindi non è necessario inviare più di un valore ogni 5 minuti.
Passaggio 6: diagnostica
Cloud4RPi supporta dati di diagnostica insieme a valori variabili. Ho usato il tempo di attività, la potenza del segnale Wi-Fi e l'indirizzo IP come dati diagnostici:
c4r.declareDiagVariable("Indirizzo_IP");c4r.declareDiagVariable("RSSI"); // Potenza del segnale WiFi c4r.declareDiagVariable("Uptime");
Nota: la funzione millis che utilizzo per ottenere il tempo di attività si azzera ogni ~50 giorni. Che è più che sufficiente per il mio progetto.
Il codice seguente imposta i valori delle variabili diagnostiche:
c4r.setDiagVariable("RSSI", (String)WiFi. RSSI() + " dBm");c4r.setDiagVariable("IP_Address", WiFi.localIP().toString()); c4r.setDiagVariable("Uptime", uptimeHumanReadable(currentMillis)); c4r.publishDiag();
La funzione uptimeHumanReadable converte i millisecondi in una forma conveniente:
String uptimeHumanReadable (millisecondi lunghi senza segno) { static char uptimeStr[32]; secondi lunghi senza segno = millisecondi / 1000; unsigned long mins = secs / 60; unsigned int ore = min / 60; unsigned int giorni = ore / 24; secondi -= minuti * 60; minuti -= ore * 60; ore -= giorni * 24; sprintf(uptimeStr, "%d giorni %2.2d:%2.2d:%2.2d", (byte)giorni, (byte)ore, (byte)min, (byte)sec); return String(uptimeStr); }
La funzione restituisce una stringa come questa 5 giorni 10:23:14 invece di uno strano numero grande.
Passaggio 7: avviare ed eseguire il debug del progetto
Dopo aver compilato il codice creato e averlo flashato in NodeMCU, il dispositivo si connette a un servizio cloud e inizia a inviare dati.
È possibile aumentare la verbosità della registrazione impostando la variabile del preprocessore CLOUD4RPI_DEBUG su 1 (aggiungere -D CLOUD4RPI_DEBUG=1 alla sezione build_flags nel file platform.io).
Quindi, apri il sito cloud4rpi.io e nota il nuovo dispositivo online. Aprilo per vedere tutti i valori delle variabili ricevuti dal dispositivo: sensore e diagnostica.
Passaggio 8: configurazione del dashboard
A questo punto la connessione dati al cloud è operativa. Ora, configuriamo la rappresentazione visiva dei dati.
Ho utilizzato l'interfaccia utente di configurazione del dashboard per creare il dashboard seguente.
La dashboard è condivisibile, quindi la condivido immediatamente con il mio amico.
Passaggio 9: conclusione
Il codice completo del progetto è disponibile nel sommario.
È tutto per ora!
Domande e suggerimenti sono ben accetti nei commenti.
Consigliato:
Sensore meteorologico compatto con collegamento dati GPRS (scheda SIM): 4 passaggi
Sensore meteorologico compatto con collegamento dati GPRS (scheda SIM): riepilogo del progettoSi tratta di un sensore meteorologico alimentato a batteria basato su un sensore di temperatura/pressione/umidità BME280 e un MCU ATMega328P. Funziona con due batterie AA al litio tionile da 3,6 V. Ha un consumo di sonno estremamente basso di 6 µA. Invia dat
Sensore di temperatura e umidità (DHT22) con scheda Dexter: 7 passaggi
Sensore di temperatura e umidità (DHT22) con scheda Dexter: la scheda Dexter è un kit di addestramento educativo che rende l'apprendimento dell'elettronica facile e divertente. La scheda riunisce tutte le parti necessarie che un principiante richiede per trasformare un'idea in un prototipo di successo. Con Arduino al centro, un numero enorme di o
DOMOTICA BASATA SU SERVER MQTT LOCALE CON RASPBERRY PI E SCHEDA NODEMCU: 6 Passaggi
DOMOTICA BASATA SU SERVER MQTT LOCALE UTILIZZANDO LA SCHEDA RASPBERRY PI E NODEMCU: Fino ad ora ho realizzato diversi video tutorial riguardanti il controllo degli elettrodomestici su internet. E per questo ho sempre preferito il server Adafruit MQTT perché era facile da usare e anche facile da usare. Ma tutta quella cosa era basata su Internet. Ciò significa che noi
Giocare al gioco Flappy Bird con la scheda di sviluppo M5stick C basata su M5stack Esp32: 5 passaggi
Giocare al gioco Flappy Bird con la scheda di sviluppo M5stick C basata su M5stack Esp32: Ciao ragazzi oggi impareremo come caricare il codice del gioco Flappy Bird sulla scheda di sviluppo m5stick c fornita da m5stack. Per questo piccolo progetto avrai bisogno di due cose: m5stick-c scheda di sviluppo: https://www.utsource.net/itm/p/8663561.h
Come programmare una scheda AVR utilizzando una scheda Arduino: 6 passaggi
Come programmare una scheda AVR utilizzando una scheda Arduino: hai una scheda microcontrollore AVR in giro? È complicato programmarlo? Bene, sei nel posto giusto. Qui, ti mostrerò come programmare una scheda microcontrollore Atmega8a utilizzando una scheda Arduino Uno come programmatore. Quindi senza ulteriori