This is an old revision of the document!


Stație meteo pentru interior

Introducere

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.

Descriere generală

  • Senzorul BME280 - este cel care se va ocupa de detectarea temperaturii, umidității și a presiunii, trimițând aceste valori către Arduino.
  • Arduino Uno - procesează datele primite de la senzor. Le afișează pe ecranul TFT în culori sugestive și le trimite în cloud către platforma IoT.
  • Platforma IoT - primește informațiile de la Arduino (prin modulul WiFi) și oferă posibilitatea de a fi accesate în timp real. Protocolul folosit este MQTT.

Hardware Design

Lista de piese

  • Arduino Uno
  • Ecran LCD TFT 1.8” ST7735
  • Senzor BME280
  • Modul WiFi NodeMCU ESP8266
  • 5 rezistențe 1K
  • Breadboard
  • Fire mamă-tată, tată-tată

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.

Schema electrică

Hardware

todo poze

Software Design

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).

statie_meteo.ino

Am folosit următoarele biblioteci:

  • ArduinoJson - pentru parsarea valorilor în format JSON către modulul WiFi
  • Adafruit GFX, Adafruit ST7735 - pentru ecranul TFT
  • Adafruit BME280 - pentru senzor

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.

wifi_module.ino

Am folosit următoarele biblioteci:

  • ArduinoJson - pentru extragerea valorilor primite de la Arduino în format JSON
  • UbidotsESPMQTT - pentru comunicarea cu Ubidots prin protocolul MQTT.
  • PubSubClient - tot pentru comunicarea cu Ubidots

Î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

Rezultate Obţinute

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.

Concluzii

Download

Jurnal

Bibliografie/Resurse

pm/prj2021/apredescu/statie_meteo_pentru_interior.1622755335.txt.gz · Last modified: 2021/06/04 00:22 by laura.gheorghe
CC Attribution-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0