Co je relé?
Relé je elektromechanický spínač, který umožňuje ESP32 (logika 3,3V) ovládat obvody s vyšším napětím – například vodní pumpu napájenou z 5V nebo 12V zdroje. ESP32 samo o sobě nedokáže pumpu napájet přímo z GPIO pinu – relé funguje jako prostředník.
Princip je jednoduchý: ESP32 pošle signál na řídicí pin relé, uvnitř relé se aktivuje elektromagnet, který mechanicky sepne nebo rozepne silový obvod pumpy.
Typy relé modulů
Relé moduly pro ESP32 se prodávají ve dvou provedeních podle logiky spínání:
Active LOW – relé se aktivuje při LOW signálu z ESP32 (nejčastější typ, modrá DPS)
Active HIGH – relé se aktivuje při HIGH signálu z ESP32
Na modulu bývá označení IN, VCC a GND. Silový obvod má tři svorky: COM (common), NO (normally open – rozepnuto v klidu) a NC (normally closed – sepnuto v klidu).
Potřebné komponenty
- ESP32
- Relé modul 5V (jednokanalový nebo vícekanálový)
- Vodní pumpa 3–12V DC
- Napájecí zdroj pro pumpu (odpovídající napětí pumpy)
- Propojovací vodiče
- Volitelně: hadička a nádoba s vodou
⚠️ Nikdy nepřipojujte vodní pumpu přímo na GPIO pin ESP32. GPIO pin zvládne maximálně 40 mA – pumpa potřebuje řádově stokrát více.
Zapojení
ESP32 → Relé modul
Pin IN na relé připojte na GPIO 26 ESP32. Pin VCC na relé připojte na 5V (VIN pin ESP32 při napájení přes USB). Pin GND relé propojte s GND ESP32.
⚠️ GND ESP32 a GND externího napájecího zdroje pumpy musí být propojeny – bez společné země obvod nefunguje.
Relé → Vodní pumpa
Silový obvod relé má tři svorky. Pro spínání pumpy použijte COM a NO:
COM (společný vodič) připojte na kladný pól (+) napájecího zdroje pumpy.
NO (normally open) připojte na kladný pól (+) vodní pumpy.
Záporný pól (−) pumpy připojte přímo na záporný pól (−) napájecího zdroje.
Schéma silového obvodu:
Zdroj + → COM (relé)
↓ (při sepnutí)
NO (relé) → Pumpa (+)
Pumpa (−) → Zdroj −
Při aktivaci relé se spojí COM a NO – proud proteče zdrojem přes pumpu zpět do zdroje a pumpa se roztočí. Při deaktivaci relé se obvod rozepne a pumpa se zastaví.
Kód 1 – jednoduché spínání pumpy
1#define RELE_PIN 26
2
3// Active LOW relé: LOW = zapnuto, HIGH = vypnuto
4// Pokud máte Active HIGH relé, obraťte logiku
5
6void setup() {
7 Serial.begin(115200);
8 pinMode(RELE_PIN, OUTPUT);
9
10 // ujistíme se že pumpa je na začátku vypnutá
11 digitalWrite(RELE_PIN, HIGH);
12
13 Serial.println("Systém připraven.");
14}
15
16void loop() {
17 Serial.println("Pumpa zapnuta – zaléváme...");
18 digitalWrite(RELE_PIN, LOW); // zapni pumpu
19 delay(5000); // zaléváme 5 sekund
20
21 Serial.println("Pumpa vypnuta – čekáme...");
22 digitalWrite(RELE_PIN, HIGH); // vypni pumpu
23 delay(30000); // pauza 30 sekund
24}Kód 2 – automatické zavlažování s časovačem
Reálnější scénář – pumpa se spustí jednou za hodinu na 10 sekund. Používáme millis() místo delay() aby ESP32 nezablokovalo celou smyčku:
1#define RELE_PIN 26
2
3const unsigned long INTERVAL_MS = 60UL * 60UL * 1000UL; // 1 hodina
4const unsigned long ZALEVANI_MS = 10000; // 10 sekund
5
6unsigned long posledniZalevani = 0;
7
8void zapniPumpu() {
9 Serial.println("▶ Pumpa zapnuta – zaléváme...");
10 digitalWrite(RELE_PIN, LOW);
11}
12
13void vypniPumpu() {
14 Serial.println("■ Pumpa vypnuta.");
15 digitalWrite(RELE_PIN, HIGH);
16}
17
18void setup() {
19 Serial.begin(115200);
20 pinMode(RELE_PIN, OUTPUT);
21 digitalWrite(RELE_PIN, HIGH); // pumpa vypnutá při startu
22
23 Serial.println("Automatické zavlažování spuštěno.");
24 Serial.println("První zalití za 1 hodinu.");
25}
26
27void loop() {
28 unsigned long ted = millis();
29
30 if (ted - posledniZalevani >= INTERVAL_MS) {
31 posledniZalevani = ted;
32
33 zapniPumpu();
34 delay(ZALEVANI_MS);
35 vypniPumpu();
36
37 Serial.println("Příští zalití za 1 hodinu.");
38 }
39}Jak to funguje
GPIO pin ESP32 ovládá cívku uvnitř relé. Při aktivaci cívky se vytvoří magnetické pole, které mechanicky přepne kontakty a spojí COM s NO. Tím se uzavře silový obvod pumpy a voda začne téct.
millis() vrací počet milisekund od spuštění ESP32. Porovnáváme aktuální čas s časem posledního zalití – jakmile rozdíl překročí nastavený interval, spustíme pumpu. ESP32 mezitím může dělat cokoliv jiného – číst senzory, komunikovat přes WiFi atd.
Active LOW vs Active HIGH
Pokud pumpa běží stále a po příkazu LOW se vypne, máte Active LOW relé – to je správně, logika v kódu odpovídá.
Pokud pumpa nereaguje nebo spíná obráceně, vyměňte LOW a HIGH v celém kódu – máte Active HIGH relé.
Časté problémy
Pumpa se neroztočí → Zkontrolujte napětí napájecího zdroje – odpovídá specifikaci pumpy? → Ověřte propojení GND ESP32 a GND zdroje pumpy → Přesvědčte se, že zapojujete COM a NO (ne COM a NC)
ESP32 se resetuje při spuštění pumpy → Pumpa při startu odebírá špičkový proud – napájejte ESP32 a pumpu ze samostatných zdrojů
Pumpa teče stále bez příkazu → Máte zapojené COM a NC místo COM a NO – přepojte na NO
Možná rozšíření
- Přidejte senzor půdní vlhkosti – zalévejte jen když je zemina suchá
- Kombinujte s DHT22 – sledujte teplotu a vlhkost vzduchu v okolí rostlin
- Kombinujte s RTC modulem DS1307 – zalévejte v přesný čas každý den
- Přidejte webový server – ovládejte pumpu z prohlížeče nebo mobilu
- Kombinujte s MQTT – spouštějte pumpu přes Home Assistant odkudkoliv
