Jump to content
ELFORUM - Forumul electronistilor

Termostat WiFi centrala termica cu ESP8266/NodeMcu


Untold

Recommended Posts

Va salut! 

Mi-a venit ideea sa-mi fac un termostat WiFi cu ESP8266. Cum nu stiu programare, am apelat la Gepeto. 

Jucarica este compusa din 2 Esp-uri, unul fix ce se monteaza la centrala, si unul portabil pe care il iei cu tine prin casa, dupa modelul celor din comert.

Cele 2 Esp-uri comunica intre ele prin AP-ul unitatii mobile, care are denumirea de Termostat_AP si la care te poti conecta si cu telefonul, avand o pagina web (192.168.4.1, ip-ul general al esp-ului) care are 4 butoane: Temp+, Temp-, Centrala Pornita, Centrala oprita. Temperatura de la care porneste centrala creste/descreste din butoane din 0.5 in 0.5 grade C. Deci, ii poti da, spre exemplu, 22.5, 21.5 sau 22.00 de grade. 

Am incarcat ambele sketch-uri in cele 2 esp-uri, jucarica functioneaza fain, doar ca inca nu am senzorul de temperatura DS18B20, inca nu mi-a venit din ciaina. (La noi, costa mai mult transportul decat senzorul care este 8 lei).

In fine, una peste alta, pentru ca nu am senzorul conectat la unitatea portabila, daca ma uit in serial monitor-ul unitatii fixe, imi zice ca s-a conectat si imi apare mesajul "„Eroare: Senzor deconectat!”. Gepeto mi-a zis ca daca leg si senzorul, o sa primesc si date de la unitatea portabila.

Abia astept sa-mi vina senzorii, releu am (si de 3V si de 5V), ca sa pot construi jucarica.

Partea de pe centrala o voi alimenta dintr-un incarcator micut de telefon (5V/1A), iar cea mobila din 2 acumulatori 18650 inseriati pe care ii pot pune la incarcat in bms. Dar, la cat consuma esp-ul ala, cred ca o sa tina mult si bine.

Atasez si sketch-urile pentru cine vrea sa se joace si eventual daca se pot aduce imbunatatiri. O sa mai vb cu Gepeto, as vrea totusi sa-i pun si 2 butoane fizice pe unitatea mobila, ca sa nu mai trebuiasca sa intru pe pagina web cand imi e lene.

 

ESP8266_WiFi_Thermostat.rar

Link to comment
  • Replies 38
  • Created
  • Last Reply

Top Posters In This Topic

Ar fi util sa ai si un program pentru centrala, pe zile, ore si temperaturi.

Plus un program "manual", accesibil la un buton, care "suprascrie" temporar programul care ruleaza in mod curent in perioada respectiva si "cere" o temperatura mai mare pe o perioada determinata de timp. Dupa care programul revine la "normal".

Pe unele termostate comerciale acesta este denumit "Party mode" si ruleaza o temperatura setata de utilizator pe o perioada de 2 ore, de ex.

Desigur ca se poate cere temporar o temperatura diferita din comenzile obisnuite +/- dar exista pericolul sa uiti sa o readuci la normal. 

Mie, unuia, acestea mi s-ar parea niste cerinte utile pentru un termostat inteligent.

Altfel, frumoasa realizarea. Felicitari !

Daca reusesti sa o integrezi in Home Asistant, va fi si mai interesanta...

 

PS

Exista deja pe piata ceva in sensul asta, realizare gen home made de un ucrainean, chiar cu modulatia puterii centralei...

https://diyless.com/product/opentherm-thermostat2#connection

Link to comment

Termostatele comerciale rulează un soft care cansuma foarte puțin, infim pt ca mie 2 baterii R6 ma țin 2-3 ani, și doar la intervale destul de mari de timp, un minut sau chiar mai mult, citește senzorul iar în funcție de valoarea citita și valoarea setata comanda centrala ON sau OFF. Tot acest proces durează citeva facțiuni de secunda timp în care are consum mare - poate zeci de miliamperi, iar 99.999% din timp are consum de doar citiva zeci de micro amperi. 

Nu stiu dacă o conexiune wifi la poate fi inițiată, transmise datele și apoi oprita în citeva sute de milisecunde dar un aparat de genul acesta cam asa trebuie sa se comporte. 

Exista multe alte tipuri de conexiuni radio care poate sînt mai potrivite scopului daca nu poate fi configurata rețeaua wifi sa funcționeze în regim de consum extrem de mic. 

Link to comment
Acum 40 minute, sesebe a spus:

Nu stiu dacă o conexiune wifi la poate fi inițiată, transmise datele și apoi oprita în citeva sute de milisecunde dar un aparat de genul acesta cam asa trebuie sa se comporte. 

 

Normal ca se poate, inclusiv folosind o coada de mesaje (Mosquitto de exemplu,  care poate fi rulat local pe un rpi/nuc sau in cloud ) prin care se decupleaza complet cele 2 ESP-uri neavand nevoie sa fie ambele cu WIFI pornit in acelasi timp ca sa poata comunica intre ele, asa functioneaza aproape toate "jucariile" IOT. Se pot obtine consumuri extrem de mici si cu ESP-uri, dar trebuie PCB custom, placile de dezvoltare nu prea sunt bune pentru baterii avand regulatoare de tensiune cu consum foarte mare si circuite auxiliare care consuma inutil de multe ori.

Edited by Bandi Szasz
Link to comment

ESP-uri nu au fost concepute pentru a rula, pe baterii, aplicatii gen termostate WiFi pentru centralele termice.
Cu un consum mediu de aprox. 70 mA , cu varfuri de peste 150mA.
Daca semnalul WiFi este mic, puterea consumata creste mult.
Nici deep sleep nu ajuta prea mult datorita duratei de reconectare mari la WiFi, de 4-5 sec.
Iar pentru unitatea mobile a unui termostat trebuie iesit din sleep destul de des pentru a citi, afisa temperatura si comanda releu centralei.
Mai mult de 2-3 zile nu va merge pe un acumulator de gen 18650.
 

Oricum, felicitări @Untold pentru preocupări.
Este un proiect școala din care se poate învăța.

Edited by teomishu
Link to comment

"avand o pagina web (192.168.4.1, ip-ul general al esp-ului) care are 4 butoane: Temp+, Temp-, Centrala Pornita, Centrala oprita. Temperatura de la care porneste centrala creste/descreste din butoane din 0.5 in 0.5 grade C."

 

Si totusi eu nu vad nicaieri aceste butoane ... Ce imi scapa ?

Link to comment
Acum 9 ore, fratello a spus:

"avand o pagina web (192.168.4.1, ip-ul general al esp-ului) care are 4 butoane: Temp+, Temp-, Centrala Pornita, Centrala oprita. Temperatura de la care porneste centrala creste/descreste din butoane din 0.5 in 0.5 grade C."

 

Si totusi eu nu vad nicaieri aceste butoane ... Ce imi scapa ?

Cred ca am pus eu prima varianta de sketch. Atasez ultima varianta de sketch pt unitatea mobila.

cod_unitate_mobila_actualizat.ino

Acum 12 ore, teomishu a spus:

ESP8266 cu WiFi activat consuma in medie 70 mA.
Cu un 18650 de 2500mA ai cam 35 de ore de functionare.


 

Pai pot pune 2 acumulatori in paralel si o sa creasca durata de functionare. Si pun si un bms in el ca sa-i pot incarca fara sa-i mai scot din cutie. Nu are rost sa-i pun alimentare din retea daca tot se cheama unitate portabila/mobila.

Link to comment

@fratello, uite cum trebuie sa apara: 

Screenshot_20241001_075607_Brave.jpg

Screenshot_20241001_075625_Brave.jpg

Acum 11 ore, teomishu a spus:

Nici deep sleep nu ajuta prea mult datorita duratei de reconectare mari la WiFi, de 4-5 sec.
Iar pentru unitatea mobile a unui termostat trebuie iesit din sleep destul de des pentru a citi, afisa temperatura si comanda releu centralei.

@teomishu am vazut prin sketch ca la 10.000 ms se face refresh-ul...daca maresc la 20 sau 30 de secunde, se reconecteaza mai rar. Pot pune chiar 1 min, ca nu afecteaza cu nimic.

Link to comment

Mi-a venit ideea sa mai adaug la unitatea mobila doua butoane fizice, + si - din care sa pot regla temperatura si un mic display OLED pe care sa se vada. (pentru cazul in care nu mai stau sa deschid telefonul).

I-am cerut lui Gepeto un sketch cu niste explicatii. Eu inca nu am display OLED, dar imi voi cumpara.

Atatsez codul cu butoane si display si explicatiile lui Gepeto (suna ciudat, dar asa imi place mie sa-i zic).

 

"Adăugarea butoanelor fizice pentru reglarea temperaturii și a unui display OLED este o idee excelentă! ESP8266 ar trebui să aibă suficienți pini GPIO pentru a gestiona atât butoanele, cât și display-ul, deși va trebui să planificăm bine alocarea pinilor.

Ce trebuie să facem:

Butoanele fizice:

Vom folosi două butoane: unul pentru a crește temperatura și unul pentru a o scădea.

Fiecare buton va fi conectat la câte un pin GPIO și vom folosi „pull-up” intern pentru a reduce numărul de componente externe.

Display OLED:

Vom folosi un mic display OLED I2C, cum ar fi unul de 0.96 inch, cu rezoluție de 128x64 pixeli.

Acest tip de display folosește doar două pini GPIO pentru comunicarea I2C: SDA și SCL.

Pasul 1: Pinout ESP8266

ESP8266 are pini limitați, deci va trebui să planificăm cu atenție ce pini vom folosi pentru fiecare componentă:

Butoane: Două pini GPIO (ex: GPIO12 și GPIO13).

Display OLED: I2C folosește pinii SDA (GPIO4) și SCL (GPIO5).

Pasul 2: Schimbarea în cod

1. Adăugăm butoanele fizice:

Creăm un cod care va detecta apăsările butoanelor și va ajusta temperatura.

2. Adăugăm controlul OLED:

Vom afișa temperatura actuală și cea țintă pe display-ul OLED.

Explicații:

Butoane fizice:

Butoanele sunt conectate la pinii GPIO 12 și 13.

Se folosesc pentru a crește sau scădea temperatura țintă.

Temperatura este actualizată în timp real pe display și trimisă la unitatea fixă.

Display OLED:

Afișăm temperatura țintă și starea centralei (pornită/oprită).

Folosim biblioteca Adafruit_SSD1306 pentru a gestiona afișajul OLED.

Pagina Web:

Păstrează funcționalitatea de setare a temperaturii și controlul centralei.

Ce urmează:

Asigură-te că pinii sunt corect conectați la butoane și la display-ul OLED.

Încarcă noul sketch și testează funcționalitatea cu butoanele fizice și afișajul".

 

Daca ar putea cineva sa testeze si acest cod, ar fi bine. Eu nu pot testa fara display, dar as putea sa ma uit in serial monitor sa vad ce misca pe acolo.

cod_unitate_mobila_display_butoane.ino

Link to comment

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now



×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.Terms of Use si Guidelines