Weed Pot
Introducere
Prezentarea pe scurt a proiectului:
Ghiveci inteligent care ajuta la cresterea in conditii bune a plantelor
Senzorii masoara conditiile de mediu (umiditatea solului din ghiveci, nivelul de intensitate a luminii ambientale, nivelul apei de la baza ghiveciului), care apoi sunt trimise de catre microcontroller la o platforma IoT printr-un modul Wi-Fi
Datele sunt interpretate in cadrul platformei in limbaj Matlab si trimise pe mail sub forma de grafice din ultimele ore
Ideea de proiect a pornit de la una dintre plantele mele, foarte greu de crescut, de care mereu trebuie sa ma ingrijesc pentru a-i asigura suficienta apa, umiditate a solului si lumina.
Link de wikipedia pentru specia de planta in cauza: https://ro.wikipedia.org/wiki/Dionaea_muscipula
Schema bloc
Hardware Design
Componente:
Arduino UNO R3 (ATmega328p + ATmega16u2)
1 breadboard generic pentru intermedierea dintre Arduino si restul componentelor electrice
1 mini breadboard folosit in cadrul set-upului de alimentare in siguranta
Modul Wi-Fi ESP8266
Modul analogic cu senzor de masurare a umiditatii a solului
Modul analogic cu senzor de masurare a nivelului apei
Modul analogic/digital cu senzor de masurare a nivelului de intensitate a lumii ambientale
Fire mama-mama pentru conexiuni
Fire tata-tata pentru conexiuni
Rezistente de 1Kohmi pentru un divizor de tensiune
Baterie 9V pentru alimentarea intregului circuit
Un suport de plastic sub forma de tub ce protejeaza placuta de baza si breadboard-ul principal
Un suport de plastic in forma de trunchi de piramida fara baza pentru ghiveci, apa si senzori
Schema electrica (clic pe imagine pentru a vedea versiunea in dimensiuni originale a schemei electrice):
Pentru alimentarea pinului de RX al modulului Wi-Fi se poate observa necesitatea folosirii unui divizor de tensiune, intrucat o alimentare de 5V de la Arduino ar fi avut tensiunea prea ridicata si ar fi prajit modului Wi-Fi, iar una de la 3.3V tot de la Arduino nu ar fi avut intensitatea curentului suficient de mare pentru ca modului Wi-Fi sa functioneze in paramentrii normali.
Divizorul de tensiune este format din doua rezistente de 1Kohmi conectate in paralel cu alimentarea pinului de RX al modulului Wi-Fi de la un pin digital de pe Arduino. Montajul realizat reduce tensiunea care ajunge la modului Wi-Fi la 3.3V fara a afecta intensitatea curentului din conexiune.
Pentru a alimenta in siguranta circuitul, bateria de 9V nu este conectata direct la breadboardul de baza, ci prin intermediul unei prelugiri de 1m catre un mini-breadboard. Am luat aceasta decizie intrucat din cauza unei erori de gestionare a firelor am reusit sa dau pentru cateva secunde foc la alimentare si nu vreau ca asta sa se mai intample in proximitatea montajului principal.
Software Design
Lista de parti ale codului:
Cod Arduino principal pentru primirea datelor si pornire/oprire a alimentarii modulelor cu senzori integrati
Setarea si pornirea alimentarii pinilor destinati pentru senzori
Citirea datelor primite de la senzori si salvarea lor in variabile
Oprirea alimentarii senzorilor pentru o perioada stabilita
Repornirea alimentarii senzorilor la finalul perioadei
Repetarea pasilor citire-oprire-repornire la intervale regulate
Comunicare cu modulul Wi-Fi si transmiterea datelor folosind biblioteci speciale pentru modul
Initializarea parametrilor de conectare la Wi-Fi (nume retea, parola)
Initializarea parametrilor de conectare la ThingsSpeak (canal de date, APIkey)
Conectare la reteaua Wi-Fi si la platforma ThingsSpeak
Trimitere valori citite de la senzori catre ThingsSpeak
Oprirea alimentarii modulului pentru o perioada pentru a reduce consumul de curent
Cod matlab in cadrul platformei ThingSpeak pentru interpretarea datelor primite
Pentru a putea folosi si programa modulul Wi-Fi ESP8266, este necesara instalarea in cadrul aplicatiei Arduino IDE a unor biblioteci specifice. Un tutorial in acest sens (contine si varianta video si indicatii de montare si testare a functionalitatii) poate fi gasit
aici.
Modulele cu senzori sunt alimentate de pe pini digitali, astfel incat sa poata fi activate doar la nevoie, pentru a face cateva masuratori, apoi sunt dezactivate. Aceasta practica are ca scop atat generarea unui consum mai redus de curent, cat si prelungirea duratei de viata a senzorilor (spre exemplu, catodul senzorului de umiditate a solului tinde sa erodeze cat timp senzorul este alimentat, insa asta nu se intampla atunci cand acesta nu primeste curent).
Modulul de Wi-Fi ESP8266 nu necesita intreruperea alimentarii de la Arduino pentru a reduce consumul de energie. Acesta poate fi configurat sa intre singur in modul DeepSleep prin intermediul functiilor de biblioteca dedicate.
Rezultate obtinute
Graficele obtinute pe ThingSpeak pentru parametrii masurati pe parcursul unei zile:
Pentru ultimul grafic (Soil Moisture), rezultatele au fost obtinute pe pragul inferior prin scoaterea senzorului din ghivechi sa lasarea lui in aer, intrucat nu puteam usca solul instant (si nici nu ar fi fost de dorit pentru planta).
Concluzii
Fisierele media au fost realizate in cadrul a doua versiuni fizice ale proiectului:
Prima versiune, a carei functionalitate a fost verificata prin rezultatele obtinute, are atribuite fisierele mp4 continute in arhiva weedpot_media_files.zip de mai jos. Fisierele mp4 mentionate demonstreaza functionarea fiecarui senzor, a modulului de Wi-Fi si a placutei de baza in cadrul alimentarii la 9V.
A doua versiune este doar in scop de prezentare si exemplu de folosire a circuitului in situatii casnice, insa avand in vedere suportul de carton folosit, placuta nu a fost conectata la alimentare din motive de siguranta. Cutia de carton tine loc de suport (exemplu: de plastic) care ar putea fi utilizat intr-o varianta de folosire propriu-zisa. Imaginile care sunt atribuite acestei versiuni sunt afisate mai jos:
Imagini cu versiunea propusa pentru prezentare:
Downloads
Aceasta sectiune va fi completata cu toate fisierele folosite pentru implementare, dupa prezentarea proiectului.
Codul principal C++ folosit (fara fisierele de debug pentru senzori) poate fi gasit momentan pe Github.
Modul in care sunt interpretate datele pentru grafice poate fi consultat pe canalul de ThingSpeak folosit.
Jurnal
Nu lasati niciodata VCC si GND sa se atinga: e posibil sa ia foc! Cand scoateti firele din circuit, aveti grija sa le scoateti intai pe cele legate direct la baterie pentru a evita o alimentare nedorita a unei portiuni nesigure! Nu lasati fire in aer cat timp sunt conectate la alimentare!
Bibliografie/Resurse