sâmbătă, 15 februarie 2020

Ceas RTC pe 2 afisaje de 8x8 leduri (16x8)

   In articolul anterior am pregatit programul pentru a putea impleemnta usor un modul RTC, asa ca acum am continuat "deszvoltarea" ceasului pe 2 module de 8x8 leduri.
   
    Fata de ce am prezentat anterior, am adaugat modulul RTC cu DS3231 (dar poate fi folosit fara modificari si DS1307) doar se conecteaza pe i2c si alimentare, dupa cum apare si in sketch:
    Programul adaptat, se numeste RTCclock.ino si reglajul orei se face astfel, se incarca vesiunea cu linia de reglaj activa (fara // in fata)
apoi se incatca linia comentata (cu // in fata).
    Am realizat 2 filmulete cu acest tip de ceas:
    Apoi, am adaugat si 2 butoane fara retinere, pentru reglaj ora si minute, unul este de la D2 la masa, iar al doilea de la D3 la masa (GND).
   Modul de reglaj e simplu, dupa cum se vede din filmuletele ce folosesc programul RTC_clock_adj.ino

16.02.2020
    Am primit de Vlad Gheorghe versiunea lui pentru afisajele "verticale"
in care a regenerat toate numerele necesare. Programul este two-matrix-reg-rtc.ino, iar pentru o versiune animata se va folosi programul 2matrix-002.ino.

Pseudoceas pe 2 matrici de 8x8 leduri (16x8)

    Pana acum am realizat ceasuri cu 4 sau 6 module din matrici de 8x8 leduri cu driver-e MAX7219, dar am zis sa fac si cu 2 matrici, cum am vazut la niste kit-uri din China.
   Am cautat pe internet si nu am gasit pentru modelul acela de se fixeaza in continuare, unul in celalalt, ci doar pentru cele cu pini paraleli, dupa cum se vede in articolele:
Arduino Cheap Minimal Parts Digital Clock
Digital and Binary Clock With Two LED Matrix and RTC
  Dupa ce am incarcat programul din primul articol, ce folosesti libraria LedControl, am observat ca textul este rotit la 90 grade, dupa cum era de asteptat, asa ca am incercat sa fac mici schimbari, dar nu am reusit decat regenerand cifrele din nou, folosindu-ma de articolul Online led matrix font generator with binary and hex codes for Arduino, doar ca a trebuit sa fac fiecare cifra sau grup de cifre de la 1 la 12 pentru ore, cu secunde si fara, apoi cele 60 de numere (00-59) pentru minute. Cifrele le-am facut maxim posibile cu inaltime de 8 si latime de 3 pentru ca mai trebuie spatiu (deci 8x4 fiecare), trebuind generate in oglinda, pentru a nu ma chinui in soft, cu aceasta ocazie mi-am testat si abilitatile de "a vedea in oglinda".
   Vedeti un exemplu in care este numarul 13 cu 2 puncte:
si minutele 20 si 47
   Programul folosit este pseudoclock.ino si cu el incarcatat facut 2 filmulete:
pseudoceas pe 2 matrici de 8x8 leduri
pseudoclock on two 8x8 led matrix
   Schema de conectare este simpla, dupa cum se poate observa si din mentiunile din program:
adica ca in articolul How to use a MAX7219 LED dot matrix with an Arduino
   Urmeaza a face un ceas real, cu modul RTC cu DS3231 (sau cu mai imprecisul DS1307), o alta varianta ar fi cu o placa cu ESP8266 ce se conecteazala un server NTP.

vineri, 7 februarie 2020

Radio FM (RDS) cu TEF6686

 
   Am aflat de tunerul cu TEF6686 de la Iulian, un radioamator din Craiova. El m-a rugat sa ii modific niste programe Arduino pentru a avea anumite informatii RDS pe PC si ulterior pe un afisaj LCD, pentru a realiza un radio independent. Versiunea comandata de pe PC este folosita mult de radioamatori pasionati de receptii DX, adica "prinderea" unui post indepartat.
   Initial, voiam sa iau radioul lui si sa rescriu/modific programele care le avea, dar am preferat sa comand si eu un tuner pentru ca stau foarte prost cu timpul liber si l-as fi incurcat. Pana sa vina tunerul si apoi sa ma apuc eu de lucru, am aflat ca Iulian si prietenul lui, Florin Matei, au rezolvat cu partea de program Arduino pentru comanda de pe PC cu programul XDR-GTK
   Dupa sosirea tunerului, am lipit fire cu terminale tata, deoarece pasul intre pini e de 2mm, nu 2,54mm cat e pe breadboard sau cablajele de test
si l-am conectat la o placa Arduino Uno sa ii aflu adresa pe i2c cu programul i2c scanner
   M-am "concentrat" pe adaptarea programului de la https://github.com/makserge/tef6686_radio pentru a afisa informatiile pe un afisaj LCD. La indemana a fost un afisaj serial 2004 (cu caractere uriase), ce tocmai il testasem dupa cum se vede in articolele:
Ceas RTC cu afisaj serial
Ceas NTP pe afisaj serial
   Bun, deoarece tunerul se conecteaza pe i2c, iar afisajul pe un pin, schema a fost simpla:
si cu aceasta am testat 2 sketch-uri, radio_serialLCD2 ce are informatii radiotext lung si radio_serialLCD3a ce are si informatii PTY si PI, dar radiotextul prelucrat este mult mai scurt decat cel original.
    Am facut filmuletul radio cu TEF6686 cu afisaj serial
    Deoarece interfata seriala seriala nu este prea populara, am preferat sa trec la interfata i2c, asa ca am modificat schema, adaugand (pe parcurs) si butoane pentru a putea da si comenzi locale, nu numai din ecranul de monitorizare seriala sau PUTTY.
    Am identificat si adresa afisajului cu programul i2 scanner:
    Ca si in cazul afisajului serial, am modificat 2 programe, unul cu radiotext lung si PTY, dar fara PI (TEF6686_1602i2c_v2x) si unul cu informatii PI si PTY (TEF6686_1602i2c_v3x), la final existand 6 butoane fizice (volum +/-, cautare autoamta +/-, crestere si scadere frecventa cu pas de 0,1MHz).
    Pe parcursul testelor am realizat mai multe filmulete:
   Pentru moment, cam atat, dar incerc sa combin cele 2 programe sa am cat mai multe informatii.

11.02.2020
    Schema recomandata de conectare a tunerului cu TEF6686, model TDQ-230V-186, este:

  

sâmbătă, 1 februarie 2020

Circuit de comanda cu temporizare la impuls

    Un releu de timp cu actionare la impuls, adica la apasarea unui buton, se poate face bineinteles cu conmponente discrete, cu "batranul" 555, dar si cu microcontrolere, asa ca am raspuns la solicitarea lui Tudor Gheorghe pentru un asemenea montaj.
   Schema de teste foste simpla:
in care se foloseste pe langa o placa Arduino Uno (sau oricare alta, gen Nano, Pro Mini, Leonardo, Mega, etc), un potentiometru pentru reglarea timpului de actionare, un buton. In plus se poate folosi un modul cu releu pentru a comanda un bec de exemplu sau motor si astfel avem izolare galvanica.
    Modulul de releu la care ma refer este in genul acesta

care are o schema de genul
 sau
    Revenind la partea practica, programelul scris pentru a actiona led-ul intern de pe placa, cel de la pinul D13 si un modul de relee de genul celui prezentat mai sus este monostable1.ino.
    Daca se foloseste modulul de mai sus, in program (sketch) configurarea trebuie sa fie asa
    Daca nu se foloseste modulul de genul asta si se comanda dar ledul intern sau un cicuit clasic de genul
sau un modul de releu SSR (Solid State Relay) de genul
 
configuratia din sketch este
    In program nu am folosit clasica comanda delay, ci m-am folosit de millis(), pornind de la exemplul din programul Arduino IDE numit
   Timpul cat releu este actionat imediat ce este apasat butonul, indiferent cat este el apasat, este reglabil, in cazul de fata intre 1 si 10 secunde, adica cu potentiometrul rotit la minim timpul de actionare este 1 secunda, iar la maxim 10s.
  Am primit niste poze din timpul testelor realizate de Tudor Gheorghe
si un film, ce l-am postat pe youtube pentru a putea fi vazut si de voi
PS: Cand mai primesc poze si filmulet(e), o sa le postez.
    Am primit alte poze;