Upravljanje pumpom za vodu pomoću ESP32 — osnova pametne bašte
Da bismo napravili pametnu baštu, potrebno je kontrolisati rad pumpe za vodu koja se po potrebi može uključivati i isključivati pomoću mikrokontrolera. Upravljanje pumpom predstavlja osnovu automatizovanog sistema za zalivanje.
Pumpa za vodu najčešće radi na 12 V jednosmernog napona, mada u zavisnosti od modela može raditi i na 6–12 V. Veoma je važno naglasiti da se pumpa nikada ne sme napajati direktno sa mikrokontrolera (u našem slučaju ESP32), jer:
- ESP32 koristi 3,3 V logiku,
- GPIO pinovi ne mogu obezbediti dovoljnu struju za rad pumpe,
- postoji rizik od trajnog oštećenja mikrokontrolera.
Zbog toga se koristi spoljašnje napajanje (npr. 12 V baterija ili adapter), a za bezbedno uključivanje i isključivanje pumpe koristi se relej.
Relej — princip rada
Relej je elektromehanički prekidač koji omogućava da mikrokontroler niskog napona upravlja uređajem višeg napona i struje.
U svojoj unutrašnjosti relej sadrži:
- kalem (elektromagnet),
- pokretnu kotvu,
- tri kontakta: COM, NO i NC.
Kada kroz kalem poteče struja, stvara se elektromagnetno polje koje privlači kotvu i menja položaj kontakata. Na taj način zatvara se ili prekida strujno kolo pumpe.
Prednost releja je što upravljačko kolo (ESP32 – 3,3 V) i energetsko kolo (pumpa – 6 do 12 V) ostaju funkcionalno razdvojeni.
Objašnjenje prikazane šeme releja
Na slici je prikazan princip rada releja sa jasno označenim upravljačkim i energetskim delom kola.
Upravljački deo (levo)
- VCC – napajanje relej modula (najčešće 5 V)
- GND – masa (zajednička sa ESP32)
- IN – upravljački signal sa GPIO pina
Kada ESP32 pošalje logički signal na pin IN, kroz kalem releja protiče struja. Kalem stvara elektromagnetno polje koje privlači pokretnu kotvu.
Energetski deo (desno)
- COM – zajednički (pokretni) kontakt
- NO – normalno otvoren kontakt
- NC – normalno zatvoren kontakt
U prikazanoj šemi koristi se NO kontakt, što znači da je potrošač (pumpa ili motor) isključen dok relej nije aktiviran.
Kada se relej aktivira:
- kotva se pomera,
- COM se spaja sa NO kontaktom,
- strujno kolo se zatvara,
- pumpa dobija napajanje i počinje sa radom.
Koja varijanta povezivanja je prikazana?
Ova šema predstavlja Varijantu 1 — prekidanje pozitivnog (+) pola napajanja.
U ovoj varijanti:
- pozitivni pol napajanja ide na COM,
- NO vodi ka pozitivnom priključku pumpe,
- negativni pol pumpe ide direktno na minus napajanja.
Ovakav način povezivanja je najčešći u praksi jer je pregledan, jednostavan i smatra se bezbednijim rešenjem u sistemima sa jednosmernim napajanjem.
⚠ Bezbednosna napomena (AC mrežni napon)
Ako se relej koristi za upravljanje uređajima na mrežnom naponu (220–230 V AC), uvek se prekida fazni provodnik (L), a ne neutralni (N).
Prekidanje faze obezbeđuje da uređaj bude zaista bez napona kada je isključen, čime se smanjuje rizik od strujnog udara prilikom servisiranja ili dodira instalacije.
Rad sa mrežnim naponom zahteva poseban oprez, kvalitetnu izolaciju i poštovanje elektro-bezbednosnih standarda.
Priključci relej modula
Relej modul koji koristimo ima šest priključaka: tri za upravljanje (niski napon) i tri za napajanje pumpe (viši napon).
Upravljački priključci
- VCC
- GND
- IN
Povezivanje sa ESP32 vrši se na sledeći način:
VCC (relej) → 5V (ESP32 VIN) GND (relej) → GND (ESP32) IN (relej) → GPIO 23
GPIO pinovi ESP32 rade na 3,3 V i to je dovoljno za upravljanje ulazom relej modula. Veoma je važno da GND releja i GND ESP32 budu povezani.
Kontakti za napajanje pumpe
Na drugoj strani releja nalaze se tri priključka:
- COM – zajednički (pokretni) kontakt
- NO – normalno otvoren kontakt
- NC – normalno zatvoren kontakt
COM je srednji kontakt koji se, u zavisnosti od stanja releja, spaja sa NO ili NC.
Varijanta 1 — prekidanje pozitivnog pola (preporučena)
U ovoj varijanti prekida se pozitivni (+) pol napajanja.
+12V → COM NO → + pumpe - pumpe → -12V
Dok relej nije aktiviran:
- COM i NO nisu spojeni,
- strujno kolo nije zatvoreno,
- pumpa ne radi.
Kada signal sa GPIO23 aktivira relej:
- elektromagnet privlači kotvu,
- COM i NO se spajaju,
- pumpa dobija napon i počinje sa radom.
NC kontakt u ovoj varijanti ostaje nepovezan.
ESP32 i kontrola 5V pumpe preko releja
U ovoj vežbi ESP32 kontroliše malu 5V DC pumpu pomoću relej modula. Pumpa se ne povezuje direktno na ESP32 jer GPIO pinovi rade na 3.3V i ne mogu obezbediti dovoljnu struju za rad motora. Relej se koristi kao elektronski prekidač koji omogućava sigurno uključivanje i isključivanje pumpe.
Oznake pinova relej modula (Cirkit Designer)
Upravljački deo (niski napon)
- VCC – napajanje relej modula (5V)
- GND – masa (mora biti zajednička sa ESP32)
- IN – upravljački signal sa ESP32 (npr. GPIO23)
Prekidački deo (snaga – pumpa)
- COM (Common) – dovodi se +5V napajanja pumpe
- NO (Normally Open) – povezuje se sa + pumpe
- NC (Normally Closed) – nije korišćen u ovoj vežbi
Varijanta povezivanja (Varijanta 1 – prekidanje plusa)
Na ovoj šemi relej prekida pozitivni pol napajanja pumpe. Kada je relej aktiviran, COM i NO se spoje i +5V dolazi do pumpe.
Princip rada
Kada ESP32 pošalje HIGH signal na pin IN:
- Aktivira se relej (kalem unutar modula)
- COM i NO se mehanički spoje
- Pumpa dobija +5V i počinje da radi
Kada je signal LOW:
- Relej je neaktivan
- COM i NO nisu spojeni
- Pumpa je isključena
Tekstualni dijagram rada
ESP32 GPIO ----> IN (Relej) ESP32 GND ----> GND (Relej) 5V --------> VCC (Relej) +5V --------> COM NO ---------> + Pumpa - Pumpa -----> GND
Važne napomene
- Pumpa mora imati odgovarajuće 5V napajanje.
- GND napajanja pumpe i GND ESP32 moraju biti zajednički (common ground).
- Relej modul već sadrži tranzistor i zaštitnu diodu, zato se može direktno povezati na ESP32.
- NC pin se koristi samo ako želimo da pumpa bude uključena dok je relej neaktivan.
Varijanta 2 — prekidanje negativnog pola
U ovoj varijanti prekida se negativni (−) pol napajanja.
+12V → + pumpe - pumpe → COM NO → -12V
Sa električnog stanovišta obe varijante su ispravne. Razlika je samo u tome da li se prekida pozitivni ili negativni vod.
U praksi se češće koristi prekidanje pozitivnog pola, jer se smatra preglednijim i bezbednijim rešenjem.
Na slici ispod prikazano je povezivanje u kome relej prekida negativni (−) vod napajanja pumpe. Pozitivni pol napajanja (+6V) ide direktno na pumpu, dok se negativni pol dovodi na COM kontakt releja.
Kada ESP32 pošalje HIGH signal na IN pin relej modula, aktivira se kalem releja i dolazi do spajanja kontakata COM i NO. Time se negativni pol napajanja povezuje sa pumpom i električno kolo se zatvara, pa pumpa počinje da radi.
Kada je signal sa ESP32 LOW, kontakti COM i NO nisu spojeni, kolo je prekinuto i pumpa je isključena.
Važno je napomenuti da ESP32 ne napaja pumpu direktno. Pumpa koristi zasebno 6V napajanje, dok relej služi kao električni prekidač koji omogućava bezbedno upravljanje uređajem većeg napona i struje.
Iako je sa električnog stanovišta potpuno ispravno prekidati negativni pol, u praksi se češće prekida pozitivni vod jer je takvo rešenje preglednije i intuitivnije za većinu korisnika.
Važne napomene i preporuke
- Nikada ne dovoditi 6V (ili viši napon pumpe) direktno na ESP32.
- Pumpa mora imati zasebno napajanje (u ovoj vežbi 6V).
- Obavezno povezati GND ESP32 i GND relej modula (zajednički GND).
- U većini projekata koristi se NO (Normally Open) kontakt releja.
- Ako pumpa predstavlja DC motor, preporučuje se postavljanje zaštitne diode paralelno sa pumpom (flyback dioda) radi smanjenja naponskih šiljaka prilikom isključivanja.
- Relej modul već sadrži tranzistor i zaštitnu diodu za upravljanje kalemom, što ga čini bezbednijim i jednostavnijim rešenjem za početnike.
Relej omogućava da ESP32 bezbedno upravlja pumpom koristeći mali upravljački signal (3.3V), dok se pumpa napaja posebnim izvorom napona.
Ovakva konfiguracija se često koristi u sistemima automatskog zalivanja, pametnim baštama i IoT projektima.
Upravljanje pumpom preko serijskog monitora
U ovom primeru ESP32 upravlja relej modulom i pumpom preko serijskog monitora. Slanje karaktera '1' uključuje pumpu, dok '0' isključuje pumpu.
const int relayPin = 23;
const bool RELAY_ON = HIGH; // promeni u HIGH ako je HIGH-trigger
const bool RELAY_OFF = LOW;
void setup() {
Serial.begin(115200);
pinMode(relayPin, OUTPUT);
digitalWrite(relayPin, RELAY_OFF); // pumpa isključena
Serial.println("Sistem spreman. Posalji 1 za ON, 0 za OFF.");
}
void loop() {
if (Serial.available()) {
char command = Serial.read();
if (command == '1') {
digitalWrite(relayPin, RELAY_ON); // uključi pumpu
Serial.println("Pumpa UKLJUCENA");
}
else if (command == '0') {
digitalWrite(relayPin, RELAY_OFF); // isključi pumpu
Serial.println("Pumpa ISKLJUCENA");
}
}
}
Objašnjenje koda:
1. Pin 23 ESP32 je definisan kao izlaz i povezan sa IN pinom relej modula.
2. Konstantne RELAY_ON i RELAY_OFF određuju logiku releja
(HIGH za aktivaciju ako je HIGH-trigger modul, ili LOW ako je LOW-trigger).
3. Početno stanje releja je isključeno, da pumpa ne radi pri startu.
4. Funkcija Serial.available() proverava da li je
stigao novi karakter sa serijskog monitora.
5. Ako korisnik pošalje '1', relej se aktivira i pumpa se uključuje.
6. Ako korisnik pošalje '0', relej se isključuje i pumpa prestaje da radi.
7. Važno je imati zajednički GND između ESP32 i relej modula kada se koristi odvojeno napajanje pumpe.
Tok signala u sistemu ESP32 + relej + pumpa
Sledeća ilustracija pokazuje kako signal sa ESP32 upravlja pumpom preko releja:
ESP32 GPIO (digital pin 23)
|
v
IN pin
relej modula
|
v
COM kontakt
|
v
NO kontakt
|
v
Pumpa 6V
|
v
Zajednički GND
Objašnjenje toka signala:
1. ESP32 šalje HIGH ili LOW signal na IN pin relej modula.
2. Modul aktivira ili deaktivira kalem releja prema logici HIGH/LOW.
3. Kada su kontakti COM i NO spojeni, pumpa dobija kompletno kolo i radi.
4. Kada su kontakti razdvojeni, pumpa je isključena.
5. Zajednički GND je obavezan kako bi ESP32, relej i pumpa imali istu referencu napona.
6. Ovo je jednostavan, bezbedan i pouzdan način da ESP32 upravlja DC pumpom malog napona.
Kontrola pumpe preko Processing-a
Ova sekcija pokazuje kako se ESP32 pumpa može upravljati sa računara pomoću Processing programa preko serijskog porta. Koristimo isti serijski kod sa ESP32 koji čita '1' i '0' za uključivanje ili isključivanje pumpe.
Processing kod:
import processing.serial.*;
Serial myPort;
void setup() {
size(200, 200);
// Proverite koji port koristi ESP32:
println(Serial.list());
myPort = new Serial(this, Serial.list()[0], 115200);
}
void draw() {
background(220);
textAlign(CENTER, CENTER);
textSize(16);
text("Pritisni '1' za pumpu ON\nPritisni '0' za pumpu OFF", width/2, height/2);
}
void keyPressed() {
if (key == '1') {
myPort.write('1'); // uključi pumpu
println("Poslato: 1 (Pumpa UKLJUCENA)");
} else if (key == '0') {
myPort.write('0'); // isključi pumpu
println("Poslato: 0 (Pumpa ISKLJUCENA)");
}
}
Objašnjenje koda:
1. Importujemo biblioteku processing.serial.* da bismo koristili serijski port.
2. Serial.list() ispisuje dostupne portove, pa izaberemo port na kojem je ESP32.
3. U draw() jednostavno prikazujemo tekstualni interfejs sa instrukcijama.
4. U keyPressed() šaljemo karakter '1' ili '0' na serijski port kada pritisnemo odgovarajuće tastere.
5. ESP32 prima karakter i upravlja relejem prema prethodnom kodu.
Napomene i preporuke:
- Najjednostavniji način formatiranja je slanje jednog karaktera ('1' ili '0').
- Možete koristiti i stringove poput "ON\n" ili "OFF\n", ali onda ESP32 kod mora da koristi
Serial.readStringUntil('\\n'). - Proverite da je baudrate isti na Processing-u i ESP32 (ovde 115200).
- ESP32 mora biti pravilno povezan na GND računara da bi serijski signal bio ispravan.
- U Processing-u je
Serial.list()[0]prvi port – proverite ispis konzole da izaberete pravi port.
Ovakav način komunikacije omogućava jednostavnu kontrolu pumpe sa računara i lako je proširiti na GUI kontrole, senzorske ulaze ili automatizovane funkcije.