Pe piata se gaseste un kit de asamblat de comutator acustic cu componente discrete, in stilul celor IPRS de pe timpurile de mult apuse, asa ca m-a apucat nostalgia si ...
am achizitionat unul de pe banggood.com, in punga gasindu-se toate pisele necesare, inclusiv schema si pozitionarea pieselor pe cablaj:
Am facut un filmulet cu comutatorul acustic, numit simplu comutator acustic in care se vede modul de functionare:
Led-ul se poate inlocui cu un optocuplor clasic pentru a comanda un releu de 5..12V sau cu unul cu trecere prin zero (MOC3041) pentru a comanda un bec alimentat de retea, dar eu l-am lasat la stadiu de kit asamblat...
Fata de afisajele de 8x8 leduri controlate de MAX7219 care se pot configura dupa dorinta ca pozitionare, dupa cum am prezentat in articolul Afisaj matriceal din 8x8 leduri controlat de MAX7219, pe piata se gaseste un modul cu 4 afisaje:
Daca se incarca un sketch prezentat in articolul mentionat anterior, se observa ca textul este rotit la 90 grade pe fiecare afisaj. La inceputul acelui articol am prezentat libraria LedControl dupa informatiile gasite intr-un articol de pe site-ul tronixstuff.com, doar ca pentru modelul meu, de atunci, nu era ok, fiind rotit.. asa ca e numai bun pentru modulul de acum.
Modul de legare este identic
Dupa ce m-am jucat suficient cu afisajul de 3.95" (10cm) pentru Raspberry Pi, comandandu-l cu o placa Arduino Due, am zis sa urmez (iar) sfaturile lui Vlad si sa am un ceas cu caractere frumoase, nu patratoase ca pana acum.
Am preluat sketch-ul lui realizat pentru o placa Arduino Mega, pentru care e enevoie ori de afisaj tip shield (cu integrate pentur conversie semnal logic 5V la 3,3V cu cat lucreaza afisajul) sau unul ca al meu dar o interfata cu CD4050.
S-o luam pe rand... afisajul meu se poate conecta direct la o placa Arduino Due pentru ca lucreaza tot cu nivele logice de 3,3V ca si afisajul, schema fiind:
Pentru ca placa Arduino Due nu are memorie EEPROM, am adaptat ca la termostatul dual cu Arduino Due si afisaj de 3,95" (10cm), unde am utilizat memoria EEPROM de pe modulul de ceas cu DS3231.
Primul sketch, care citeste tenperatura de la integratul de ceas (DS3231), schema care se adauga la cea de conectare la placa Arduino Due este:
Pe ecran, in functie de evolutia sketch-ului 4inch_clock_1.ino, pe ecran, icoana de indicare a alarmei este un ceas mic
apoi un ceas mai mare
respectiv un clopotel
care au culori diferite, in functie de stare:
- alb, pentru asteptare
- albastru, pentru alarma dezactivata
- rosu, alarma activa (iesirea BUZZER in 1 logic)
Am facut si niste filmulete din care se poate vedea modul de afisare:
- ceas si termometru cu Arduino Due pe afisaj de 3.95" (10cm) - 4
Am integrat, ca la ceasul anterior, citirea temperaturii cu un senzor dedicat, DS18B20, schema de conectare patrand-o pentru a putea incarca diferite sketch-uri la teste, fara a modifica schema:
In sketch-ul 4inch_clock_1d.ino apare si un simbol de anulare a alarmei, schimband intre timp si culorile:
Primind in teste un sasiu cu 4 motoare, o placa Arduino Uno, 6 senzori optici de distanta, un suport de 4 baterii AA si un shield (placa) pentru comanda motoare cu L293, am zis intai sa ma familiarizez cu ultima componenta mentionata, placa de comanda...
In materialul de la adafruit-motor-shield.pdf gasim informatii detaliate despre pinii folositi, de retinut ca dintre cei digitali liberi sunt doar D2 si D13, cei analogici sunt toti liberi (A0..A5)... iar in documentul Understanding the Adafruit Motor Shield Library sunt explicatii si despre registrul de deplasare 74HC595 care este pe placa.
Schema acestei placi de comanda este:
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.
In articolul precedent, am "pornit" un afisaj de 3,95" (10cm) pentru Raspberry Pi cu ajutorul unei placi de dezvoltare Arduino Due care permite conectarea directa deoarece lucreaza cu nivel logic de 3,3V, acum va prezint un termostat dual (doua zone), despre care am precizat si anterior.
Schema de conectare este acceasi:
Initial am conceput sketch-ul (programul) pentru se folosi o schema existenta cu 2 cronotermostate montate deja la o centrala, contactul pentru circuitul de apa calda al centralei, la care am adaugat un modul de ceas cu DS3231 ;i 3 senzori digitali de temperatura DS18B20 (unul afara pentru indicare temperatura exteriaora, unul pentru a citi temepratura dintr-o zona - parter si unul pentru a citi temepratura din cealalta zona - etaj), conform solicitarii lui Romica:
Pe ecran apare ora, temperaturile din cele 3 zone, o icoana cu un robinet cand se foloseste circuitul de apa menajera, 2 icoane (triunghi-uri) pentru pornirea pompelor de circulatie aferente circuitului respectiv, care indica si faptul ca centrala functioneaza.
Ulterior, am discutat cu Romica sa facem un termostat adevarat, in sensul de comanda placa Arduino centrala, asa ca am modificat schema, pentru a avea si 3 butoane (MENIU, + si -) din care sa pot regla ceasul, data, limba (romana sau engleza), temperatura dorita din prina zona (parter), temperatura dorita din zona 2 (etaj) si histerezistul (diferenta de temperatura admisa).
Valorile temperaturilor, cea a histerezisului si a limbii folosite sunt stocate in memoria EEPROM care se gaseste pe modulul de ceas cu DS3231, pentru ca microcontorlerul de pe Arduino Due nu are memorie EEPROM. Sketch-ul care face asta este thermostat_07.ino, iar modul de prezentare al datelor, modul de reglaj se vede din filmulete:
Dupa teste pe afisaje de 1,8-2,4" (4,5-6,1cm) am trecut la un afisaj cu diagonala de 3,95" (10cm), dupa ce am aflat de la Vlad Gheorghe ca e relativ usor de folosit cel pentru Paspberry Pi. El a folosit un Arduino Nano cu CD4050 ca interfata logica, deoarece Arduino lucreaza cu logica de 5V, iar afisajul cu una de 3,3V fiind pentru Raspberry Pi, daca se foloseste versiunea pentru Arduino, atunci nu mai e cazul sa se foloseasca acele integrate pentru interfatare.
Modelul meu pentru Raspberry Pi arata asa:
iar cel pentru Arduino este asa:
Dupa ce am primit destule informatii de la Vlad am conectat si eu un afisajul de Raspberry Pi la un Arduino Due, din 2 motive: unu, ca e mult mai rapid decat Uno, Nano sau Mega si doi ca lucreaga cu logica de 3,3V ca si afisajul.
Schema de conectare este:
Dupa ce m-am mai documentat pe net, folsindu-ma de discutiile de pe forumul Arduino, dar folosindu-ma de cele ale lui Vlad, am folosit libraria MCUFRIEND_kbv din care nu merge decat un sketch-ul graphictest_kbv.ino:
Testele, le-am facut initial cu versiunea Arduino 1.6.0 si acum si cu 1.80 si sunt ok...
Fiind sarbatorile de iarna, inainte de Craciun efectuand rimele teste, am facut un sketch cu urari in mai multe limbi, alternand afisarea "portrait" cu "landscape":
Ulterior am realizat interfata unui termostat cu 3 senzori DS18B20 cu 2 zone supravegheate (etaj si parter), temperatura exterioara si informatii daca a pornit circuitul de apa calda sau pompele de recirculare de la etaj si parter, la solicitarea lui Romica
Am facut mai multe filmulete, din care va prezint doua: