Automatyczny sterownik nawadniania ogrodu oparty na ESP32 może według opinii hobbystów zastąpić drogie komercyjne rozwiązania. Projekt umożliwia sterowanie zaworami elektromagnetycznymi przez panel www oraz automatyczne nawadnianie według harmonogramu lub odczytu wilgotności gleby.
Potrzebne komponenty
- ESP32 DevKit V1
- Moduł przekaźnika 4-kanałowego 5V
- Zawory elektromagnetyczne 12V DC (1 na strefę nawadniania)
- Zasilacz 12V + konwerter 12V→5V dla ESP32
- Opcjonalnie: czujnik wilgotności gleby capacitive v1.2
Panel webowy – AsyncWebServer
#include <WiFi.h>
#include <ESPAsyncWebServer.h>
#include <SPIFFS.h>
#include <ArduinoJson.h>
AsyncWebServer serwer(80);
const int zawory[] = {26, 27, 14, 12}; // piny przekaźników
bool stanZaworu[4] = {false, false, false, false};
void setup() {
for (int i = 0; i < 4; i++) {
pinMode(zawory[i], OUTPUT);
digitalWrite(zawory[i], HIGH); // przekaźnik LOW-active
}
WiFi.begin("SSID", "HASLO");
SPIFFS.begin(true);
serwer.on("/api/zawor", HTTP_POST, [](AsyncWebServerRequest *req){}, NULL,
[](AsyncWebServerRequest *req, uint8_t *data, size_t len, size_t, size_t) {
StaticJsonDocument<64> doc;
deserializeJson(doc, data, len);
int nr = doc["nr"];
bool on = doc["on"];
if (nr >= 0 && nr < 4) {
stanZaworu[nr] = on;
digitalWrite(zawory[nr], on ? LOW : HIGH);
}
req->send(200, "application/json", "{"ok":true}");
});
serwer.serveStatic("/", SPIFFS, "/").setDefaultFile("index.html");
serwer.begin();
}
Harmonogram nawadniania
Harmonogram można zaimplementować przy pomocy biblioteki TaskScheduler lub prostego timera opartego na millis(). Dane harmonogramu warto zapisywać w pamięci NVS (Preferences) lub na karcie SD, żeby przetrwały restart urządzenia.