Dupa ce un prieten mi-a atras atentia ca un senzor AM2302 din seria celui conectat la NodeMCU indica temperatura 00C si umiditate relativa 0% dupa un timp, am aflat si eu asta privind canalul de la ThingSpeak, pe care afisez datele, asa ca am conectat alimentarea la un pin (D2 sau GPIO4) si in caz de eroare opresc alimentarea senzorului si, dupa o mica pauza, il realimentez, vedeti in sketch-ul NodeMcu_DHT_ver1.ino.
Placa NodeMcu se bazeaza pe un ESP8266 pentru conectare Wifi si CH430G pentru conectare la USB. Exista mai multe modele, eu avand versiunea 0.9, care este prezentata in materialul de la www.14core.com
doar ca am modificat pentru DHT22, vezi sketch-ul meu.
Ulterior, am gasit un sketch, pe forumul Arduino, in discutia de la http://www.esp8266.com/viewtopic.php?f=8&t=4307, care foloseste progamare Ajax (pagina e fixa si se schimba doar anumite variabile sau fragmente de pagina), doar ca acolo se arata timpul de cand functiona placa NomeMcu, eu schimbadu-l pentru temperatura si umiditate:
Dupa ce m-am tot "jucat" cu minipagini web tip server, cu stil classic si Ajax, am decis sa incerc si folosirea paginii ThingSpeak, care ofera prezentare grafica a unor date si, mai ales, stocare date, care pot fi ulterior prelucrate.
Prima incercare am facut-o folosindu-ma de o placa Arduino Mega cu placa de retea tip shield (Ethernet shield cu W5100) la care am conectat un sensor AM2302 (DHT22):
Sketch-ul folosit se gaseste pe GitHub fiind cel numit ThingSpeak_DHT22_ver1a.ino, in care trebuie sa puneti Write API Key-ul canalului pe care il postati:
Pe canalul ThingSpeak cu 2 valori, cum este facut si sketch-ul, la setari avem:
19.12.2015 Deoarece am avut surpriza neplacuta ca la reincarcarea sketch-ului de pe versiunea Arduino IDE 1.6.5 sa pot trimite date abia la 7 minute (in ecranul serial comenzile se trimiteau litera cu litera), nu la 20 secunde ca de obicei, am modificat sketch-ul pentru versiuni mai stabile (1.0.3..1.0.5), acest sketch fiind ThingSpeak_DHT22_ver1a_ide10.ino .
In articolul anterior (Modulul de retea "uairles" ESP8266-05 si Arduino) am facut teste cu comenzi AT si cu conectarea la un server sa citesc ora. In acelele experimente, am folosit o placa Arduino Mega si un adaptor de nivel logic de la 5V cu cat lucreaza placa Arduilo la 3,3V cu cat lucreaza ESP8266. M-am gandiot sa fac o pagina de net, in care sa vad, pentru inceput, temperatura si umiditatea din camera. Montajul cu Arduino Mega, o interfata de nivel logic si un senzor DHT11 (DHT22 era ocupat):
Am zis sa folosesc si un Arduino Uno, asa ca a trebuit sa reduc viteza de lucru la o valoare mai mica de 115200bps, deoarece librariile de emuleaza alte seriale nu lucreaza bine cu frecvente mari... din teste 19200bps e ok. Montajul este similar, doar ca nu am legat la Rx2-Tx2, cum e la Arduino mega, ci la D10 si D11:
Schema de conectare este similara cu cea de jos, doar ca senzorul este conectat la D8, nu la A2, si nu e acel led:
respectiv
In unele sketch-uri, am pus reset periodic, asa ca exist ao legatura intre D7 si RESET, cal si la Arduino Mega.
Fata de articolul anterior, in care am folosit o placa Arduino Mega si o placa de retea de tip shield cu W5100, care creeea pagina de fiecare data, acum folosesc stilul Ajax, adica pagina web este statica si se schimba periodic sau la cerere parti din pagina, astfel placa de retea este putin utilizata si apar cazuri de "blocare" mai rar sau.. deloc... Schema folosita este aceeasi:
doar ca pagina, respectiv fisierul index.html este memorat pe cardul micro SD, deci folosesc incriptorul de pe placa de retea, cum este prezentat in articolul SD Card Web Server I/O, care avea o interfata de genul:
Eu am incercat sa folosesc stilul anterior:
iesindu-mi:
apoi, am mai lucrat la pagina, care reseteaza din ora in ora placa Arduino si placa de retea (prin legarea pinului D7 la pinul RESET); pagina este asa: