U ovom tutorijalu naučit ćemo kako koristiti SunFounder ESP32 zajedno sa senzorom vlažnosti tla za mjerenje nivoa vlažnosti u tlu, što može pomoći u automatizaciji sistema za navodnjavanje. Praćenjem nivoa vlažnosti, možemo aktivirati zujalicu kada vlažnost padne ispod određene granice, što ukazuje da biljke treba zaliti. Ovaj projekat je vrijedan za održavanje zdravlja biljaka i može se proširiti za različite aplikacije senzora okoline. (u videu na 00:00)
soil_mositure_module
Koristit ćemo kapacitivni senzor vlažnosti tla, koji radi mjerenjem promjene kapaciteta između dvije ploče koja varira ovisno o sadržaju vlage u okolnom mediju. Ovaj senzor će pružiti analogni izlaz koji odražava nivo vlažnosti, omogućavajući nam da donosimo odluke na osnovu očitanja. ESP32 će čitati analogni izlaz i aktivirati zujalicu ako je tlo previše suho.
Objašnjenje hardvera
Za ovaj projekat, primarne komponente su SunFounder ESP32 mikrokontroler, kapacitivni senzor vlažnosti tla i zujalica. ESP32 ima ugrađen Wi-Fi i Bluetooth, što omogućava daljinsko praćenje i upravljanje. Senzor vlažnosti tla sastoji se od dvije ploče koje mjere kapacitet, koji se mijenja ovisno o nivou vlažnosti u tlu. Ova promjena kapaciteta mijenja izlazni napon, koji ESP32 čita kroz svoj analogni ulaz. Zujalica će nas upozoriti kada nivo vlažnosti padne ispod postavljene granice.
soil_mositure_module_schematic
Detalji iz tehničke dokumentacije
Proizvođač
SunFounder
Broj dijela
Senzor vlažnosti tla
Radni napon
3.3 do 5 V
Tip izlaza
Analogni
Raspon signala
0 do 3.3 V
Vrijeme odziva
Brzo
Dimenzije
Približno 60 x 20 mm
Napomene / varijante
Kapacitivni tip senzora
Pazite da senzor ne bude potpuno potopljen u vodu kako biste spriječili oštećenje.
Koristite odgovarajuće pull-up otpornike ako je potrebno za stabilna očitanja.
Kalibrirajte senzor za vaš specifični tip tla za tačna očitanja vlažnosti.
Održavajte ispravne veze žica kako biste izbjegli gubitak signala.
Budite oprezni s napajanjem kako biste izbjegli situacije prenapona.
Upute za povezivanje
ESP32-24-soild-moisture-wiring
Za povezivanje senzora vlažnosti tla na ESP32, spojite VCC pin senzora na 3.3V pin na ESP32. Zatim spojite GND pin senzora na GND pin na ESP32. Analogni izlazni pin sa senzora vlažnosti tla treba spojiti na analogni pin 35 na ESP32. Za zujalicu, spojite pozitivni pin na digitalni pin 13 na ESP32 i negativni pin na GND. Osigurajte da su sve veze sigurne kako biste izbjegli povremene probleme tokom rada.
Primjeri koda i objašnjenje
Ispod je kratki izvod iz koda koji inicijalizira serijsku komunikaciju i čita vrijednost senzora vlažnosti:
void setup() {
// Inicijaliziraj serijsku komunikaciju na 115200 bitova u sekundi:
Serial.begin(115200);
}
Ovaj isječak postavlja serijsku komunikaciju, omogućavajući nam da vidimo očitanja sa senzora vlažnosti u serijskom monitoru.
Zatim imamo glavnu petlju gdje se analogno vrijednost čita sa senzora:
void loop() {
// Čitaj analognu vrijednost
int analogValue = analogRead(35);
// Ispiši vrijednosti
Serial.printf("Analogna vrijednost = %d\n",analogValue);
delay(300); // kašnjenje između očitanja za jasno čitanje sa serijskog monitora
}
U ovoj petlji, kod kontinuirano čita analognu vrijednost sa pina 35 i ispisuje je na serijski monitor svakih 300 milisekundi. Ovo nam omogućava da pratimo nivo vlažnosti u realnom vremenu.
Demonstracija / Šta očekivati
Kada se senzor vlažnosti postavi u suho tlo, analogno vrijednost će biti viša, što ukazuje na nisku vlažnost. Suprotno tome, kada se senzor umetne u vlažno tlo, vrijednost će značajno pasti. Ako očitanje padne ispod definirane granice (npr. 2000), zujalica spojena na pin 13 će se aktivirati, signalizirajući da biljku treba zaliti. Budite oprezni s plutajućim ulazima i osigurajte da senzor nije izložen vodi iznad preporučenih granica (u videu na 02:30).
823-ESP32 Tutorial 24/55- Arduino code for soil moisture measurement
Language: C++
void setup() {
// Initialize serial communication at 115200 bits per second:
Serial.begin(115200);
}
void loop() {
// Read the analog value
int analogValue = analogRead(35);
// Print out the values
Serial.printf("Analog value = %d\n",analogValue);
delay(300); // delay between reads for clear read from serial monitor
}
Disclosure: As an Amazon Associate, we earn from qualifying purchases. This means we may receive a small commission if you click a link and make a purchase at no extra cost to you.