Sommario:

Plant Monitor utilizzando ESP32 Thing e Blynk: 5 passaggi
Plant Monitor utilizzando ESP32 Thing e Blynk: 5 passaggi

Video: Plant Monitor utilizzando ESP32 Thing e Blynk: 5 passaggi

Video: Plant Monitor utilizzando ESP32 Thing e Blynk: 5 passaggi
Video: Making IoT Projects is now Easier using Blynk Blueprints 🔥🔥 | ESP32 Projects | IOT Projects | Blynk 2024, Giugno
Anonim
Plant Monitor utilizzando ESP32 Thing e Blynk
Plant Monitor utilizzando ESP32 Thing e Blynk
Plant Monitor utilizzando ESP32 Thing e Blynk
Plant Monitor utilizzando ESP32 Thing e Blynk

Panoramica

L'obiettivo di questo progetto è creare un dispositivo compatto in grado di monitorare le condizioni di una pianta d'appartamento. Il dispositivo consente all'utente di controllare il livello di umidità del suolo, il livello di umidità, la temperatura e la temperatura "sensibile" da uno smartphone utilizzando l'app Blynk. Inoltre, l'utente riceverà un'e-mail di avviso quando le condizioni diventano inadatte per l'impianto. Ad esempio, l'utente riceverà un promemoria per innaffiare la pianta quando i livelli di umidità del suolo scendono al di sotto di un livello adeguato.

Passaggio 1: requisiti

Requisiti
Requisiti
Requisiti
Requisiti
Requisiti
Requisiti

Questo progetto utilizza una cosa Sparkfun ESP32, un sensore DHT22 e un sensore di umidità del suolo di mattoni elettronici. Inoltre, sono necessarie una rete Wi-Fi e l'app Blynk. Preferibilmente, dovrebbe essere creato un involucro impermeabile per contenere la cosa ESP32. Sebbene questo esempio utilizzi una presa standard per una fonte di alimentazione, l'aggiunta di una batteria ricaricabile, un pannello solare e un controller di carica consentirebbe di alimentare il dispositivo tramite energia rinnovabile.

Passaggio 2: Blynk

Blynk
Blynk
Blynk
Blynk
Blynk
Blynk

Per essere, scarica l'app Blynk e crea un nuovo progetto. Prendi nota del token di autenticazione: verrà utilizzato nel codice. Crea nuovi widget di visualizzazione nell'app Blynk e seleziona i pin virtuali corrispondenti definiti nel codice. Imposta l'intervallo di aggiornamento su push. Ad ogni widget dovrebbe essere assegnato il proprio pin virtuale.

Passaggio 3: IDE Arduino

Arduino IDE
Arduino IDE

Scarica Arduino IDE. Segui le istruzioni per il download del driver ESP32 e la demo per garantire la connettività Wi-Fi. Scarica le librerie Blynk e DHT incluse nel codice. Inserisci il token di autenticazione, la password wifi, il nome utente wifi e l'e-mail nel codice finale. Utilizzare il codice demo per il sensore di umidità del suolo per trovare i valori minimo e massimo per il tipo di terreno. Registra e sostituisci questi valori nel codice finale. Sostituire i valori minimi per la temperatura, l'umidità del suolo e l'umidità per la pianta nel codice finale. Carica il codice.

Passaggio 4: costruiscilo

Costruiscilo
Costruiscilo
Costruiscilo
Costruiscilo
Costruiscilo
Costruiscilo

Innanzitutto, collegare il sensore di umidità del suolo a 3,3 V, terra e pin di ingresso 34. Nota, è integrato che l'interruttore sia impostato su A perché verrà utilizzata l'impostazione analogica per questo sensore. Quindi, collegare il sensore DHT a 3,3 V, massa e pin di ingresso 27. Il sensore DHT22 richiede un resistore da 10 K Ohm tra il VCC e il pin di uscita dati. Assicurati di controllare il diagramma DHT per assicurarti che sia cablato correttamente. Configura l'ESP32 all'interno di un involucro impermeabile con il sensore di umidità nel terreno e il sensore DHT sopra la superficie. Collegati a una fonte di alimentazione e goditi i dati sull'ambiente del tuo impianto.

Passaggio 5: codice

//Librerie incluse

#define BLYNK_PRINT seriale

#include #include #include #include "DHT.h"

//Informazioni sul sensore DHT

#define DHTTYPE DHT22 // DHT 22 (AM2302), AM2321 #define DHTPIN 27 // Pin digitale collegato al sensore DHT DHT dht(DHTPIN, DHTTYPE); // Inizializza il sensore DHT.

//definire pin di input e output

int suolo_sensore = 34; // definisce il numero di pin dell'ingresso analogico collegato al sensore di umidità

int output_value;//definisci come output

int umiditàlevel;//definisci come output

int notificato = 0; //definire notificato come 0

int temporizzazione= 60000L; //imposta il timer per l'esecuzione ottieni i dati una volta ogni minuto o 60.000 millisecondi

//imposta i valori minimi per l'impianto

int min_umidità =20; int temperatura_min =75; int min_umidità =60;

// Dovresti ottenere il token di autenticazione nell'app Blynk.

char auth = "Auth_Token_Here";

// Le tue credenziali WiFi.

char ssid = "Wifi_Network_Here"; char pass = "Wifi_Password_Here";

Timer BlynkTimer;

// Questa funzione invia il tempo di attività di Arduino ogni secondo a Virtual Pin (5).

// Nell'app, la frequenza di lettura del widget dovrebbe essere impostata su PUSH. Ciò significa // che definisci la frequenza con cui inviare i dati all'app Blynk.

void Sensors () // funzione principale per leggere i sensori e inviare a blynk

{ output_value = analogRead(soil_sensor);// Legge il segnale analogico da soil_sensor e definisce come output_value //Mappa output_vlaue dai valori min, max a 100, 0 e vincola tra 0, 100 //Utilizza il codice di esempio e il monitor seriale per trovare min e valori massimi per singolo sensore e tipo di suolo per una migliore calibrazione umiditàlevel = constrain (map(output_value, 1000, 4095, 100, 0), 0, 100); float h = dht.readHumidity(); // Legge l'umidità float t = dht.readTemperature(); // Legge la temperatura come Celsius (il valore predefinito) float f = dht.readTemperature(true); // Legge la temperatura come Fahrenheit (isFahrenheit = true) // Calcola l'indice di calore in Fahrenheit (predefinito) float hif = dht.computeHeatIndex(f, h); // Controlla se qualche lettura ha avuto esito negativo ed esci prima (per riprovare). if (isnan(h) || isnan(t) || isnan(f)) { Serial.println(F("Impossibile leggere dal sensore DHT!")); Restituzione; } // Questo collega i vales ai pin virtuali definiti nei widget nell'app Blynk Blynk.virtualWrite(V5, umiditàlevel);// Invia il livello di umidità al pin virtuale 5 Blynk.virtualWrite(V6, f); // Invia la temperatura al virtual pin 6 Blynk.virtualWrite(V7, h);// Invia umidità al pin virtuale 7 Blynk.virtualWrite(V8, hif);// Invia indice di calore al pin virtuale 8

se (notificato==0)

{ if (livello di umidità <= min_moisture) // Se il livello di umidità è uguale o inferiore al valore minimo { Blynk.email("Email_Here", "Plant Monitor", "Water Plant!"); // Invia email all'impianto idrico } delay (15000); // Le email di Blynk devono essere distanziate di 15 secondi. Ritardo 15000 millisecondi if (f <= min_temperature) // Se la temperatura è uguale o inferiore al valore minimo { Blynk.email("Email_Here", "Plant Monitor", "Temperature Low!"); // Invia un'e-mail che la temperatura è bassa

}

ritardo (15000); // Le email di Blynk devono essere distanziate di 15 secondi. Ritardo 15000 millisecondi if (h <= min_humidity) // Se l'umidità è uguale o inferiore al valore minimo { Blynk.email("Emial_Here", "Plant Monitor", "Humidity Low!"); // Invia email che l'umidità è bassa } notificato = 1; timer.setTimeout(timedelay *5, resetNotified); // moltiplica il ritardo per il numero di minuti desiderati tra le email di avviso ripetute } }

void resetNotified() //funzione chiamata per ripristinare la frequenza delle email

{ notificato = 0; }

configurazione nulla()

{ Serial.begin(9600); // Console di debug Blynk.begin(auth, ssid, pass); // connettersi a blynk timer.setInterval(timedelay, Sensors); // Imposta una funzione da chiamare ogni minuto o quale timedelay è impostato su dht.begin(); //esegui il sensore DHT }

// Il loop vuoto dovrebbe contenere solo blynk.run e timer

void loop() { Blynk.run(); // Esegui blynk timer.run(); // Avvia BlynkTimer }

Consigliato: