Spisu treści:

Monitor roślin za pomocą ESP32 Thing i Blynk: 5 kroków
Monitor roślin za pomocą ESP32 Thing i Blynk: 5 kroków

Wideo: Monitor roślin za pomocą ESP32 Thing i Blynk: 5 kroków

Wideo: Monitor roślin za pomocą ESP32 Thing i Blynk: 5 kroków
Wideo: BLYNK zmiana funkcji portu zmianą widgetu - port D6 2024, Czerwiec
Anonim
Monitor roślin za pomocą ESP32 Thing i Blynk
Monitor roślin za pomocą ESP32 Thing i Blynk
Monitor roślin za pomocą ESP32 Thing i Blynk
Monitor roślin za pomocą ESP32 Thing i Blynk

Przegląd

Celem tego projektu jest stworzenie kompaktowego urządzenia zdolnego do monitorowania warunków rośliny doniczkowej. Urządzenie umożliwia użytkownikowi sprawdzenie poziomu wilgotności gleby, poziomu wilgotności, temperatury i „odczuwalnej” temperatury ze smartfona za pomocą aplikacji Blynk. Dodatkowo użytkownik otrzyma powiadomienie e-mail, gdy warunki staną się nieodpowiednie dla zakładu. Na przykład użytkownik otrzyma przypomnienie o podlewaniu rośliny, gdy poziom wilgotności gleby spadnie poniżej odpowiedniego poziomu.

Krok 1: Wymagania

Wymagania
Wymagania
Wymagania
Wymagania
Wymagania
Wymagania

Ten projekt wykorzystuje element Sparkfun ESP32, czujnik DHT22 i elektroniczny czujnik wilgotności gleby w cegle. Dodatkowo wymagana jest sieć Wi-Fi i aplikacja Blynk. Najlepiej stworzyć wodoodporną obudowę, aby pomieścić ESP32. Chociaż ten przykład wykorzystuje standardowe gniazdko dla źródła zasilania, dodanie akumulatora, panelu słonecznego i kontrolera ładowania umożliwiłoby zasilanie urządzenia energią odnawialną.

Krok 2: Blynk

Blynk
Blynk
Blynk
Blynk
Blynk
Blynk

Aby być, pobierz aplikację Blynk i utwórz nowy projekt. Zanotuj token uwierzytelniający - zostanie użyty w kodzie. Utwórz nowe widżety wyświetlania w aplikacji Blynk i wybierz odpowiednie wirtualne szpilki zdefiniowane w kodzie. Ustaw interwał odświeżania do wypychania. Każdy widżet powinien mieć przypisany własny wirtualny pin.

Krok 3: IDE Arduino

IDE Arduino
IDE Arduino

Pobierz Arduino IDE. Postępuj zgodnie z instrukcjami pobierania sterownika ESP32 i wersji demonstracyjnej, aby zapewnić łączność Wi-Fi. Pobierz biblioteki Blynk i DHT zawarte w kodzie. Wpisz token uwierzytelniający, hasło Wi-Fi, nazwę użytkownika Wi-Fi i adres e-mail w końcowym kodzie. Użyj kodu demonstracyjnego czujnika wilgotności gleby, aby znaleźć minimalne i maksymalne wartości dla typu gleby. Zapisz i zastąp te wartości w końcowym kodzie. Zastąp minimalne wartości temperatury, wilgotności gleby i wilgotności dla rośliny w końcowym kodzie. Prześlij kod.

Krok 4: Zbuduj to

Zbuduj to
Zbuduj to
Zbuduj to
Zbuduj to
Zbuduj to
Zbuduj to

Najpierw podłącz czujnik wilgotności gleby do 3,3 V, uziemienia i styku wejściowego 34. Zauważ, że jest integralną częścią przełącznika ustawionego na A, ponieważ zostanie użyte ustawienie analogowe dla tego czujnika. Następnie podłącz czujnik DHT do styku 3,3 V, masy i wejścia 27. Czujnik DHT22 wymaga rezystora 10K Ohm między VCC a stykiem wyjścia danych. Pamiętaj, aby sprawdzić schemat DHT, aby upewnić się, że jest prawidłowo podłączony. Skonfiguruj ESP32 w wodoodpornej obudowie z czujnikiem wilgoci w glebie i czujnikiem DHT nad powierzchnią. Podłącz się do źródła zasilania i ciesz się danymi o środowisku zakładu.

Krok 5: Kod

//Dołączone biblioteki

#define BLYNK_PRINT Serial

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

//Informacje z czujnika DHT

#define DHTTYPE DHT22 // DHT 22 (AM2302), AM2321 #define DHTPIN 27 // Cyfrowy pin podłączony do czujnika DHT DHT dht(DHTPIN, DHTTYPE); // Zainicjuj czujnik DHT.

//zdefiniuj piny wejściowe i wyjścia

int czujnik_gleby = 34; //zdefiniuj numer pinu wejścia analogowego podłączonego do czujnika wilgotności

int output_value;//zdefiniuj jako output

int wilgotność;//zdefiniuj jako wyjście

int powiadomiony = 0; //zdefiniuj powiadomienie jako 0

int opóźnienie czasowe= 60000L; //ustaw timer, aby uruchomić pobieranie danych raz na minutę lub 60 000 milisekund

//ustaw minimalne wartości dla rośliny

int min_wilgotność =20; int min_temperatura =75; int min_wilgotność =60;

// Powinieneś uzyskać Auth Token w aplikacji Blynk.

char auth = "Auth_Token_Here";

// Twoje dane logowania do Wi-Fi.

char ssid = "Tutaj_sieć_Wi-Fi"; char pass = "Wifi_Password_Here";

Zegar BlynkTimer;

// Ta funkcja wysyła czas działania Arduino co sekundę do Virtual Pin (5).

// W aplikacji częstotliwość czytania widgetu powinna być ustawiona na PUSH. Oznacza to // że określasz, jak często wysyłać dane do aplikacji Blynk.

void Sensors () //główna funkcja odczytu czujników i push to blynk

{ output_value = analogRead(soil_sensor);// Odczytaj analogowy sygnał z czujnika gleby i zdefiniuj go jako output_value //Odwzoruj wartość_wyjściową od min, max wartości do 100, 0 i ogranicz między 0, 100 //Użyj kodu próbki i monitora szeregowego, aby znaleźć min i max wartości dla poszczególnych czujników i rodzaju gleby dla lepszej kalibracji poziom wilgotności = ograniczenie (map(output_value, 1000, 4095, 100, 0), 0, 100); float h = dht.odczytWilgotność(); // Odczyt wilgotności float t = dht.readTemperature(); // Odczytaj temperaturę w stopniach Celsjusza (domyślnie) float f = dht.readTemperature(true); // Odczytaj temperaturę w stopniach Fahrenheita (isFahrenheit = true) // Oblicz wskaźnik ciepła w stopniach Fahrenheita (domyślnie) float hif = dht.computeHeatIndex(f, h); // Sprawdź, czy jakiekolwiek odczyty nie powiodły się i wyjdź wcześniej (aby spróbować ponownie). if (isnan(h) || isnan(t) || isnan(f)) { Serial.println(F("Nie udało się odczytać z czujnika DHT!")); powrót; } //To łączy wartości z wirtualnymi pinami zdefiniowanymi w widżetach w aplikacji Blynk Blynk.virtualWrite(V5, poziom wilgoci);// Wyślij poziom wilgotności do wirtualnego pinu 5 Blynk.virtualWrite(V6, f);// Wyślij temperaturę do wirtualnego pin 6 Blynk.virtualWrite(V7, h);// Wyślij wilgotność do wirtualnego pinu 7 Blynk.virtualWrite(V8, hif);// Wyślij indeks ciepła do wirtualnego pinu 8

jeśli (powiadomiony==0)

{ if (poziom wilgoci <= min_moisture) // Jeśli poziom wilgotności jest równy lub niższy od wartości minimalnej { Blynk.email("Email_Here", "Monitor roślin", "Fabryka wodna!"); // Wyślij email do wodociągu } delay (15000); // E-maile Blynk muszą być oddalone od siebie o 15 sekund. Opóźnienie 15000 milisekund if (f <= min_temperature) // Jeśli temperatura jest równa lub niższa od wartości min { Blynk.email("Email_Here", "Monitor roślin", "Niska temperatura!"); // Wyślij e-mail, że temperatura jest niska

}

opóźnienie (15000); // E-maile Blynk muszą być oddalone od siebie o 15 sekund. Opóźnienie 15000 milisekund if (h <= min_humidity) // Jeśli wilgotność jest równa lub niższa od wartości min { Blynk.email("Emial_Here", "Plant Monitor", "Humidity Low!"); // Wyślij e-mail, że wilgotność jest niska } notified = 1; timer.setTimeout(opóźnienie czasowe *5, resetNotified); // pomnóż opóźnienie czasowe przez liczbę minut pomiędzy kolejnymi ostrzeżeniami } }

void resetNotified() //funkcja wywoływana w celu zresetowania częstotliwości e-maili

{ powiadomiony = 0; }

pusta konfiguracja()

{ Szeregowy.początek(9600); // Debuguj konsolę Blynk.begin(auth, ssid, pass); // połącz się z blynk timer.setInterval(timedelay, Sensors); // Ustaw funkcję, która ma być wywoływana co minutę lub z opóźnieniem ustawionym na dht.begin(); //uruchom czujnik DHT }

//Pętla Void powinna zawierać tylko blynk.run i timer

void loop() { Blynk.run(); // Uruchom blynk timer.run(); // Inicjuje BlynkTimer }

Zalecana: