Se afișează postările cu eticheta WeMos. Afișați toate postările
Se afișează postările cu eticheta WeMos. Afișați toate postările

marți, 30 iulie 2019

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

   De data asta, aplicatia este una practica, aceea de a prezenta pe ecranul telefonului (sau calculatorului) temperaturile din mai multe zone, mai precis 6, masurate cu senzori DS18B20 (conectati in paralel), apoi temperatura si umiditatea relativa, masurate cu un senzor DHT22 (AM2302) si, in plus, se pot comanda 4 consumatori prin intermediul unor relee. Toate acestea au fost realizate de amicul meu Dan pentru a avea o sera supravegheata si comandata de la distanta.
  Ca placa de dezvoltare folosesc una WeMos D1 ca are un microcontroler ESP8266 si are forma unui Arduino Uno
de aceea, Dan a folosit o placa tip shield cu 4 relee (Relay Shield v3.0), care are pinii de comanda  D4, D5, D6 si D7, care corespund placii WeMos D1 la GPIO4, GPIO14, GPIO12 si GPIO13.
ce are schema
si aranjamentul componentelor si conexiunilor
    Senzorul DHT22 (AM2302) este conectat la D9 ce corespunde la GPIO2, iar senzorii DS18B20 la pinul D3 ce corespunde la GPIO5.
    In programul WeMosD1_DHT22_6DS18B20_4relays_Cayenne.ino se vad configurarile pinilor
  In pagina serverului se configureaza butoanele si indicatoarele, de pe PC, cum am aratat in alte articole
pe telefon, interfata aratand mult mai prietenoasa
   Dupa conectarea placii WeMos D1 la reteaua locala Wi-Fi, 
se primesc date de la la senzori, eu am doar un DS18B20 conectat asa ca restul apare -127..
   Daca se comanda unul din cele 4 relee sau toate, pe ecran apar informatii de genul
- releul 1 actionat
- releul 2 actionat
- releul 3 actionat
- releul 4 actionat
- toate cele 4 relee actionate
   Placa cu relee are leduri la fiecare comanda, asa ca avem si local informatia ca sunt actionate sua nu
   Am facut si 2 filmulete, postate pe canalul de youtube;




miercuri, 22 mai 2019

Masurare tensiune si curent cu ESP8266 pentru monitorizare panou solar

    Microcontrolelere ESP8266 si, implicit, placile de dezvoltare echipate cu ele, gen WeMos, NodeMCU au doar o intrare de masura analogica, care are maxim 1,0V in cazul microcontrolerului si 3,3V pentru placile de dezvoltare datorita unui divizor (uzual 220k/100k). A se vedea ce am scris in articolul Ceas matriceal animat cu ESP8266 si RTC (DS3231) cu informatii despre temperatura si umiditate (3)
   Aceste informatii sunt din articolul NodeMCU ADC with Arduino IDE
   Pentru a monitoriza, de exemplu, un panou solar de cca 300W, vom folosi un divizor rezistiv R2 = 43k cu R1 = 1k1, respectiv un senzor de curent cu ACS712-20 (sau ACS712-30)... in caz extrem se poate folosi si un senzor ACS712-05B, deoarece senzorul permite un supracurent de pana la 12-13A. De asemenea, vom folosi un divizor rezistiv R4 = 3k3 cu R3 = 1k1.
   Dupa cum se observa, sunt 2 iesiri, care nu se pot masura direct cu ESP8266, asa ca vom folosi un comutator CMOS, eu alegand comutatorul cvadruplu CD4066,
 
din care voi folosi 2 comutatoare (A si B)
   Deoarece placile de dezvoltare cu ESP8266 lucreaza cu tensiunea de 3,3V se alimenteza integratul cu aceea tensiune. Cand se masoara tensiunea de pe A'0 se comanda pinul 13 pentru a coneca pinul 1 cu 2, iar daca se masoara tensiunea de la iesirea senzorului ACS712 se comanda pinul 5 pentru a conecta pinul 3 cu 4. Pinii 2 si 4 sunt conectati impreuna, deci acolo vom lega pinul de masura analogic ADC0 sau AN0 (A0) al placii.
   Senzorii de curent ACS712 i-am prezentat in articolele Senzorul de curent ACS712 (I) si Senzorul de curent ACS712 (II)
care au in repaus pe ieisire 2,5V crescand aceasta tensiune (sau scazand, functie de sensul de conectare) cu 0,185V/A pentru sensorul de 5A, 0,1V/A pentru senzorul de 20A, respectiv 0.066V/A la cel de 30A
   Folosind divizorul nostru, vom avea pentru 3,3V la intrarea lui
   De test, daca nu s-ar conecta senzorul de curent si am lega iesirea divizorului R4-R3 la un voltmetru, am avea urmatoarele valori:
   Daca am conecta un pinul ce ar corespunde ieisirii senzorui de curent de 5A (ACS712-05B) pentru tensiunile de test (3,3V si 0V) am avea corespondenta curentilor
asta trebuie sa obtinem daca incarcam un sketch de test.
    Pentru a testa functionarea partii de masura curent, ne folosim de informatiile din articolul The ACS712 Current Sensor with an Arduino doar ca am adaptat ptrogramul pentru cazul meu, cand am acel divizor 3k3-1k1 si tensiunea de referinta de 3,3V (de fapt e tensiunea maxima pe intrarea placilor cu ESP8266). Programul de test este test_ACS712_esp8266.ino si in ecranul de monitorizare seriala vom observa ceva de genul (test cu 4,9V la intrare)
   Cu valorile din schema, pentru conectarea pinului de masura la 3,3V vom obtine la intrarea pinului A0 de pe placa de dezvoltare cu ESP8266:
    De test, daca am lega iesirea divizorului R2-R1 la un voltmetru, am avea urmatoarele valori:
    Pentru testarea partii de divizor la partea  de masura tensiune, se folosesc informatiile din articolul Arduino 25V Voltage Sensor Module User Manual, programul de test fiind test_voltagedivider_esp8266.ino.
   In ecranul de monitorizare seriala, vom gasi ceva de genul
   Pentru teste reale, impreuna cu amicul Alex, incepem si niste teste reale...
   Pasul urmator este cel de testare a masuratorilor de tensiune si curent conform schemei indicate la inceputul articolului si pentru asta am adaugat comanda pe rand a comutatoarelor din CD4066, dupa cum se vede in programul test_VA_esp8266.ino.
   Pentru valorile lui si o calibrare bruta, Alex a obtinut:
23.05.2019
    Deoarece initial ma gandisem sa testeam pe un ESP8266 "chior", am dimensionat divizoarele pentru tensiunea maxima pe intrarea analogica de 1,0V, apoi testele au fost facute pe placa cu ESP8266 cu tensiune maxima de 3,3V, asa ca tensiunile maxime sunt

joi, 10 ianuarie 2019

Comunicare intre 2 ESP-uri in retea proprie

   Microcontroler-ele ESP8266 care se gasesc pe placi simple sau cu interfata USB (NodeMCU, WeMos, etc) pot lucra in retele Wi-Fi ("uairles") ca un simplu client intr-o retea sau pot fi ele "router-e" in modul AP (Acces Point)
   Multe proiecte lucreaza intr-o retea Wi-Fi clasica, dar am gasit un material in care se foloseste un ESP8266 ca AP (creeaza reteaua) si altul care se conecteaza la acea retea Wi-Fi si comunica intre ele.
   Materialul se numeste Accesspoint - Station Communication Between Two ESP8266 MCUs si a fost usor de reprodus.
   Am facut si eu mici modificari in programele AP-ului si clientului (AP_1.ino, respectiv ST_1.ino), pe ecranele de monitorizare seriala, vedem, la server-ul (router-ul) nostru
iar la client, care se conecteaza imediat la reteaua "Wemos_AP" si saluta pe sef
care-i raspunde
  Reteaua Wi-Fi "Wemos_AP" o pot vedea si de pe telefon
si ma conecta la ea
avand parametrii
   Am facut si un prim filmulet numit Comunicare intre 2 ESP-uri in retea proprie.

14.01.2019
    Dupa o scurta perioada am observat ca se pierde comunicarea dintre cele 2 ESP-uri, din cauza "clientului", asa ca am incercat diverse metode (subrutina de reconectare, reset soft, apoi hard reset)... singura cu sanse vizibile de reusita a fost reset-ul hard, dar si acolo am intampinat probleme, pana mi-am adus aminte ca am mai rezolvat cumva aceasta problema la o placa de retea clasica cu W5100 si am presentat solutia in articolul Termostat controlat de pe o pagina web (2).
    Pe scurt solutia era sa schimb ordinea clasica a definirii pinului ca iesire si trecerea lui in HIGH, adica intai i spun ca trebuie sa fie in HIGH si apoi ca e pin ca iesire...
ca sa fiu sigur i-am mai "spus" odata ca trebuei sa fie in HIGH...
   Schema de conectare e simpla: pinul D0 se leaga la RST (RESET) si acesta ajunge in LOW cand se numara prea multe iteratii sau se pierde legatura sau "se pierd date pe drum"...
   Am facut si 2 filmulete:
- Comunicare in retea proprie intre 2 ESP-uri cu autoreconectare
- Accesspoint - Station Communication Between Two ESP8266 MCUs
19.01.2019
  Am schimbat D0 cu D5 si legatura e mult mai stabila.
01.02.2019
    Am testat si versiunea de a "culca" clientul si a-l "trezi" periodic pentru a putea reduce mult curentul, pentru a putea face ceva util, gen statie meteo cu comunicare wi-fi. Am realizat un filmulet in care se poate vedea partea cu consumul, care se numeste Comunicatie wi-fi intre 2 ESP-uri si se revine la conectarea pinului D0 la RESET, "client"-ul foloseste programul ST_1_sleep.ino

versiunea in engleza fiind wifi communication between 2 ESP8266, client using sleep system

vineri, 9 decembrie 2016

Comanda led de pe pagina web creata cu WeMos D1 (continuare)

    In primul articol, am prezentat un sistem de control al unui led (releu, contactor, etc) de pe o pagina web protejata cu parola (1234), care are reconectare automata la reteau wi-fi, in caz de pierdere a legaturii cu acesta (oprire si repornire router, de exemplu). Pagina web este realizata folosind tehnica AJAX (pagina statica si doar o parte din informatii se schimba), doar ca in caz de intrerupere a alimentarii sau restartare automata in caz de blocare a paginii web, nu se memora starea led-ului si nici numarul de apasari (numarul de apasari il folosesc pentru a-mi da seama daca lucreaza bine), asa ca m-am gandit sa folosesc memoria EEPROM a integratului ESP8266.
    Am gasit la http://www.esp8266.com/wiki/doku.php?id=arduino-docs partea cu libraria EEPROM si am vazut ca sunt mici diferente fata de cea clasica pentru Arduino, in sensul ca trebuie sa-i spun cate memorie EEPROM folosesc (pasul 1) si sa-i spun clar ca trebuie sa scrie ceva in memorie (pas 2):
   Ca si in cazul anterior, led-ul din dreapta aprins sau clipind indica o problema la conectarea in reteaua wi-fi. 
   Am facut 2 poze, cu cele 2 cazuri, led controlat aprins si apoi stins si langa un telefon cu pagian web de control pe care se vede si starea ledului (verde - aprins si rosu - stins):
    - led comandat aprins (cel din stanga)

    - led comandat stins
   Schema de conectare este aceeasi:
   Sketch-ul led_controlled_from_webpage_auto_eeprom.ino are implementata si partea de memorare, dupa cum se vede si in cele 2 filmulete: