This is an old revision of the document!


WiFi Thermostat for Central Heating

Introducere

Scopul proiectului este controlarea unei centrale termice prin intermediul smartphone-ului. Acest lucru se poate realiza cu o aplicație software ce transmite comenzi către un microcontroler prin intermediul datelor mobile sau a rețelei wifi. În cazul în care nu se dorește folosirea telefonului se utilizează postul de comandă local ce dispune de un buton ce declanșează pornirea/oprirea centralei și două butoane ce ajustează temperatura dorită. Acesta dispune și de un display pe care se afișează data și ora, temperatura dorită, temperatura și umiditatea ambientale, stadiul de funcționare al centralei termice (pornit/oprit) și o pictogramă ce evidențiază modul de funcționare automat al termostatului.

Ideea de la care am pornit a fost necesitatea înlocuirii unui termostat inteligent ce nu a mai funcționat și care dispunea de aceleași capabilități de controloare a centralei termice prin intermediul smartphone-ului.

Utilitatea proiectului constă în monitorizarea facilă a temperaturii și umiditații și a stadiului de funcționare al centralei termice. De asemenea, se înlocuiește necesitatea pornirii manuale a acesteia prin funcționarea automată a termostatului.

Descriere generală

La prima punere în funcțiune, microcontrolerul se conectează la internet la o rețea de wifi predefinită și afișează un mesaj de confirmare către monitorul serial al calculatorului (dacă acesta este conectat), iar apoi afișează un mesaj de bun venit pe display-ul local și pe display-ul telefonului. Sunt citite temperatura și umiditatea ambientale de la senzorul DHT11 și sunt afișate pe ambele display-uri. Temperatura dorită prestabilită este de 25°C ce se poate modifica ulterior fie de la cele doua butoane de la postul de comandă local fie de la slider-ul de pe aplicația mobilă.

Dacă funcția automată a termostatului nu este activată, atunci, în orice moment, se poate porni sau opri centrala termică fie de la butonul fizic de comanda fie de la butonul aplicației software de pe telefon pană se ajunge la temperatura dorită.

Funcția automată va porni centrala termică daca temperatura ambientală a scazut cu o toleranța prestabilita (2°C) sub temperatura dorită și o va opri daca temperatura ambientală a crescut cu toleranța prestabilită peste temperatura dorită. În aceste momente se va afișa un mesaj sugestiv pe ecranul smartphone-ului (AUTO ON/AUTO OFF) și un simbol de lacăt pe ecranul postului de comandă local. Pentru a anula funcționalitatea automată a termostatului se ajustează temperatura dorită.

Pentru pornirea centralei termice microcontrolerul va cupla un releu, va aprinde un LED și va afișa un mesaj corespunzator pe display-ul local și pe display-ul aplicației smartphone-ului (ON). Pentru oprirea centralei termice se declanșeaza evenimentele opuse: decuplează releul, stinge LED-ul și afișează OFF pe ecrane.

Data și ora se afișează doar pe ecranul postului de comandă local pentru că pe telefon sunt afișate constant în afara aplicației software. Pentru ca acestea să fie setate corect folosesc biblioteca NTPtimeESP.h ce se conectează la serverul local Romaniei prin wifi. Astfel exclud necesitatea folosirii unui modul hardware RTC.

Schema bloc

Hardware Design

Lista de componente
Schema electrică

Software Design

Mediul de programare ales este platforma Arduino IDE cu setările aferente microcontroller-ului NodeMCU ESP8266.

Aplicația aleasă pentru comunicarea dintre µc și smartphone este Blynk, disponibilă atât pe Android cât și pe iOS. Aceasta are o interfață simplă și este ușor de folosit. În cadrul proiectului, aplicația conține trei elemente:

  • un ecran pe care sunt afișate temperatura și umiditatea ambientale, stadiul de funcționare al centralei termice (ON / OFF), temperatura dorită și un martor ce semnifică funcționarea automată a termostatului;
  • un buton de comandă ce pornește sau oprește centrala termică în modul manual;
  • un slider pentru ajustarea temperaturii dorite.

wifi_central_heating_aplicatie_tel.jpg wifi_central_heating_display.jpg

wifi_central_heating_buton.jpg wifi_central_heating_slider.jpeg

Imaginile anterioare descriu setarile aferente fiecărui element:

  • ecranul este setat pe modul advanced, pinul de comunicare cu µc este pinul virtual V3 (folosit și în codul sursă), culoarea de fundal este albastru deschis, iar culoarea textului este albă;
  • butonul este denumit „Comandă centrala termică”, pinul de comunicare este GPIO14 (D5), modul de tip push, denumirea „Trimite comanda” este afișată cât timp acesta nu este apăsat, iar denumirea „Comandă trimisă” este afișată cât timp este apăsat, dimensiunea fontului este medie și culoarea acestuia este neagră;
  • sliderul este denumit „Temperatura dorită”, are culoarea neagră, pinul de comunicare este pinul virtual V4, valorile exprimate sunt de tip întreg (fără zecimale) cuprinse în intervalul 15-30 (°C), funcția send on release este dezactivată (se trimit valorile la interval de 100ms) și valoarea setată este afișată.

Pentru comunicarea dintre NodeMCU și aplicația Blynk folosesc bibliotecile Blynk.h, ESP8266WiFi.h, BlynkSimpleEsp8266.h, dar și un cod de autorizare (același și în codul sursă și în aplicația software) și elementele de conectare ale µc cu adresa wifi (id-ul și parola):

Pentru a exclude necesitatea folosirii unui modul hardware RTC am folosit biblioteca NTPtimeESP.h. Aceasta declară o structură (strDateTime) ce stochează datele obținute printr-o cerere de tip GET pe un server ce se ocupă cu un RTC rezervat pentru Romania. Efectul obținut este că se afișează ora exactă în orice moment:

Pentru declararea și utilizarea senzorului DHT11 am folosit biblioteca SimpleDHT.h:

Pentru utilizarea ecranelor LCD (fizic și virtual din aplicația mobilă) și a portului serial (comunicarea dintre µc și calculator) am folosit bibliotecile Wire.h si LiquidCrystal_I2C.h:

Pentru afișarea informaților pe ecrane și monitorul serial mă folosesc de următoarele funcții:

Rezultate Obținute

Concluzii

Download

Jurnal

  • 12 aprilie - achiziție componente hardware
  • 15 - 18 aprilie - finalizare conectare componente

Bibliografie/Resurse

pm/prj2021/avaduva/basic_smart_home.1621150473.txt.gz · Last modified: 2021/05/16 10:34 by petru.mateescu
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