This is an old revision of the document!
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.
todo poze
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.
todo poze și demo
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.