- Funcionament general de la ràdio FM
- Components necessaris
- Receptor RDA5807
- Amplificador d'àudio
- Diagrama de circuits del receptor Arduino FM
- Explicació del codi de ràdio FM Arduino
- Funcionament de la ràdio FM Arduino
Avui gairebé tothom utilitza els seus telèfons mòbils per escoltar música, notícies, podcasts, etc. Però fa poc dependíem de les ràdios FM locals per rebre les últimes notícies i cançons, lentament aquestes ràdios van perdent popularitat, però en cas d’emergència a Internet no funciona, les ràdios tenen un paper important per transmetre informació als usuaris. Els senyals de ràdio sempre són presents a l’aire (que són emesos per les emissores) i tot el que necessitem és un circuit receptor FM per captar aquests senyals de ràdio i transferir-los a senyals d’àudio. Als nostres tutorials anteriors, també vam crear pocs altres transmissors i receptors de FM que es detallen a continuació.
- Transmissor FM Raspberry Pi
- Ràdio receptora FM Raspberry Pi
- Circuit transmissor FM
- Circuit transmissor FM sense inductor
En aquest tutorial construirem un receptor FM Arduino i l’afegirem al nostre arsenal de projectes. Utilitzarem l’ IC RDA5807 del receptor FM amb Arduino i el programarem, reproduint qualsevol estació de ràdio FM que l’usuari pugui sintonitzar amb un potenciòmetre. També utilitzarem un amplificador d’àudio juntament amb el circuit per controlar el volum de sortida de la nostra ràdio FM Arduino, sona interessant oi? Comencem, doncs.
Funcionament general de la ràdio FM
Les estacions de ràdio converteixen els senyals elèctrics en senyals de ràdio, i aquests senyals han de ser modulats abans de transmetre's a través de l'antena. Hi ha dos mètodes en què es pot modular un senyal, és a dir, AM i FM. Com el seu nom indica, la modulació d'amplitud (AM) modula l'amplitud abans de transmetre un senyal mentre que, en la modulació de freqüència (FM), la freqüència del senyal es modula abans de transmetre's a través de l'antena. A les estacions de ràdio, utilitzen la modulació de freqüència per modular el senyal i després transmetre les dades. Ara, tot el que necessitem és construir un receptor que es pugui sintonitzar amb determinades freqüències i rebre aquests senyals i, posteriorment, convertir aquests senyals elèctrics en senyals d’àudio. Utilitzarem elMòdul receptor RDA5807 FM en aquest projecte, que simplifica el nostre circuit.
Components necessaris
- Arduino Nano
- Receptor RDA5807
- Amplificador d'àudio
- Connexió de cables
- Pot - 100K
- Perf Board
Receptor RDA5807
RDA5807 és un mòdul sintonitzador de ràdio estèreo FM amb un sol xip amb sintetitzador completament integrat. El mòdul admet la banda de freqüència mundial de 50 - 115 MHz, control de volum i silenci, desenfasi programable (50 / 75us), indicador de intensitat del senyal de recepció i SNR, oscil·lador de cristall de 32,768 KHz, control de guany automàtic digital, etc. diagrama de blocs del sintonitzador RDA5807M.

Té una arquitectura digital de baix IF i integra un amplificador de baix soroll (LNA), que admet la banda d’emissió FM (50 a 115 MHz), un control de guany programable (PGA), un convertidor analògic a digital d’alta resolució i convertidors digital-analògics (DAC) d'alta fidelitat. El limitador evita la sobrecàrrega i limita el nombre de productes d’intermodulació creats pels canals adjacents. El PGA amplifica el senyal de sortida del mesclador i després es digitalitza amb ADC. El nucli DSP gestiona la selecció de canals, la demodulació FM, el descodificador MPX estèreo i el senyal d'àudio de sortida. A continuació es mostra el diagrama de fixació RDA5807 per a l’IC.

El mòdul funciona amb la font d'alimentació de 1,8 a 3,3V. Quan es selecciona la interfície de descans i control, el mòdul es restableix quan VIO està engegat i també admet el restabliment suau mitjançant el disparador del bit 1 de 0 a 1 de l'adreça 02H. El mòdul utilitza la comunicació I2C per comunicar-se amb l’MCU i la interfície comença amb la condició d’inici, un byte d’ordre i bytes de dades. El RDA5807 té 13 registres de 16 bits, cadascun dels quals realitza una funció particular. Les adreces de registre comencen amb 00H, que s’assigna a l’identificador de xip i acaba amb 0FH. En els 13 registres, alguns bits es reserven mentre que alguns són R / W. Cada registre realitza tasques com canviar de volum, canviar de canal, etc. en funció dels bits que se'ls assignin.
No podem utilitzar el mòdul directament quan el connectem a un circuit, ja que els pins estan tancats. Per tant, he utilitzat una placa perf i alguns passadors masculins i heu soldat els passadors del mòdul a cada passador masculí tal com es mostra a la imatge següent.

Amplificador d'àudio
Un amplificador d’àudio és un dispositiu electrònic que amplifica els senyals d’àudio electrònics de baixa potència fins a un nivell suficientment elevat per conduir altaveus o auriculars. Hem creat un amplificador d’àudio senzill mitjançant LM386, el circuit per al mateix es mostra a continuació i també podeu consultar l’enllaç per obtenir més informació sobre aquest circuit, també consultar altres circuits d’amplificador d’àudio.

Diagrama de circuits del receptor Arduino FM
Hem utilitzat dos potenciòmetres per sintonitzar la banda FM i controlar el volum de l’amplificador d’àudio. Per canviar el volum que o bé pot variar l'olla, que està connectat a entre 1 i 8 º pin de LM386 o l'olla, que està connectat al pin 3 de l'LM386. La imatge següent mostra el diagrama complet del circuit de la ràdio FM Arduino.

Vaig fer petits canvis a l'amplificador. En lloc d'utilitzar dos potenciòmetres a l'amplificador, només n'he fet servir un. Vaig canviar l’olla, que s’utilitza per canviar el guany, amb una resistència. Per tant, ara el nostre projecte té dos potenciòmetres, un per afinar i un per canviar el volum. El potenciòmetre, que s’utilitza per sintonitzar el canal, està connectat amb el nano Arduino. El pin central de l’olla està connectat al pin A0 del nano Arduino i qualsevol dels dos pins restants està connectat al 5V i l’altre està connectat al GND. Una altra olla s’utilitza per controlar el volum de la ràdio i es connecta tal com es mostra a la fig.
El pin A4 i A5 de l'Arduino estan connectats al pin SDA i SCL del RDA5807M. tingueu en compte que el mòdul receptor només funciona a 3,3 V. Per tant, connecteu el pin 3v3 del Nano al pin VCC del mòdul receptor. Un cop fetes les connexions, la meva configuració semblava així

Explicació del codi de ràdio FM Arduino
El codi inicialitzarà el mòdul receptor i establirà el canal amb la freqüència predeterminada. Quan el valor llegit pel nano al pin A0 canvia (canviant pot), canvia la freqüència que canvia el canal. El codi complet es dóna al final de la pàgina.
Comencem el nostre programa afegint la biblioteca de cables necessària per comunicar-nos amb RDA5807. A continuació, a la variable "canal" establim el valor del canal. Sempre que s'iniciï la ràdio, s'ajustarà automàticament a aquest canal.
#incloure
A continuació, carregarem bytes a cada registre del nostre IC RDA5807 per configurar la nostra configuració inicial. En aquest moment, estem restablint el receptor.
uint8_t boot_config = {/ * register 0x02 * / 0b11000001, 0b00000011, / * register 0x03 * / 0b00000000, 0b00000000, / * register 0x04 * / 0b00001010, 0b00000000, / * register 0x05 * / 0b100111, 0 0b00000000, 0b00000000, / * registre 0x07 * / 0b01000010, 0b00000010,};
Després de restablir el dispositiu, podem ajustar-lo. Per sintonitzar el canal només necessitem programar els primers 4 bytes. Aquesta part del codi canviarà el canal a la freqüència desitjada. Al I2C al principi, comencem la transmissió, escrivim o llegim les dades i després acabem la transmissió. En aquest IC del receptor, no hem d’especificar l’adreça, ja que el full de dades diu clarament que la interfície I2C té un registre d’inici fix, és a dir, 0x02h per a una operació d’escriptura i 0x0Ah per a una operació de lectura.
uint8_t tune_config = {/ * register 0x02 * / 0b11000000, 0b00000001, / * register 0x03 * / (canal >> 2), ((canal i 0b11) << 6) - 0b00010000};
A la configuració, inicialitzem la configuració d’arrencada (restabliment) i, a continuació, sintonitzem un canal escrivint els bytes de configuració d’afinació al RDA5807M.
configuració nul·la () {Serial.begin (9600); pinMode (A0, INPUT); / * Connexió al sintonitzador RDA5807M FM: * / Wire.begin (); Wire.beginTransmission (RDA5807M_ADDRESS); Wire.write (boot_config, BOOT_CONFIG_LEN); Wire.endTransmission (); Wire.beginTransmission (RDA5807M_ADDRESS); Wire.write (tune_config, TUNE_CONFIG_LEN); Wire.endTransmission (); }
Quan utilitzava pot per sintonitzar una freqüència, m’havia enfrontat a un problema. Els valors que llegeix el pin A0 no són constants. Hi ha un soroll amb el valor desitjat. He utilitzat un condensador ceràmic de 0,1 uF connectat entre A0 i GND, tot i que el soroll s’ha minimitzat, no arriba al nivell desitjat. Per tant, vaig haver de fer alguns canvis al codi. Al principi, vaig anotar les lectures que es veuen afectades pel soroll. Em vaig assabentar que el valor màxim del soroll és de 10. Així que vaig escriure el programa de tal manera que, només tindrà en compte el nou valor si la diferència entre el valor nou i el valor antic del mateix pin és superior a 10. i, a continuació, sintonitzeu el canal desitjat.
bucle buit () {int canal1 = 187, mitjana = 0, nouA; static int oldA = 0; int result = 0; nouA = analogRead (A0); if ((newA - oldA)> 10 - (oldA - newA)> 10) {Serial.println (newA); if (newA! = oldA) {channel = channel1 + (newA / 10); myChangeChannel (canal); vellA = nouA; }}} // final del bucle
Aquesta funció s'utilitza per configurar els bytes de la matriu tune_config i, a continuació, transmet les dades a l'IC RDA5807M mitjançant el protocol I2C.
void myChangeChannel (canal int) {/ * void si no es torna res else int * / tune_config = (canal >> 2); tune_config = ((canal & 0b11) << 6) - 0b00010000; Wire.begin (); Wire.beginTransmission (RDA5807M_ADDRESS); Wire.write (tune_config, TUNE_CONFIG_LEN); Wire.endTransmission (); }
Funcionament de la ràdio FM Arduino
Quan el mòdul s’encén, el nostre codi restableix l’IC RDA5807-M i el defineix en un canal de l’usuari desitjat (Nota: aquesta freqüència es pren com a freqüència base a la qual s’incrementarà la freqüència). En canviar el potenciòmetre (connectat a A0), canvien els valors llegits per l’Arduino Nano. Si la diferència entre el valor nou i el valor anterior és superior a 10, el nostre codi considerarà aquest valor nou. El canal es canvia en funció del canvi del valor nou respecte del valor anterior. Augmentar o disminuir el volum depèn del potenciòmetre, que es connecta entre el pin 3 i el GND.

Al final de la construcció i la codificació, tindreu la vostra pròpia ràdio FM. El funcionament complet de la ràdio FM es pot trobar al vídeo enllaçat al final d'aquesta pàgina. Espero que us hagi agradat el projecte i hàgiu après alguna cosa útil. Si teniu alguna pregunta per fer funcionar aquest projecte, podeu deixar-los a la secció de comentaris o utilitzar els nostres fòrums per obtenir ajuda tècnica.
