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, 8 martie 2021

Numarator impulsuri cu prag reglabil

     Am primit o solicitare pentru realizarea unui numarator de impulsuri (inductiv, in cazul de fata, dar functioneaza cu orice fel de senzor: Hall, optic cu fototranzistor.fotodioda in domeniu vizibil sau infrarosu, etc), care la atingerea unui prag sa actioneze un releu.

   Schema, la care m-am gandit, e una simpla, unde numararea impulsurilor se face pe pinul D2 (intreruperea 0):

    Pentru teste, ca senzor am folosit un debitmetru ce are un senzor Hall. Ca la majoritatea senzorilor, trebuie conectata o rezistenta intre iesire si alimentare (rezistenta de pull-up). Datele sunt indicate pe un afisaj alfanumeric cu 16 coloane si 2 randuri (LCD1602) conectat prin interfata i2c, pentru a reduce numarul de fie de conectare. In afara placii Arduino Nano (se poate folosi orice alta placa Arduino, gen Uno, Leonardo, Mega, Due, ProMini, etc) mai sunt 2 butoane fara retinere, unul pentru crestere si celalalt pentru reducere prag actionare releu.
   Prpogramul scris de mine este counter_threshold_1.ino. Pe ecran apare numarul de impulsuri in stanga si cel reglat ca prag in dreapta, la depasire apare o steluta, numaratoarea resetandu-se.
   Modul de functionare se vede in cele 2 filmulete realizate de mine:
   Madalin. cel care avea nevoie de acest sistem, mi-a trimis cateva poze si un filmulet.
   Filmuletul este incarcat pe canalul meu de youtube, avand numele Numarator impulsuri cu prag reglabil (2)

miercuri, 3 martie 2021

Sistem de monitorizare temperatura cazan si comanda pentru 2 pompe de recirculare

    La solicitarea lui Iuliu, un urmaritor al canalului de youtube, am scris si  conceput o schema si un program pentru un sistem de masurare temperatura pentru apa din cazan si din cele de circuite: 

- puffer (incalzire)

si

- ACM (apa calda menajera) 

   In functie de temperaturile din cele 2 circuite se comanda fie pompa de recirculare pentru incalzire, fie cea pentru apa calda menajera. Daca temperatura din puffer (pufer) este mult sub temperatura din cazan, se porneste pompa de recirculare, pana temperatura din puffer ajunge putin sub temperatura din cazan. Daca pompa de recirculare pentru incalzire este oprita si temperatura din boilerul pentru apa calda menajera este mult sub temperatura din cazan, pompa de recirculare aferenta porneste pana exista o diferenta mica intre cele 2 temperaturi.

   De asemenea a fost prevazut un comutator pentru a selecta modul de vara/iarna, pentru a nu se mai comanda pompa pentru circuitul de incalzire. 

    Dupa cum am prezentat mai sus, in regim de iarna, pompa de recirculare pentru incalzire are prioritate, cele 2 pompe nu functioneaza simultan.

    Schema montajului este:

si contine o placa de dezvoltare Arduino Uno (Nano, etc), 3 senzori de temperatura DS18B20 (cu rezistenta de ridicare nivel "pull-up", un afisaj alfanumeric LCD1602 (cu semireglabil de contrast si rezistenta de limitare curent prin ledul de iluminare fundal) si un modul cu 2 relee.
  In regim de iarna, pe ecran se observa:
- pompa de recirculare incalzire pornita

- pompa de recirculare apa calda menajera pornita
iar in regim de vara, cu pompa de recirculare pentru apa calda menajera pornita
Programul scris de mine si testat de Iuliu este heater_puffer_boiler.ino.

05.03.2021
   Am primit poze de la montajul realizat si testat de Iuliu
care este folosit pentru recuperarea caldurii la stingerea focului in centrala cu soba racheta, de aceea a mai prevazut un intrepator pentru pornit/oprit sistem si un buton pentru intreruperea alimentarii modului cu relee, cand doreste doar monitorizarea temperaturilor.
   Iuliu are un filmulet numit Centrală tip sobă rachetă in care se vede modul cum a fost construita centrala:

Vitezometru GPS (2)

    Am facut mici modificari la vitezometrul GPS prezentat anterior pentru a arata ora locala, mai precis se poate selecta  una din cele 38 de ore locale, detalii puteti gasii in articolul Ceas GPS cu reglaj ora locala (3).

   Programul adaptat este GPS_speedometer2.ino si se foloseste schema de la ceasul GPS cu reglaj:

   O poza cu indicatiile in mers (in care apare ora locala UTC+2, dar ea dispare dupa un timp de la apasarea butonului).
si una cu viteza mica, cand apare si unitatea de masura a vitezei (km/h).

marți, 2 martie 2021

Sistem deblocare rapida usa acces bloc (interfon Electra)

ultima actualizare: 21.3.2021

   Majoritatea blocurilor de apartamente au acces cu cartela RFID (sistemele mai vechi cu una optica) sau prin formarea numarului apartamentului, conditia fiind, de data asta sa se raspunda si apoi sa se apese pe tasta 7, steluta (*)  sau  butonul de deshidere.

    Pentru cazuri cand se doreste deschiderea rapida, putem simula ridicarea receptorului si apasarea tastei de  deschidere cu ajutorul a 2 relee comandate de un montaj electronic. In cazul de fata, am ales o placa de dezvoltare Arduino (se poate folosi oricare, eu la teste am folosit un Arduino Nano, dar putem implementa si cu un mic microcontroler gen ATtiny45/85 programat ca un Arduino, vezi articolul Programarea unui microcontroler ATtiny85 cu sketch Arduino).

   Schema de test contine o placa Arduino Nano, un buton fara retinere, 2 leduri si 2 rezistente de 220Ω fiecare),

in schema finala se inlocuiesc ledurile si rezistentele de limitare cu cate un releu miniatura tip 1A05, fiecare cu cate o dioda de protectie 1N4007.

   Programul testat este interfon1b.ino si la apasarea butonului, 
va comanda un releu ce va simula ridicarea receptorului (led din stanga)
apoi la cca. 1 secunda va comanda un releu miniatura ce va simula aparea tastei de deschidere (led din dreapta)
   Am facut un filmulet numit sistem deblocare rapida usa acces bloc (interfon Electra)
si unul numit system for answer and open the door at Electra interphone

sambata, 21.3.2021
   Daca ordinea de comanda trebuie schimbata in apasat tasta de raspuns, dupa o perioada scurta eliberat, apoi apasata tasta de deschidere, programul este interfon_1c.ino.
   Marea modificare este din
in

duminca, 22.3.2021
   Am refacut montajul pentru a relua testele. 
In repaus, nici un led nu este aprins:
Daca se apasa  butonul (cand se aude soneria interfonului) se aprinde ledul galben corespunzator releului de raspuns
apoi acesta se stinge si se aprinde ledul rosu, corespunzator releului de descuiere
   Am  refacut filmuletele,