Plant-Happiness-Ometer vine în ajutorul plantelor de casă cu proprietari uituci și nepricepuți în ale grădinăritului. Cu acest dispozitiv, vei putea afla nivelul de fericire al plantei tale!
Pe un ecran LCD vor fi afișați parametrii precum luminozitate, temperatură și umiditate ambientală și a solului. În funcție de nivelul de îngrijire (sau neglijență), planta își va exprima sentimentele cu ajutorul unei matrice led.
Mai mult decât atât, Plant-Happiness-Ometer îi dă plantei tale glas! Când este însetată sau suferă din lipsa luminii, vei fii înștiințat/ă printr-o notificare pe telefon.
Proiectul va fi asamblat după cum urmează:
Plăcuța Arduino Uno va lua măsurători la un interval de timp de 1 oră de la senzorii aflați în jurul plantei. Valorile vor fi afișate pe un ecran LCD, iar în funcție de acestea, pe o matrice LED va fi afișată o față fericită sau una tristă.
În cazul în care se detectează că parametrii nu sunt optimi pentru bunăstarea plantei, se va trimite un mesaj pe interfața USART către plăcuța Plusivo Micro. Cu ajutorul modulului ESP8266 de pe plăcuță, se vor trimite notificări către telefonul utilizatorului, prin applet-ul Webhook al serviciului IFTTT.
Diagrama bloc corespunzatoare proiectului:
Componentă | Număr |
---|---|
Arduino Uno | 1 |
Plusivo Micro ESP8266 | 1 |
Breadboard | 2 |
Senzor DHT11 | 1 |
Fotorezistor | 1 |
Modul senzor umiditate sol cu comparator LM393 | 1 |
Modul LCD 1602 cu I2C | 1 |
Matrice LED cu driver MAX7219 | 1 |
Modul sursa de alimentare 5v - 3.3v breadboard | 2 |
Rezistență 10k | 1 |
Rezistență 1k | 2 |
Led | 1 |
În bucla principală se verifică dacă a trecut o oră de la ultima măsurătoare și se citesc valorile de la senzori după caz. Pentru a lua date de la senzorul de umiditate și temperatură folosesc biblioteca “DHT.h”, iar de la senzorii de lumină și umiditate a solului citesc valoarea furnizată de ADC. Apoi, cu ajutorul bibliotecii “LiquidCrystal_I2c”, afișez parametrii pe ecranul LCD, iar cu ajutorul bibliotecii “LedControl”, afișez emoția plantei pe matricea LED.
Pentru a lua măsurători de la senzori din oră în oră, am folosit timer-ul 1 al microcontroller-ului ATmega328P. L-am configurat a.î. să se declanșeze întreruperea TIMER1_COMPA din jumătate în jumătate de secundă, iar rutina de tratare incrementează un contor intern. Astfel, când contorul din program atinge valoarea 7200, ce corespunde cu 3600 de secunde, se vor lua măsurători.
Comunicarea între cele două componente se realizează prin UART: Arduino Uno este transmițătorul, iar Plusivo Micro este receptorul. Dacă parametrii colectați de la senzori determină că planta nu are un mediu optim, se trimite un mesaj, sub formă de string, care conține acei parametrii neoptimi: nivelul de apă, gradul de luminozitate etc.
În bucla principală se verifică daca s-a primit un mesaj de la Arduino Uno. În caz afirmativ, se extrag din string-ul primit parametrii și se construiește un mesaj ce va fi inclus în request-ul web.
Prin intermediul bibliotecii “ESP8266WiFi”, mă conectez la rețeaua WiFi din apartament.
Pentru a trimite un request web către serverul IFTTT-ului, care mai departe să trimită notificarea în aplicația din telefon, folosesc un client de WiFi securizat.
Request-ul web este de tip “POST”, cu conținut de tip “application/x-www-form-urlencoded”, prin care trimit ca valori un mesaj text și un link URL către o poză.