Vrei sa pleci in vacanțe sau in Saint Tropez și nu știi ce să faci cu florile? Îți faci griji că florile nu primesc cantitatea necesară de apă? Smart Watering va fi o soluție automată de udare a grădinii tale.
Smart Watering își propune sa fie un sistem care udă automat plantele, în funcție de nivelul de umiditate din sol.
Smart Watering va notifica utilizatorul printr-un buzzer atunci când rezervorul de apa este aproape gol.
Datele furnizate de senzorul de umiditate vor fi prelucrate pe Arduino, iar intre anumite valori se va acționa automat o mini pompa de apă.
Cu ajutorul modulului ESP8266 de pe plăcuță, utilizatorul va putea acționa pompa de pe telefonul mobil printr-o singură apăsare.
Proiectul va fi asamblat după cum urmează:
Diagrama bloc corespunzătoare proiectului:
Componentă | Număr | |
---|---|---|
Arduino Uno | 1 | |
NodeMCU Lua ESP8266 Wifi | 1 | |
Breadboard | 1 | |
Mini pompă de apa | 1 | |
Modul senzor umiditate sol | 1 | |
Modul senzor nivel apa | 1 | |
Buzzer | 1 | |
Rezistență 1k | 1 | |
Mini tub | 1 | |
Rezervor | 1 |
Pentru a calibra senzorii, am testat situații diverse si am salvat valorile obținute in câteva constante. În setup() setez pin-ul folosit de pompa de apă să fie de OUTPUT.
În loop() citesc valorile de la senzorul de umiditate si de la senzorul de nivelul apei. Apoi transform acele valori in procente de la 0 la 100% si le printez Serial. Daca nivelul de apa din rezervor este sub un anumit prag, atunci se va activa buzzerul. Daca procentul de umiditate este sub un anumit prag, iar nivelul de apa din rezervor este suficiente, atunci se va activa automat pompa de apă.
Apoi cu ajutorul bibliotecii “SoftwareSerial” realizez o comunicare seriala intre Arduino Uno si NodeMCU Lua ESP8266. Astfel Arduino este receptorul si primește comenzi prin Wifi pentru a porni/opri pompa de apă.
În setup() Prin intermediul bibliotecii “ESP8266WiFi”, mă conectez la rețeaua WiFi din casă cu ssid si parolă Atunci când conexiunea se realizează cu succes, voi inițializa serverul pe portul 80 și printez serial IP-ul folosit de către server.
În loop() atunci când se conectează un nou client la server printez mesaje corespunzătoare.
Apoi aștept clientul să trimită niște date. În caz afirmativ, citesc Requestul de tip GET și încerc să ii fac match.
Dacă requestul conține string-ul “waterPump=ON”, atunci trimit un mesaj către Arduino pentru a porni pompa. Dacă requestul conține string-ul “waterPump=OFF”, atunci trimit un mesaj către Arduino pentru a opri pompa.
De asemenea, am realizat renderea website ului cu ajutorul unui HTML clasic.
Mi-a făcut plăcere să sa îmbin hardwareul cu softwareul și consider că am înțeles mai bine anumite concepte.
Doresc să extind acest proiect pentru a realiza o seră complet autonomă.
Am întâmpinat dificultăți cu afișarea mesajelor pe LCD. Maybe l-am stricat atunci când am lipit pinii.