Am revenit la ceasul google cu data si senzori, de data asta am inlocuit al doilea senzor DS18B20 cu un senzor AM2303 (care este un DHT22 cand are rezistenta de 4k7 incorporata pe placuta de cablaj).
Schema devine
si am considerat ca senzorul de temperatura si umiditate relativa aer este senzorul exterior, asa ca programul modificat, care contine 3 fisiere, este BIG_Clock_ESP8266_DeskClock1L
iar in programul Arduino IDE 1.8.19 (folosit de mine) arata asa
In prima faza, nu am avut montat sistemul de determinare al intensitatii luminoase (divizorul rezistiv realizat din fotorezistenta si rezistenta de 10kΩ) si am realizat 2 filmulete
Ulterior, am primit o solicitare sa adaug si numele zilei din saptamana si numele lunii, asa ca am adaugat asta, dar bilingv (o data in romana, o data in engleza),
Schema de conectare la placa RP2040-Zero este simpla si deriva din cea a cu ESP8266 (Wemos D1 Mini):
- modulul de ceas RTC se alimenteaza cu +5V si GND, conectanduse SDA la GP4, iar SCL la GP5,
- modulul cu senzor DS18B20 se alimenteaza la +5V si GND, iar pinul de date la GP14,
- afisajul cu 8x32 leduri adresabile e alimenteaza la +5V si GND, iar pinul de date la GP15.
Dupa cum cred ca stiti, modulul de temperatura are senzorul DS18B20 si rezistenta de pull-up de 4,7kΩ dintre pinul de date si +5V, uneori si un led inseriat cu o rezistenta.
Ceasul este in teste de circa 3 saptamani si nu a apaut nici-un blocaj sau eroare, comparativ cu proiectul de ceas NTP cu placa Raspberry Pi Pico W, pe care o sa-l prezint in curand.
Fata de modul de transmitere a unei temperaturi citite de un senzor DS18B20 de catre o placa de dezvoltare Arduino Nano (in cazul de fata este cu microcontroler ATmega168) la un canal ThingSpeak prin comenzi AT date unui modul Wi-Fi de tip ESP8266-05, cum am prezentat in articolul anterior din februarie 2016, acum ma reconectez la reteaua locala Wi-Fi a apartamentului la 20 de iteratii. Tinand cont ca o crestere a numarului ce contorizeaza se face la 5 minute, la 100 minute se va face reconectare, in caz ca pierde legatura, cum era cazul testelor anterioare, cand reconectarea fost facuta prin resetare sau realimentare modul...
18.06.2019
In 24 ore nu s-a pierdut nici o conectare, deci suntem pe drumul cel bun
19.06.2019
In sfarsit, am gasit si o "buba" si faptul ca s-a reconectat dupa o ora de inactivitate
18.7.2019
Pentru a nu apare si probleme de conectare datorita lui ESP8266, am pus sa am si o resetare periodica prin comanda AT+RST, dupa cum se vede in programul ThingSpeak_arduino_esp8266_ds18b20_v3.ino !
Desi pe parcursul anilor am prezentat diverse modele de termostate, pe diferse afisaje, dupa o discutie cu Tom, am zis sa il ajut sa-si faca un termostat simplu pentru pompa de recirculare a centralei de incalzire pe lemne, asa ca am facut o schema simpla:
unde se foloseste o placa Arduino Uno, dar merge fara modificari si Nano, Micro Pro, Pro Mini, etc. Ca senzor de temperatura e folosit un DS18B20, iar ca parte de comanda cu releu de 5V comandat de un tranzistor (bineinteles ca se poate pune si un releu de 12V, cu alimentarea dintr-o sursa separata sau modul de 5V, dar comenzile sunt inversate, ori se schimba contactele ori se schimba in program (sketch) HIGH cu LOW si LOW cu HIGH... In schema mai apar 2 butoane, care permit cresterea, respectiv scaderea valorii de prag cu cate un grad Celsius (oricum avem si un histerezis de 1 grad Celsius). Valorile sunt memorate in EEPROM-ul microntrolerului de pe placa Arduino.
Programul (sketch-ul) folosit este DS18B20_thermostat.ino si permite alimentarea pompei la temperaturi mai mari decat cea dorita
respectiv oprirea la scaderea temperaturii
Dupa cum se observa, Tom si-a modificat modul de afisare fata de ce am eu in sketch, ceea ce e indicat sa faceti si voi, ca de aia e Arduino, sa poti modifica usor prin el... urmariti filmuletul facut de el, Termostat cu Arduino
PS: Daca aveti nevoie de montaje si automatizari, apelati cu incredere la Tom...
Pentru versiunea cu reglaj manual, am adaugat 3 butoane fara retinere, schema devenind:
In filmuletul ceas si termometru cu Arduino Due pe afisaj de 3.95" (10cm) - 3 se observa cum se prezinta datele pe afisaj si cum se face reglajul la ceas (ora si minute) si data (an, luna, zi inluna, zi in saptamana), care sunt memorate apoi in memoria integratului de ceas DS3231.
Deoarece alimentarea se face cu tensiune de 3,3V trebuie si celelalte intrari sa le am la nivel logic de 3,3V, asa ca am folosit un modul de conversie a nivelului logic
O alta varianta de interfata este cea prezentata in documentatia modului GPRS M590 si prezentata de mine in articolul Modul GPRS cu M590 (3)
O schema de conectare este:
doar ca eu am folosit un Arduino Nano si un modul extern de alimentare, pastrand, in mare, modul de conectare:
ulterior, am folosit un cablaj de test cu conectori:
Am reluat testele cu statia meteo si ceas care prezinta datele pe un afisaj cu rezolutie de 32x8 leduri (compus din 4 afisaje 8x8 leduri rosii), contorlate de integrate MAX7219, de data asta am afisajele montate intr-o carcasa, iar ca placa de dezvoltare, am folosit un Arduino Mega, ca era disponibil. Pentru temperatura se foloseste un senzor DHT11, iar pentru temperatura un DS18B20.