luni, 4 decembrie 2017

Termostat cu NodeMCU (ESP8266) pe pagina Cayenne

   Dupa ce m-am familiarizat un pic cu serverul Cayenne si configurarile pentru placa de dezvoltare NodeMCU v.0.9 (ESP8266), am realizat un sistem de imi monitorizeaza temperatura si umiditatea relativa a aerului prin informatiile primite de la un senzor AM2302 (DHT22) si care imi poate comanda un led (poate fi folosit is un releu) de pe o interfata PC sau telefon cu Android sau iOS (iPhone) folosindu-ma de o placa NodeMCU (ESP8266), acum prezint un sistem de termostat.
   Termostatul foloseste acelasi senzor AM2302 (DHT22) pentru temperatura si umiditatea relativa a aerului din incinta, comanda se face de pe o iesire digitala a placi NodeMCU (aceeasi ca si in proiectul anterior), dar reglajul se face de pe 2 butoane virtuale.
   Eu ma folosit pentru teste si ledurile de pe placa NodeMCU, ca si in proiectul anterior: ledul rosu de la GPIO16 (D0), ledul albastru de la GPIO2 (D4), senzorul este tot la GPIO5 (D1), iar ledul exterior inseriat cu o rezistenta de 100 ohmi la GPIO0 (D3).
  Sketch-ul folosit este Cayenne_thermostat_ESP8266.ino si avem indicatie de led rosu daca temperatura este mai mare decat cea setata cu +0,25 grade, iar ledul albastru se aprinde cand temperatura este mai mica cu 0,25 grade Celsius.
  Eu am folosit aceasi placa si acelasi canal, cu cele 3 date de identificare unice
   Am adaugat noi butoane si indicatii (Add New -> Device/Widget), se selecteaza placa (denumita de mine NodeMCU v0.9) si se completeaza campurile.
   Butoanele si indicatiile mele sunt configurate astfel:
- temperatura de la senzor este receptionata pe canalul 1
- umiditatea relativa de la senzor este receptionata pe canalul 0
- starea de functionare a sistemului de incalzire (centralei) este receptionata pe canalul 2
- butonul de crestere a temperaturii dorite este pe canalul 3
- butonul de scadere a temperaturii dorite este pe canalul 4
- temperatura dorita este afisajata e canalul 5
   Pentru butoanele de comanda am folosit niste artificii, in sensul ca sunt butoane ON/OFF doar ca dupa ce sunt transmise datele la server revin automat pe liber, ca un fel de buton cu revenire.
  Temperatura setata este memorata in EEPROM-ul ESP-ului de pe placa NiodeMCU si afisata pe canalul 6.
   Tenmoeratura este reglata cu un histerezist total de 0,5 grade, de data asta centrala se opreste la +0,25 grade peste pragul reglat, respectiv reporneste cand tempratura este cu 0,25 grade mai putin de pragul reglat.
   Prezint 2 filmulete, in care descriu modul de functionare si reglare:
Termostat cu NodeMCU pe server Cayenne
Cayenne thermostat with NodeMCU
   Vlad a realizat si el un test cu o placuta cu un ESP8266MOD, din aceea fara simpla, si a constatat ca pot apare probleme daca se foloseste GPIO0 (D3), deoare ce la reconectarea alimentarii ii intra in modul de prograamre, asa ca el a mutat ledul pe GPIO15 (D8).
   Din aplicatia Android, ca si de pe cea iPhone, se pot modifica modurile de prezentare al butoanelor sau indicatiilor.
   Dupa intrarea pe canalul termostatului:
poate apare starea de centrala oprita
sau pornita
   Configuratia se poate vedea si modiifca si de pe telefon:
- umiditatea relativa a aerului, de pe canalul 0
- temperatura aerului, de pe canalul 1
- starea centralei, de pe canalul 2
- butonul de crestere a temepraturii dorite, de pe canalul 3
- butonul de scadere a temperaturii dorite, de pe canalul 4
- temperatura dorita, de pe canalul 5
    Am modificat  indicarea umidtatii relative ca un "ceas" (gauge):
si pot vedea urmatorile stari:
   Am modificat simbolurile pentru butoanele de crestere si scadere a temperaturii dorite:
obtinand
   Am schimbat si la centrala
obtinand
   Am schimbat iar la partea de indicare stare centrala
obtinand
   Pe pot vedea istorice ale parametriilor afisati, care se si pot descarca... deci e un termostat numai bun... se pot trimite si emailul la anumite valori ale temperaturilor, prin activare "trigger"-e.
- neactivate
- activare pentru trimitere email daca temperatura este peste 30 grade Celsius
- activare pentru trimitere email daca umiditatea este mai mare de 90%
- activare trimitere mesaje
   Ca idee, se pot primi SMS-uri, dar se trimit din SUA si nu stiu ce costuri sunt pentru mine sau cei ce au serverul, asa ca nu am abuzat de aceasta "facilitate".
   Ca idee, pe un IPhone prezentarea este cu o zecimala, pe cand la Android era cu 2 zecimale.


6 comentarii:

  1. Multumim pentru toate aceste informatii, pe care le impartasiti cu o reala pasiune.
    As vrea sa comand un led/releu prin webserver si nu am reusit.
    Daca puteti sa ma ajutati cu un sfat(sunt incepator), care ar fi cea mai simpla metoda prin platforma arduino, conectare wireless?
    Am incercat cu un modul Nodemcu cu ESP8266MOD si CP2102 dar am control doar din zona retelei locale. Pot controla un led on/off prin wifi de pe un telefon sau laptop dar cum spuneam mai sus, doar din reteua locala, prin conectarea la router a dispozitivelor.
    Am inteles ca e posibil controlul cu acest modul si printr-un webserver, folosind google docs dar nu am reusit. Modulul nodemcu folosit este cel de aici :
    https://www.amazon.com/HiLetgo-Internet-Development-Wireless-Micropython/dp/B010O1G1ES
    As incerca si cu alt modul, conectare wifi-fara cablu de retea(prin router)daca imi puteti recomanda.
    Posibil sa aveti deja un topic si eu l-am omis.
    Multumesc!

    RăspundețiȘtergere
    Răspunsuri
    1. uitati-va pe articolul anterior: http://nicuflorica.blogspot.ro/2017/11/prezentare-stocare-date-si-executare.html

      Ștergere
  2. Salut in primul rind mentionez ca folosesc arduino nano .am cumparat display 7 segmente kw4-563asa pt proiectul acesta cu temperaturi poz si negative cu lm 35 si diode . LM35_termostat_eeprom_ver4m3.ino. afiseaza temperatura dar in loc de 25.6 imi arata 2.56 daca deschid portul serial e ok chiar functioneaza f .bine se stinge ledul la temp setata .montajul meu nu are erori de hardware am verificat.punctul nu stiu cum sa l mut la al doilea digit.e legat ca in chema la d13.imi poti da osugestie ?multumesc anticipat !

    RăspundețiȘtergere
    Răspunsuri
    1. am pornit pc si am dat cautare pe google e vorba de articolul de la http://nicuflorica.blogspot.com/2015/09/termostat-cu-afisaj-led-2.html ... curiors ca mie imi arata bine in pozele alea si nu vad in sketck-ul de la https://github.com/tehniq3/4digit_7segmentled_termostat/blob/master/4digit_7segmentled_termostat_eeprom_ver4m3.ino de ce ar fi virgula mutata.. oricum e in subrutina void te(int toDisplay) de la linia 577, incercati sa schimbati lin linia 589 LOW cu HUGH si in linia 597 pe HIGH cu LOW

      Ștergere