Autor: — Laura-Elena GHEORGHE (101329)
Proiectul presupune crearea unui sistem care măsoară temperatura, umiditatea și presiunea în cameră, afișând aceste informații pe un ecran. De asemenea, acesta trimite datele și în cloud, cu posibilitatea de a le urmări în timp real de pe o platformă IoT (Ubidots).
Toți acești parametri (temperatura, umiditatea, presiunea) pot afecta starea de sănătate a persoanelor care petrec mult timp într-o cameră. Astfel, ar fi utilă monitorizarea acestora, pentru a se putea interveni în cazul detectării unor valori anormale.
Pe ecranul LCD sunt afișate datele: temperatura (în °C), umiditatea (umiditatea relativă în %) și presiunea (în hPa), date preluate de către senzor. Placa Arduino trimite valorile către modulul WiFi, iar modulul le trimite mai departe către platforma Ubidots. Rezistențele sunt folosite pentru ecranul LCD.
Componenta software cuprinde două fișiere: unul pentru preluarea datelor de pe senzor și afișarea pe ecran (statie_meteo.ino) și unul pentru comunicarea cu Ubidots (wifi_module.ino).
Am folosit următoarele biblioteci:
Pinii RST, CS, DC ai ecranului sunt conectați pe placa Arduino la pinii 9, 10, respectiv 8. Am determinat adresa I2C ca fiind 0x77 folosind un cod separat pentru determinarea acesteia.
În setup, se inițialiează ecranul: fundalul este negru, se afișează „TEMPERATURE”, „HUMIDITY”, „PRESSURE” și alt text care nu se schimbă și nu este suprascris pe parcursul rulării. Tot aici se inițializează și senzorul BME280, verificându-se dacă este conectat. Dacă există vreo problemă de conexiune, se afișează un mesaj corespunzător pe ecran, iar rularea nu continuă.
În loop, se preiau temperatura, umiditatea și presiunea de la senzor și se afișează pe ecran, cu niște culori caracteristice. Apoi se creează stringul JSON ce le conține, string ce va fi trimis către modulul WiFi.
Am folosit următoarele biblioteci:
În setup, se inițializează conexiunea cu platforma Ubidots.
În loop, se verifică de fiecare dată dacă s-a întrerupt conexiunea, caz în care se încearcă reluarea acesteia. Apoi se așteaptă datele de la Arduino (sub formă de string JSON). Când este primit un mesaj, acesta este deserializat și se extrag valorile pentru temperatură, umiditate și presiune. Apoi, aceste valori sunt trimise către Ubidots. Pe această platformă, am creat un dashboard cu widgeturi pentru fiecare parametru.
Am reușit să implementez tot ce mi-am propus. Uneori am observat că există o desincronizare între datele trimise și datele vizibile în timp real pe Ubidots, dar acest lucru nu se întâmplă prea des și am pus-o pe seama comunicării cu serverul. Datele furnizate de senzor par în regulă și variază corespunzător cu mediul în care se află tot dispozitivul.
Este disponibil și un demo al proiectului.
Am învățat foarte multe pe parcursul realizării acestui proiect. Inițial neștiind nici măcar cum să leg firele, am simțit că evoluez și eu împreună cu el și am avut un sentiment de satisfacție uriaș de fiecare dată când reușeam să mai fac câte o funcționalitate sau să mai rezolv vreo problemă apărută. Totodată, am înțeles mult mai bine despre comunicarea serială, despre cum se îmbină componentele hardware și despre cum să fac debugging eficient.
Arhiva conține fișierele statie_meteo.ino, wifi_module.ino, README, schema electrică și două fișiere folosite pentru debugging, i2c_scan.ino și bme280test.ino.