Se afișează postările cu eticheta RADIO. Afișați toate postările
Se afișează postările cu eticheta RADIO. Afișați toate postările

duminică, 4 decembrie 2022

Un alt radio cu TEA5767

 Inspirat de un clip video ce l-am vazut zilele astea, am "portat" codul omului pe un arduino nano și un TFT de 1,7" cu ST7735 ca cel din poza de mai jos.


Radioul de inspirație arată așa:


Iar eu l-am aranjat ca mai jos:




Codul modificat este pe github, de unde se poate deduce și schema de conexiuni.

După tutorialul de aici i-am aplicat și un font mai elegant:


Codul tot pe github.


joi, 25 martie 2021

Radio cu RDA5807 cu LCD grafic

 La sugestia unei cunoștințe am testat un radio cu RDA5807 cu codul unui rus , cu scopul de a-l adapta pentru display mai mare.

Acesta a realizat proiectul pe un OLED ce mie nu-mi place datorită duratei mici de viata. Acesta a prevăzut în cod stingerea ecranului, dar am preferat să folosesc un LCD căruia i-am anulat stingerea denumit amber-gold cu chip ST7565 prezentat la un proiect anterior.

Schema de conexiuni originală cu OLED este:


După ce am modificat codul (care se află pe github) cu afișare în engleza mi-a ieșit așa: Eu am folosit tot un arduino mini dar alimentat la 3,3V pentru a nu mai folosi un adaptor de nivel pentru RDA5807. Rusul nu folosește însa cu ani in urmî s-a dovedit că dacă pinii I2C ai lui RDA5807 sunt puși la nivele de 5V acesta se defectează dupa un timp.


Deoarece s-a folosit lib-ul U8glib modificările pentru alt display au fost simple. Conexiunile sunt conform definiției ce o înlocuiește pe cea a OLED-ului:

U8GLIB_NHD_C12864 u8g(13, 11, 10, 9, 8);  // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8

și am testat cu două LCD-uri:

Cu amber-gold

și cu unul similar dar ceva mai mare, prezentat și acesta într-un articol anterior:

Butoanele reacționează foarte bine, iar meniul acoperă toate funcționalitățile lui RDA5807 mai puțin RDS care deocamdată nu ne interesează. 


sâmbătă, 9 noiembrie 2019

Radio cu SI4703 pe TFT 1,44" ST7735

Zilele acestea a sosit un modul radio FM cu SI4703  ce este cumva similar la specificații cu RDA5807 ( este pregatit pentru RDS si RBDS) numai că se conectează diferit cu Arduino.  La fel ca RDA-ul are și acesta posibilitatea de reglaj a volumului. Arată ca în poza de mai jos:
Funcționează și acesta ca și TFT-ul tot la 3,3V însă intrările suportă nivel TTL, eu am testat  vreo două săptamâni pe un arduino nano, unde SI-ul și TFT-ul sunt alimentate la 3,3V iar intrările sunt legate direct la Arduino. Conexiunile sunt comentate în cod.
Modulul are antena conectată la firul de masă al jack-ului de căști, iar în link este dată schema placuței, și  modificarea pentru o eventuală antenă exterioară.
Pentru funcționarea cu arduino, am abuzat din nou de google, și m-am oprit pe un material al lui Matthias Hertel  care a studiat în amanunt aceste circuite având github lib-urile testate.
Dupa ce am verificat testele, am luat exemplul cu LCD și butoane și l-am adaptat pentru un TFT de 1,44" 128/128 cu ST7735.
În general s-a comportat foarte bine, ținând cont că zona de test nu este favorabilă recepției radio.
Teoretic codul ar fi funcțional și pentru RDA5807 și TEA5767 (acesta nu are RDS și volum - va trebui găsit atceva pentru a ocupa spațiul de pe TFT). Deocamdată nu am pentru un test rapid. Modificarea ar fi doar de aici:

// RDA5807M radio;    ///< Create an instance of a RDA5807 chip radio
          SI4703   radio;    ///< Create an instance of a SI4703 chip radio.
//SI4705   radio;    ///< Create an instance of a SI4705 chip radio.
// TEA5767  radio;    ///< Create an instance of a TEA5767 chip radio.

iar aici: 
  #include <SI4703.h>
trebuie înlocuit corepunzător.

Varianta testată a  ieșit ca mai jos:
 Deocamdată lipsesc butoanele, pentru test am simulat cu un conductor legat la masa. (Seek up/down, volum up/down, și un buton care apăsat aduce forțat un anume post radio ce este definit în cod)
 Pentru că mai aveam loc în arduino, am adaugat și un DHT11



Pe ondrive am pus un mic filmuleț cu funcționarea acestuia.

vineri, 27 septembrie 2019

Radio with TEA5767 on ATTINY85 with 7 segments HT16K33

Pentru un viitor proiect  am testat un radio foarte simplu cu TEA5767 ce m-a inspirat de aici: http://forklg.ru/viewtopic.php?f=98&t=1173
Testat pe arduino uno nu am reușit (pe display-urile ce le aveam disponibile) să-l fac să aprindă virgula decât în situația când frecvența afițată era mai mare de 100. Având o rezervă de module cu HT16K33 (drive LED cu interfață I2C) am înlocuit afișorul  cu TM1637, cu acesta pe I2C. Astfel a început să funcționeze normal. În plus i-am pus limite la frecvența minimă și maximă.  Unul din butoane incrementeză frecvența pozitiv, celălalt negativ.

if(f_ini<87.5) f_ini=87.5;
if(f_ini>108) f_ini=108;

Văzând gradul mic de ocupare a codului  și numărul mic de legături, am portat codul pentru ATTINY85.
Mai jos este poza cu modulul folosit.

Acesta din urmă are logica intrărilor pe invers, asa ca am legat rezistentele la plus pentru a nu mai face modificari in cod .
Am pus pe onedrive și un filmuleț scurt: https://1drv.ms/v/s!Ag3156arz2JqlTUW6c5FQ5a7g244?e=4wTOje

Încă mai există loc pentru a implementa și memorarea ultimului post, însă deocamdată nu mă interesează.

miercuri, 30 ianuarie 2019

Radio cu TEA5767 cu afisare pe TFT 1,44" si reglaj de volum

Am pornit de la un proiect mai vechi care a fost adaptat dupa informatiile gasite pe blogul unui neamt, la care am adaptat din nou afisarea pentru un TFT de 1,44", in plus am adaugat inca doua butoane care ajusteaza volumul (la iesirea D3 se obtin impulsuri cu factor de umplere variabil). Teoria este descrisa de Nicu Florica pe blogul lui. Pentru amplificare am folosit un TDA7496L care are un pin pentru  reglajul volumului  functie de tensiune. In plus am mai introdus o dioda la A1 care masoara si afiseaza si temperatura. A iesit ca mai jos:


Iesirea D3 este legat la rezistenta de 300K din pinul 6 al lui TDA7496L printr-un integrator compus dintr-un rezistor serie de 1K cu 2 condensatoare la GND unul de 4,7micro in paralel cu 100nF.
Schema se poate deduce foarte usor din codul postat pe github unde am lasat comentarii.
Impulsurile din pinul 3 care sint responsabile cu reglajul volumului se pot vedea mai jos:
Volum ridicat
 Volum scazut

O tentativa de realizare finala  (care nu-mi apartine, eu doar am scris codul in Atmega328) se poate vedea mai jos:

Sub display este un Atmega328, iar modulul cu TEA5767 este pe fata cu circuite. Cablajul urmeaza a fi refacut pentru s-a omis pozitionarea diodei sensor de temperatura (acum este pusa cu 2 sirme in aer) si s-au gresit gaurile pentru butoane (acestea fiind atipice cu tija foarte lunga). Cele din poza sint temporare pentru teste.


Aici e partea de alimentare cu 3,3V realizata cu MC34063 (pag.7), si amplificatorul cu TDA7496L (pag.4)


 Cele 2 placi deocamdata sint fixate spate in spate cu "pseudo" distantieri.



duminică, 13 ianuarie 2019

Radio cu TEA5767, afisare pe TFT 1,44", reglaj cu encoder

Am testat functionarea unui radio FM cu modul TEA5767 (proaspat sosite) cu un arduino pro-mini, cu afisare pe TFT 1,44" 128x128 (la fel proaspete) si reglaj cu encoder (urmeaza a fi casetat, iar utilizarea acestuia usureaza executia).
Am pornit de la un proiect testat de un rus, gasit pe internet unde link-ul original este aici, iar traducerea aici. Proiectulul lui este mai complex dar mie mi-a fost suficienta varianta simpla.
Fata de schema omului am facut urmatoarele modificari:
la encoder PIN_SW   8   l-am pus pe 7, iar TFT-ul este legat astfel:

CS -10
DC (A0)  - 9
RST - 8
SCK - 13
SDA - 11
LED - Vcc printr-o rezistenta de 100 Ohm
la encoder CLK-3, DT-2, SW-7

TFT-ul utilizat avind tensiunea de alimentare de 3,3V, am utilizat un arduino pro mini pe care l-am alimentat la 3,3V.
TFT-ul are la baza circuitul ILI9163, iar in lib-ul folosit am editat fisierul TFT_ILI9163C_settings.h cu rezolutia acestuia respectiv 128x128. Detalii sint si intr-un articol mai vechi, de unde am preluat afisarea nume post, pentru ca TEA5767 nu are functia de RDS.  Afisarea grafica a nivelului de semnal este adaptata dupa articolul lui Nicu Florica.
Dupa aceste modificari a iesit ca mai jos:
Pentru afisarea frecventei am utilizat un font pentru a face mai eleganta afisarea numerelor.


In mod TUNE (SEARCH)
Imaginea de ansamblu testata:

Functionarea este conform filmului postat de rus, adica la apasarea prelungita butonului encoder, se intra in mod tune, iar prin rotirea encoderului se fixeaza frecventa dupa care apasarea butonului realizeaza memorarea frecventei. Din cod sint programate 16 zone de memorie pentru 16 posturi. Pentru a memora un post, mai intii rotesc encoderul pina apare numarul memoriei dorite. Dupa ce s-au memorat posturile, este suficienta simpla rotire a encoderului, si frecventele vor fi citite din memorie.
Alocarea de nume la o anumita frecventa corespunde orasului Iasi. Se poate modifica editind liniile de forma:

if (frequency==963) { display.setCursor(25,85);
   display.setTextSize(1);
   display.setTextColor(YELLOW,BLACK);display.print("Radio Iasi  ");}

spre finalul codului in :

void printpost(float frequency)

Pe github am ridicat si lib-ul modificat pentru ILI9163.
Cind voi mai gasi o ferestra vreau sa-i fac si un reglaj de volum cu TDA7496.
Voi reveni cu detalii dupa casetare.

sâmbătă, 12 mai 2018

Radio cu TEA5767 comandat de ATTINY85 afisare pe OLED

Am testat un radio foarte simplu, cu TEA5767, comandat de ATTINY85 cu afisarea frecventei pe un OLED. Pentru cautarea posturilor am folosit o singura intrare cu 2 butoane.
Schema este urmatoarea:
Iar modulul cu TEA5767 este:

Deorece resursele lui ATTINY85 sint reduse am abuzat de google pentru a cauta ceva similar. Astfel am gasit aici un library minimal pentru TEA5767,  si aici pentru OLED.
Codul testat este pe github.
Initial am testat cu un OLED 128x64 apoi amgasit un 128x32.
Viteza de reactie este destul de buna, insa afisarea frecventei este putin intirziiata, refresh-ul se face la cca 2-3 secunde.
Imagini de la teste:
 In poza apar trei butoane pentru ca initial am vrut sa-i pun un buton pentru MUTE, insa codul actual ocupa 99%


luni, 12 februarie 2018

Radio cu RDA5807 pe OLED I2C

La solicitarea unui prieten am pornind de la articolul anterior si am adaptat codul initial pentru afisare pe display OLED I2C. Urmeaza a fi ascuns intr-un radio decedat.
Am renuntat la afisarea canalului in favoarea unei dimensiuni mai mari pentru frecventa.
Din informatiile oferite de functia RDS am renuntat la afisarea orei pentru ca nu am gasit nici un post de radio care sa transmita ora actualizata.
Restul a ramas cam la fel, adica la apasarea butonului meniu trecem din acord automat, in manual, si apoi in reglaj volum.
Schema cu utilizare cu oled devine:
Eu am folosit un arduino micro pe care l-am alimentat la 3,3V
Codul actualizat este pe github, impreuna cu biblioteca lui RDA5807 care este utila in aceast caz doar pentru functionarea functiei de RDS. Partea initiala de cod pentru RDS nu am reusit s-o adaptez pentru o afisare corespunzatoare. 

Imagini de la teste:
 Pe display in dreapta sus am afisat nivelul semnalui receptionat. Ca antena acum are un fir de circa 10cm
 Deoarece m-a secat breadboard-ul utilizat (pene de contact) am procedat la lipirea firelor de conexiune
Update:
Confom unor observatii library-ul folosit era setat pe 128/32, motiv pentru care afiseaza elativ ciudat.
Deci fisierul Adafruit_SSD1306.h trebuie editat  sa arate astfel:
/*=========================================================================
    SSD1306 Displays
    -----------------------------------------------------------------------
    The driver is used in multiple displays (128x64, 128x32, etc.).
    Select the appropriate display below to create an appropriately
    sized framebuffer, etc.

    SSD1306_128_64  128x64 pixel display

    SSD1306_128_32  128x32 pixel display

    SSD1306_96_16

    -----------------------------------------------------------------------*/
   #define SSD1306_128_64
  // #define SSD1306_128_32
 // #define SSD1306_96_16
/*=========================================================================*/
Insa in aceasta situatie codul devine prea mare (110%). asa ca m-am mobilizat si am adaptat codul scris initial pentru RDS ocazie cu care am renuntat la biblioteca RDA5807 pe care am folosit-oinitial doar pentru functia RDS. Astfel am reusit sa compilez codul pentru arduino micro.
"Design-ul" a devenit:



luni, 28 august 2017

Radio cu TEA5767, OLED, MUTE

Sursa de inspiratie este blogul unui neamt.

Aici m-a atras prezenta butonului de MUTE.
Pe blogul nemtului se gasesc suficiente informatii despre TEA5767, si modul de conectare la Arduino. Si aici am adaptat codul pentru afisare pe OLED (display-urile de nokia inca inca erau in avion).
Am folosit un OLED de 0.98" SPI, modul de conectare la controler este descris in cod.
Ce a iesit spre final se poate vedea mai jos

 Are un amplificator cu 2xTBA820, iar VU-metrul este cu AN6884 cu display LED tricolor recuperat de la sistem de parcare defect. Pe spate are si 2 semireglabili pentru "calibrarea" VU-metrului.

Partea proasta la OLED e ca are remanenta daca este aprins foarte multa vreme. In sensul ca informatiile statice vor ramine definitiv pe ecran. De exemplu asta de mai sus a stat foarte multa vreme pe 103,10 si cind s-a dorit schimbarea statiei abia se putea distinge valoarea frecventei.
"MHz", se evidentiaza destul de clar si dupa ce este scoasa alimentarea.
La urmatorul daca va mai fi va trebui sa-i fac ceva sa se stinga ecranul la citeva secunde dupa apasarea vreunui buton.

Radio cu TEA5767, TFT 1,44", afisare nume post

Experimentul are ca sursa de inspiratie materialul lui Nicu Florica.
Nu aveam display de Nokia si m-am gindit sa adaptez codul pentru un TFT 1,44 cu ILI9163 similar cu cel din imagine.
Am pastrat schema de baza si am inlocuit display-ul de nokia cu TFT-ul de 1,44"
Modul de conectare este: (reiese si din cod)
CS               -D10
DC (A0)     - D8
RST            - D9
SCK            - D13
SDA            - D11 

LED, VCC   -5V
Button +        D7
Button -        D6
SDA radio     A4
SCL radio      A5

TEA5767 nu are capabilitati incluse pentru RDS, asa ca am ca am facut un artficiu de tipul:

if (current_freq==103.1) { display.setCursor(5,90);
   display.setTextSize(1);
   display.setTextColor(YELLOW,BLACK);display.print("Cultural   ");} 

Mai exact am scanat tot ce se putea receptiona aici, si am identificat dupa frecventa numele postului, si am adaugat if-urile ca mai sus. In cazul altor statii receptionate  "necunoscute" nu afiseaza nimic.
Finalizarea este cu arduino micro la 5V. Ulterior am micsorat fontul la afisarea frecventei ca 99.99MHz sa fie pe acelasi rind

Aici mai are atasat un mic amplificator cacu urma sa fie adaptat intr-o cutie

 Teste cu difuzoare recuperate dintr-un notebook

Amplificator ultra simplu cu MOS 40W/8Ohm la 2x30V

 Am început construcția unui amplificator cu tranzistori MOS după o schemă proiectată de Ionel Epure , care se împacă foarte bine cu boxele ...