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:

2 comentarii:

  1. In locul senzorului de temperatură cred că s-ar putea pune un debitmetru gen YF-S201 care să monitorizeze consumul de apă și să îl transmită pe Thingspeak. Vă urmăresc de mult timp dar nu am găsit nici un articol in care să folosiți acest senzor. Dacă vă găsiți timp poate abordați și acest sketch - cu apometru ca și senzor, și chiar cu o electrovana care să comande închiderea-deschiderea apei de pe telefon. Mulțumim

    RăspundețiȘtergere
    Răspunsuri
    1. m-am jucat cu unul mai bun, dar pe acelasi principiu, vezi filmuletul.de la https://youtu.be/CnUmIUnbf5c ce are in descriere un articol cu destule informatii

      Ștergere