Dupa ce am tot constatat ca la ceasul cu informatii meteo informatiile de pe ecran nu se mai actualizau dupa cateva zeci de ore (se bloca sau adormea efectiv microcontrolerul de pe placa Raspberry Pi Pico W), am adaugat functia de autodeblocare (watchdog).
Nu eram prea incantat de introducerea functiei WDT care nu a functionat multumitor cu limbajul Arduino si a trebuit sa testez un watchdog extern (vezi articolul), am zis totusi sa incerc versiunea software ce implica doar 3 linii
Partea frumoasa e ca initial am pus un timp de 2 secunde pana se restarteaza daca e ceva in neregula, dar pana sa se conecteze la retea se reseta in continuu si nu mai reuseam sa ma conectez la placa, asa ca a trebuit sa sterg continutul din memorie.
Dupa cum e indicat si in articolul mentionat la inceput, am inlocuit in programul main.py datele de conectare la reteaua locala Wi-Fi (linia 7), codul APIkey de pe serverul openweathermap.org (linia 8) si localitatea (linia 107).
Am obtinut in programul Thonny IDE urmatoarele informatii:
si pe ecran
dupa ce am am facut o mica modificare si am obtinut "^C" in loc de "-C".
Informatia catre serverul openweathermap.org este solicitata la 30 secunde, afisandsu-se doar starea generala a vremii, ora, temperatura si umiditatea.
Ce m-a deranjat cel mai mult a fost ca in loc de simbolul de grad este o linie sau ce am inlocuit eu, asa ca am cautat pe diverse forumuri si am gasit ca pot apela biblioteca afisajului sa imi puna un simbol asemanator gradului, asa ca am modificat programiorul, in special main.py, doar ca le-am pus pe toate intr-un loc: Weatherstatio_clock_RPiW_i2c_LCD1602_v1.
Dupa modificare, pe afisaj informatia este prezentata astfel:
Dupa ce am testat mai mult timp ceasul cu date meteo prezentat in articolul anterior, si dupa ce am mutat montajul de pe breadboard pe un cablaj de test (mai ok), am constatat ca daca nu primeste informatii de la serverul NTP, ora "incremeneste", dar informatiile meteo se modifica ca si cum ar functiona normal, asa ca am modificat programul si daca nu sunt primite informatii de la serverul NTP sau de la openweathermap (era deja), ceasul sa functioneze normal.
Montajul dupa transferul pe cablajul de test (cu gaurele) arata destul de bine
Dupa primele teste, am constatat ca testul de schimbare ora vara/iarna, programul reporneste ca si cum s-ar opri alimentarea. Dupa cateva masuratori, am constatat ca comutatorul nu face tranzitie brusca intre mijloc si camele si are un mic moment cand toate trei sunt conectate, asa ca am adaugat o rezistenta de 12kΩ intre +3,3V si capatul comutatorului si, in cel mai rau caz, pentru foarte scurt timp creste consumul pe ramura de 3,3V cu 300μA, dar asta nu deranjeaza deloc.
Schema actualizata arata asa:
Revenind, dupa ce am constatat ca ora ramane mai mult timp statica intre schimbari de informatii meteo daca nu mai e conexiune la reteaua wi-fi, am modificat programul, acesta devenind NTP_weatherstation_RP2040_ESP8266_i2c_1602_v3_6, cu el incarcat, am facut 2 filmulete:
Am facut si cateva modificari sa "palpaie" ledul multicolor, iar daca ceasul n se conecteaza la serverul NTP, apare un semnul exclamarii in dreapta, iar daca nu se conecteaza nici la serverul de vreme si in stanga lui, daca informatiile sunt actualizate apar "=="
dar nu era versiunea optima, asa ca am modificat un pic programul, care a devenit NTP_weatherstation_RP2040_ESP8266_i2c_1602_v3_6a si acum ledul multicolor (adresabil) palpaie secundele corect si se schimba si culoarea.
Cu ultima versiune de program, am facut intai 2 filmulete:
Schema este similara, doar ca a trebuit sa conectez comutatorul de ora de bara/iarna la GP8 ca GP22 este sub placa si greu de conectat... schema este desenata intr-o versiune mai veche de Eagle si apoi infrumusetata in MS Paint
Partea de conectare dintre placa RP2040-Zero si ESP8266-01 este mai usor de intuit din desenul urmator:
Dupa ce am facut prima versiune de ceas NTP cu informatii meteo pe afisaj 8x32 leduri adresabile, am zis ca il refac de la zero, doar ca am folosit schema din articolul anterior:
si primul program, ce are ore cu secunde "palpaitoare" si data deplasabila, ora vara/iarna, intensitate diferita pe timp de zi si timp de noapte, este NTPclock_8x32_v2.ino si modul de functionare se vede in filmuleletele ce urmeaza:
Am renuntat la calculul orei de rasarit si apus pentru soare cu o biblioteca dedicata, acum folosesc informatiile pe care le obtin oricum de pe openweathermap.org, programul este acum NTPclock_8x32_v2_2.ino si filmuletele explicative sunt
Deoarece informatiile meteo sunt prea dese, am modificat sa am timp mai mare pentru ceasul propriu-zis, iar noaptea tarziu sa am doar ceas, programul devenind NTPclock_8x32_v2_3.ino. Filmuleltele, care prezinta modul de functionare, sunt:
Am zis sa adaug data, ca informatie suplimentara, dar sa am si niste tranzitii la ora, sa vina, sa stea timpul definit, sa plece, sa vina informatiile suplimentare, sa treaca din dreapta in stanga si apoi sa revina ceasul. In miez de noapte, pe afisaj e doar ora, dupa cum se vede in filmuletele:
Dupa ce a sosit un nou afisaj de 8x32 leduri adresabile, am reluat proiectul ceasului NTP cu informatii meteo ce deriva din cel prezentat in articolul WS2812-WeatherStation
Apoi am adaugat schimbarea automata a culorilor, la schimbarea informatiei, programul fiind acum weatherstation_707pheonix_v1_4.ino iar ce a iesit se vede in:
Urmatorul pas a fost ca ceasul sa fie indicat mai mult timp, programul fiind acum weatherstation_707pheonix_v1_5.ino iar prezentarea infirmatiilor ca in cele 2 filmulete: