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

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.

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:



duminică, 27 august 2017

Radio cu RDA5807, TFT 1,44"

Este o adaptare dupa testele lui Nicu
La vremea cind am facut acest experiment nu aveam la indemina nici un display de Nokia. Imi placuse ideea de a memora pozitia volumului si ultimul post de radio, si m-am hotarit sa-l adaptez pe un alt tip de display.
Aveam  display-uri TFT color de 1,44" rosii si negre. La teste nu am gasit nici o diferenta intre ele, functionind foarte bine si unul si celalalt (posibil sa fie si nu le-am descoperit eu).
Problema era ca biblioteca folosita imi scotea imaginea de pe display, In final am gasit ce modificari trebuie facute pentru a functiona corect si pe acest display de 1,44". Pe 1,8" cu acelasi controler ILI9163 functioneaza ok. Arhiva cu biblioteca modicata este aici. Nu mai gasesc in acest moment link-ul unde am citit despre modificare.

Proiectul initial pare sa fie al unui spaniol, preluat de un rus, apoi adaptata memorarea de catre Nicu Florica . Dupa ceva  studiu codul mi-a iesit ca aici.
RDS-ul initial nu am reusit sa-l afisez pe TFT.
Eu am adaugat afisarea RDS-ului pe care am adaptat-o dupa un exemplu de aici. La teste am renuntat la afisarea orei care se pare ca la noi nu este setata corect. De fapt nu am gasit nici un post de radio care sa aiba ora actualizata.

Arduino nano este alimentat la 3,3V printr-un modul step-down, iar sub display are un modul amplificator cu PAM8403 care s-a dovedit destul de puternic la 3,3V. Potentiometrul l-am pus pentru ca la volum zero nu face mute. In poza este alimentat de la incarcatorul de telefon.
La teste s-a dovedit suficient de stabil, desi ca antena am folosit doar un fir circa jumatate de metru.

Schema este similara cu cea folosita de cei trei, iar conectarea display-ului la arduino este comentata la inceputul codului.
//CS - D10
//DC (A0)- D8
//RST -D9
//SCK -13
//SDA -11 
//LED, VCC -3,3V
//butoane A0
//sda radioA4
//scl radio A5

 Codul este destul de stufos si a fost greoaie fixarea informatiilor, motiv pentru care a iesit foarte colorat pentru a putea urmari usor modificarile facute.

Varianta de test arata ca mai jos:



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 ...