luni, 11 decembrie 2017

Prezentare, stocare date si executare comenzi de pe pagina Cayenne (2)

Nota: sunt schimbari in protocolul de transmitere (acum serverulul Cayenne foloseste MQTT) asa ca vedeti si noul articol !

   In articolul anterior, am folosit o placa NodeMCU, prin conectare Wi-Fi la retea, acum o sa folosesc o placa Arduino Uno conectata la reteaua locala prin shield W5100.
   Pentru asta trebuie sa ma conectez de pe calculator la pagina Cayenne, cu user si parola.
Aleg o noua placa de dezvoltare Uno cu placa de retea clasica (Ethernet W5100):
   Daca apas pe butonul SKETCH mi se deschide o fereastra cu datele necesare de incarcat in Arduino pentru a comunic ape canalul nou creat.
   Copiez textul in programul Arduino IDE
incarc programul 0.inosi urmaresc pe ecranul de monitorizare seriala daca e totul in regula
 
   Pentru a identifica usor canalul, deoarece sunt si unele inactive, ii schimb numele, in ce am de gand sa fac:
si voi vedea deja canalul cu numele schimbat
   Deoarece nu-s foarte familiarizat cu acest site, am facut cum mi s-a parut mie ca e ok, alegand o cale mai lunga, dar care stiu c afunctioneaza.
   Aleg sa fac o feastra de indicare (WIDGET) si cum nu am gasit pentru senzorul DHT22 (AM2302), am ales unul senzor general, dupa care o sa modific parametrii sa fie in regula.
si apas ADD SENSOR, aparand pe canal o zona de indicare
care are urmatorii parametrii acum
   Dupa ce mi-am dat seama ca nu e la fel cu ce prezentasem in articolul anterior la placa NodeMCU, am adaugat un senzor inclus de server, pentru a vedea cum se pun informatii, asa ca ma ales sa pun un senzor analog de temperatura TMP36
Am ales sa vad sketch-ul
si am completat in sketch-ul meu ce nu era. si am vazut ce imi trebuie sa folosesc informatiile pentru senzor DHT22 (AM2302), asa ca am incarcat sketch-ul modificat 1a.ino, care e cel de baza cu datele senzorului meu.
   Am apasat butonul sa apara fereastra de indicare
Apoi am adaugat si un alt senzor,
pe pagina punand si indicatia de la umiditate:
   Intru la ferestra in setari pentru a schimba numele lor:
si sterg fereastra de la TMP36
si astfel, am un canal curat
   Deoarece pentru a realiza un termostat am nevoie de un releu, adaug asa ceva
si pun si partea de buton in sketch, acesta devenind 1b.ino
  Pe acran am acum am indicatiile de temperatura si umiditate plus butonul de comanda releu (led).
   Partea de comanda a releului (ledului) este configurata asa
   Acum pod da comenzi de aprindere si stingere led
   Am facut si un filmulet in care se prezinta canalaul si cum pot fi modificate indicatiile daca se incarca programul (sketch-ul) Cayenne_Uno_W5100_DHT22_button.ino.
   Senzorul de umiditate is tenmeoratura AM2302 (DHT22) este conectat la pinul A0 (D14), iar ledul la D2.
   Pe telefon, functie de sistemul de operare, putem avea indicatii de genul:
- Android

- iOS (pe IPhone, iPad)

Nota: Reactiile (actualizarea datelor) pot fi mult mai lente pe telefoane... uneori trebuind inchisa si redeschisa aplicatia...

PS: am facut si 2 filmulete cu mici comentarii:
Arduino Uno cu Ethernet shield trimite date pe canal Cayenne si controleaza un led
Arduino Uno & Ethernet shield send data to Cayenne channel and control external led

luni, 4 decembrie 2017

Placa de retea cu W5100 cu probleme

   Am incercat zilele trecute sa conectez o placa Arduino Uno cu un shield de retea cu W5100 si nu se conecta in retea. Initial am banuit cablul de retea folosit, pentru ca stiam ca era functional, dar era in alta retea... asa ca mi-am adus aminte ca de problema asta se lovise si GeoMar, in reteaua lui nu mergea, la a mea mergea, fara probleme. Totul porneste de o retea de 4 rezistente SMD de 51 ohmi (inscriptionate 510), care a fost inlocuita cu una inscriptionata 511 (adica 510 ohmi), dupa cum se vede in articolul The W5100 bug(s) – and how to fix it (them).
   Problema mentionata acolo are solutia in sursa in https://forum.arduino.cc/index.php?topic=351477.30 prin montarea a 2 rezistente de 100 ohmi intre pinii 1-2, respectiv 3-6 ai mufei de retea:
   Am realizat si eu modificarea, cu 2 rezistente de 100 ohmi, cam mari pentru ce imi trebuia mie, dar am zis sa testez. A mers din prima...

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.