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.
Acolo se foloseste o placa Arduino cu o placa de retea tip shield, care are si cititor de carduri SD (versiunea oficiala cu W5100). Pe card se va incarca fisierul index.htm care include partea de indicatoare, iar placa Arduino trimite din cand in cand, doar daca e solicitata, date care sunt puse in pagina..
Eu am adaptat sketch-ul si fisierul sa primesc date despre temperatura si umiditatea relativa a aerului citite de un senzor DHT22 (AM12302):
Fata de termostatele clasice, de data asta folosesc o placa Arduino Mega si o placa de retea cu W5100 tip "shield" pentru a avea un "webthermostat"... Am incercat variante cu grafica frumoasa, dar am revenit la afisare clasica cu pagina html, in care am comandat un LED (care poate comanda o placa cu releu, care la randul lui comanda o centrala sau un calorifer, dar se poate adapta si la un sistem de racire). Cazurile sunt: - led stins manual
- led aprins manual
- led aprind automat (cand temperatura e mai scazuta decat cea setata)
- led stins automat (cand temperatura e mare decat cea setata)
Pentru a avea mica animatie, cand se trece cu mouse-le peste "butoane", am schimnat culoare textului.
Schema de conectare este simpla:
In teste, nu am pus rezistenta de 4k7, dar pentru functonare indelungata e bine sa fie montata.
Dupa ce in partea intai am reusit sa "aprind" un panou dintr-un ecran stradal de tip P20F04D-12L cu interfata HUB40A cu ajutorul unei placi Arduino (Nano in cazul meu), am zis sa pun inca unul sa pot afisa informatii, gen temperatura si umiditate...
Pentru a putea afisa un mesaj, intai am desenat un text cu rezolutia ecranului compus din cele 2 panouri (32x8) si am pus manual in siruri, in stilul de afisare:
Pasul urmator a fost sa realizez o ministatie meteo care indica temperatura si umiditatea. Aceste date sunt citite de un senzor AM2302 (DHT22), sunt prelucrate de Arduino si trimise afisajelor.
Acest afisaj este doar o parte a unui afisaj stradal.. el are dimensiunea de 32x16cm si o rezolutie de 16x8 "pixeli" 2R1G1B, adica fiecare e realizat din 2 leduri rosii, unul verde si unul albastru.
El are un conector de alimentare pentru 5V (pentru VCC si cele 2 VDD-uri), iar interfata de comanda este cu conector HUB40A.
In mod normal, acest panou intra in componenta unui ecran stradal, care poate avea 8 panouri pe verticala (comandate de placa de mai jos):
iar pe orizontala, se monteaza in cascada panouri:
Curios, dar despre protocolul de comunicare HUB40A nu am gasit mare lucru, ci doar doar o poza cu explicitarea pinilor:
asa ca m-am apucat de experimente sa vad cum il pot comanda si, mai ales, controla, dupa ce am gasit ca pe cablaj exista 2 integrate 74HC245D si 32 de integrate de tip MBI5026GF, fiecare comanda 16 canale, in total 512 leduri = 4 culori (2 rosii, un verde si un albastru) x 16 coloane x 8 randuri.
Ecranul este impartit in 2 zone mari, una jos si una sus, iar fiecare din acestea e impartia in 4 "patrate" de 4x4 pixeli, diferit de modul nostru de a "vedea":
In mare, informatia se introduce serial, ca la orice registru de deplasare, doar ca sunt 8 date (cele 2 zone si cele 4 "culori": 2 rosii, un verde si un albastru).
Pentru a comanda afisajul am ales o placa tip Arduino Nano cu adaptor, care e suficient, cel putin, pentru primele experimente. Schema (in schema mea apare Arduino Uno, dar functioneaza la fel):
De asemenea afisajul (panoul) a fost alimentat dintr-o sursa de tensiune de 5V/40A (suficienta sa comande cel putin 4 panouri, dupa numarul de mufe).
Pentru inceput, am modificat un sketch de la www.arduino.cc/en/Reference/ShiftOut si am obtinut textul (care e tratat ca o imagine), comandand doar zona de sus: