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

joi, 11 martie 2021

Stocare date de la doi senzori DHT pe card SD + trimitere pe canal Thingspeak

 

   Am apelat la metoda prezentata si articolul Vizualizare parametrii panou solar pe server Thingspeak adica folosesc o placa Arduino Nano (sau oricare alta: Uno, Leonardo, Mega, etc) pentru a prelua datele de la 2 senzori DHT22 (AM2302), un modul RTC pentru ora cu data, un modul SD pentru memorare date (ora, data, temperatura + umiditate relativa de la cei 2 senzori) si un afisaj alfanumeric LC2004 + 2 butoane fara retinere pentru reglare ora si data. Placa de dezvoltare Arduino trimite pe 2 pini (SoftwareSerial) un mesaj codat catre o placa de dezvoltare WeMos D1 Mini (sau orice alta placa cu ES8266), care se conecteaza la serverul Thingspeak pentru a trimite cele 2 temperaturi si cele 2 valori ale umiditatii relative ale aerului.

   Schema de test, folosita de mine, este:

Aceasta schema este inspirata de cea din articolul Arduino datalogger with SD card, DS3231 and DHT22 sensor
    Revenind la schema folosita de mine, am incarcat in placa Arduino programiorul (sketch-ul) i2c scanner si am observat ca interfata afisajului are adresa 0x3F (alta adresa folosita des este 0x27), DS3231 are 0x68, iar memoria EEPROM de pe modul RTC are 0x57
   Nu voi folosi memoria EEPROM de pe modul, dar ea este utila pentru cazul in care folosim o placa de dezvoltare cu microcontroler fara EEPROM, cum este Arduino Due (microcontroler Atmel SAM3X8E ARM Cortex-M3). Un exemplu de utilizare a memoriei externe de pe modulul RTC este cel din articolul Termostat dual cu Arduino Due si afisaj de 3,95" (10cm), acesta a fost inspirat de informatiile din articolul Adding External I2C EEPROM to Arduino (24LC256)
   La primele teste, am avut la indemana doar un senzor DHT22 (AM2302) asa ca pe a doilea l-am simulat cu functia random si nici nu am folosit modulul de card.
   Programul Arduino_tx_v1.ino, modificat de mine, scrie pe ecranul de monitorizare seriala, dar si in fixierul txt de pe card intr-o forma ce poate fi convertit ulterior in fisier Excel pentru a putea prelucra datele (de exemplu, grafice), din
in
   Am pastrat partea de reglare a orei si datei, se apasa butonul de selectie, ora clipeste si se modifica valoarea din butonul al doilea, care se poate apasa e fiecare data sau tine apasat, apoise apasa iar pe primul buton pentru trecere la minute, urmand apoi ziua, luna si anul. Avand interfata i2c pot stinge sau aprinde lumina de fundal, asa ca am profitat: lumina de fundal se aprinde la apasarea oricarui buton si se stinge dupa un anumit timp de la ultima apasare). Toate aceste le vedeti in filmuletele:
   Pentru a trimite date catre placa de dezvoltare cu ESP8266, am folosit codarea de tipul
in care primele 8 cifre dupa semnul * sunt datele de la primul senzor, si au semnificatia:
- prima cifra imi arata semnul temperaturii (0 este temperatura pozitiva, 1 este negativa)
- urmatoarele 3 cifre reprezinta temperatura multiplicata cu 10, pentru a putea avea si o zecimala
- urmatoarele 4 cifre reprezinta umiditatea relativa multiplicata cu 10, pentru a putea avea si o zecimala
   Urmatoarele 8 cifre sun pentru datele de la al doilea senzor, la final se trimite caracterul #.
   Programul Wemos_rx_v1.ino decodifica aceste date si le trimite pe canalul Thingspeak cu numarul 1321079
   Pentru aceasta este nevoie de un cod unic alocat canalului (APIkey), despre modul de configurare am scris in articolul Prezentare si stocare date pe pagina ThingSpeak
   Dupa cum scrisesem mai sus, in mod normal, lumina de fundal este stinsa
iar dupa apasarea unuia din butoane (de preferat cel ce modifica valorile, nefunctional altfel in modul normal), se aprinde afisajul o perioada de timp (150 secunde am ales eu)
   Am mai facut 2 filmulete, cu ambii senzori montati:

luni, 15 iunie 2020

Reducere consum la placile de dezvoltare cu ESP8266

   Pentru a putea trimite date (de exemplu, temperatura si umiditatea relativa a aerului) dintr-o incinta sau zona fara posibilitate de alimentare de la retea, trebuie folosita facilitatea de consum redus in modul de "somn adanc" (deep sleep).
   Materialul ce l-am testat, a fost cel din articolul ESP8266 TEMPERATURE AND HUMIDITY LOGGER WITH DEEP SLEEP ENABLED
 
in care se foloseste schema
   Din testele mele si ce am mai aflat de pe internet, pinul de RST trebuie conectat la D0 printr-o rezistenta de 470Ω
   Am masurat ca in modul activ (conectare la reteaua wi-fi, masurare, conectare la server Thingspeak, trimitere date) consumul este intre 67-56mA, media ar fi de 70mA, iar in modul de somn este de 120μA.
   Diferenta este foarte mare, de aceea am masurat si timpul in care ESP-ul de trezeste, se conecteaza la reteaua wi-fi si, in cel mai fericit caz este de cca 7-8 secunde, iar in cel mai nefericit de cca. 14 secunde, raportul constatat este de 1:1, adica o data 7-8 secunde, o data 14 secunde.
   Cautand un mod de somn adanc si pentru ATtiny85, am gasit articolul Battery Life Calculator si am facut un calcul pentru cazul meu, in care am 10 minute timp de somn, o medie de 10,4 secunde de functionare la consum mare si 3 baterii AAA clasice, constatand ca ar tine cam 21 zile
dar daca ar functiona continuu, nici jumatate de zi:
De aceea, ori se foloseste un acumulator 18650 cu un sistem de protectie (BMS) ori un mic panou solar cu niste acumulatori mai slabi, sau chiar conectat la un acumulator 18650.
   Eu am fololosit un "Modul incarcare baterie 3.7V cu ridicator la 5V" primit ca bonus la o comanda de la www.sigmanortec.ro, care este si modul de incarcare si de protectie, avand codul T6845-C:
ce foloseste integratul dedicat HT4928S
dar se pot folosi si module separate, cum este prezentat in articolul DIY Power Bank Circuit
    Programul modificat si folosit de mine este ESP8266_DHT22_ThingSpeak_deepsleep.ino, iar pe canalul 72307 de test de pe Thingspeak valorile sunt asa:

24.06.2020
   Am conectat un mic panou solar la modulul T6845-C in acelasi timp cu consumatorul (placa WeMos D1 Mini) si acum nu mai trebuie sa deconectez consumatorul pentru a incarca acumulatorul.
   Vedeti 2 filmulete:
- cu prezentare in limba romana:
- cu prezentare in limba engleza:


26.06.2020
    Am schimbat sistemul de alimentare, deoarece modulul "combo" T6845-C mai decupla consumatorul (adica placa mea WerMos D1 Mini de trimite date pe canalul de Thingspeak).
    Am conectat 2 module: unul cu TP4056 la care este conectat minipanoul solar (permite tensiune de intrare de maxim 8V, tipic 5V, minim 4V) si ca iesire la acumulatorul 18650. La bornele acumulatorului este un modul ridicator la 5V cu iesire USB la care am conectat consumatorul.
  Schema de conectare este asa:
   Am facut 2 filmulete:
- cu descriere in romana

- cu descriere in engleza

10.07.2020
   A sosit un panou solar de capacitate mai mare (6V 4.5W 520mAh), care poate incarca acumulatorul si pentru intensitate luminoasa redusa (cer cu nori, dimineaza devreme, seara tarziu, etc):
    Panoul nou e mult mai mare decat cel initial

duminică, 24 mai 2020

Programare de la distanta (OTA) placa de dezvoltare cu ESP8266

   In urma unei discutii cu adicontakt (care a fost pe elforum), am inceput sa studiez despre cum sa implementez modul de programare de la distanta OTA la placile de dezvoltare ce au ESP8266.
   Am realizat ca am intalnit asa ceva la ceasul prezentat in articolul Ceas animat complex cu date de pe net
dar atunci nu a intrat in atentia mea modul de lucru.
   Revenind, am cautat pe net despre OTA si am alesa sa ma informez din articolul ESP8266 OTA Updates with Arduino IDE | Over the Air de pe site-ul lui Santos.
  Cautand un link pentru libraria ArduinoOTA am gasit articolul OTA Updates cu mai multe detalii, inclusiv despre configurarea cu parola si alte facilitati.
   In mare, trebuie sa aven instalat Pyton 2.7 (daca aveti configurate placile cu ESP32, sigur il aveti) apoi se incarca programul BasicOTA din libraria ArduinoOTA
si astfel apare un port virtual cu un nume ce include adresa IP locala
Apoi se incarca programul dorit, in cazul de fata, un program ce trimite datele de la un senzor DHT11 (sau mai bine DHT22) si o tensiune pe un canal Thingspeak, acesta fiind adicontakt_DHT_OTA.ino.
   Programul este derivat din unul clasic, la care am adaugat partea de conectare OTA.
   Incarcand noul sketch, pe canalul de Thingspeak se pot vedea
   In urma testelor cu un DHT22 (AM2302) am constatat ca apar uneori valori anormale, asa ca am pus un DTH11, dar si la acesta au aparut, mult mai rar, ce-i drept, erori, asa ca am cautat o librarie care ar putea sa fie ai stabila pentru ESP8266, asa ca am dat de cea numita DHT sensor library for ESPx
si am constatat ca si pentru DHT11 arata temperatura "cu virgula"
Acum programul modificat este adicontakt_DHTesp_OTA.ino.