- FM radio vispārējs darbs
- Nepieciešamās sastāvdaļas
- RDA5807 uztvērējs
- Audio pastiprinātājs
- Arduino FM uztvērēja shēmas shēma
- Arduino FM radio koda skaidrojums
- Arduino FM radio darbība
Mūsdienās gandrīz visi izmanto savus mobilos tālruņus, lai klausītos mūziku, ziņas, aplādes utt. Bet ne tik sen mēs visi bijām atkarīgi no vietējiem FM radio, lai iegūtu jaunākās ziņas un dziesmas. Lēnām šie radio zaudē popularitāti, bet ārkārtas gadījumos, kad internets radio darbojas, radioaparātiem ir svarīga loma informācijas pārsūtīšanā lietotājiem. Radio signāli vienmēr atrodas gaisā (kurus pārraida stacijas), un mums ir nepieciešama tikai FM uztvērēja ķēde, lai uztvertu šos radio signālus un pārsūtītu tos uz audio signāliem. Iepriekšējās apmācībās mēs izveidojām arī dažus citus FM raidītājus un uztvērējus, kas ir uzskaitīti zemāk.
- Raspberry Pi FM raidītājs
- Raspberry Pi FM uztvērēja radio
- FM raidītāja ķēde
- FM raidītāja ķēde bez induktora
Šajā apmācībā mēs izveidosim Arduino FM uztvērēju un pievienosim to mūsu projekta arsenālam. Mēs izmantosim RDA5807 FM uztvērēja IC ar Arduino un ieprogrammēsim to, atskaņosim jebkuru FM radio staciju, kuru lietotājs var noregulēt ar potenciometru. Mēs arī izmantosim audio pastiprinātāju kopā ar shēmu, lai kontrolētu mūsu Arduino FM radio izejas skaļumu, izklausās interesanti, vai ne? Tātad, sāksim darbu.
FM radio vispārējs darbs
Radiostacijas pārveido elektriskos signālus par radio signāliem, un šie signāli ir jāpārveido, pirms tos pārraida caur antenu. Ir divas metodes, kā signālu var modulēt, proti, AM un FM. Kā norāda nosaukums, amplitūdas modulācija (AM) modulē amplitūdu pirms signāla pārraides, turpretī frekvences modulācijā (FM) signāla frekvence tiek modulēta pirms raidīšanas caur antenu. Radiostacijās viņi izmanto frekvences modulāciju, lai modulētu signālu un pēc tam pārsūtītu datus. Tagad viss, kas mums jāveido, ir uztvērējs, kuru var noregulēt uz noteiktām frekvencēm, un tos uztvert, kā arī vēlāk pārveidot šos elektriskos signālus par audio signāliem. Mēs izmantosimRDA5807 FM uztvērēja modulis šajā projektā, kas vienkāršo mūsu shēmu.
Nepieciešamās sastāvdaļas
- Arduino Nano
- RDA5807 uztvērējs
- Audio pastiprinātājs
- Savienojošie vadi
- Pot - 100K
- Perf Board
RDA5807 uztvērējs
RDA5807 ir viena mikroshēmas FM radio uztvērēja modulis ar pilnībā integrētu sintezatoru. Modulis atbalsta pasaules frekvenču joslu 50 - 115MHz, skaļuma regulēšanu un izslēgšanu, programmējamu izcelšanu (50 / 75us), uztveršanas signāla stipruma indikatoru un SNR, 32,768KHz kristāla oscilatoru, digitālo automātiskās pastiprināšanas kontroli utt. Zemāk attēlā parādīts RDA5807M uztvērēja blokshēma.
Tam ir digitāla zema IF arhitektūra, un tajā ir integrēts zema trokšņa pastiprinātājs (LNA), kas atbalsta FM apraides joslu (50 līdz 115 MHz), programmējamu pastiprinājuma kontroli (PGA), augstas izšķirtspējas analogo-ciparu pārveidotāju un augstas precizitātes ciparu-analogo pārveidotāji (DAC). Ierobežotājs novērš pārslodzi un ierobežo blakus esošo kanālu radīto intermodulācijas produktu skaitu. PGA pastiprina maisītāja izejas signālu un pēc tam tiek digitalizēts ar ADC. DSP kodols pārvalda kanālu izvēli, FM demodulāciju, stereo MPX dekodētāju un izejas audio signālu. RDA5807 pinout diagramma IC ir norādīts zemāk.
Modulis darbojas uz elektroenerģijas padeve 1.8 - 3.3V. Atpūšoties un izvēloties vadības saskarni, modulis atiestata sevi, kad VIO ir Ieslēgts, kā arī atbalsta mīksto atiestatīšanu, aktivizējot bit1 no 0 līdz 1 no 02H adreses. Modulis izmanto I2C komunikāciju, lai sazinātos ar MCU, un interfeiss sākas ar sākuma nosacījumu, komandu baitu un datu baitiem. RDA5807 ir 13 16 bitu reģistri, no kuriem katrs veic noteiktu funkciju. Reģistra adreses sākas ar 00H, kas tiek piešķirts mikroshēmas ID un beidzas ar 0FH. Visos 13 reģistros daži biti ir rezervēti, bet citi ir R / W. Katrs reģistrs veic tādus uzdevumus kā mainīgs skaļums, mainot kanālus utt. Atkarībā no tiem piešķirtajiem bitiem.
Mēs nevaram tieši izmantot moduli, savienojot to ar ķēdi, jo tapas ir aizvērtas. Tātad, es izmantoju perf plāksni un dažus vīriešu tapas un pielodēju moduļa katru tapu katram vīriešu tapam, kā parādīts zemāk esošajā attēlā.
Audio pastiprinātājs
Audio pastiprinātājs ir elektroniska ierīce, kas pastiprina mazjaudas elektroniskos audio signālus tādā līmenī, lai tas būtu pietiekami augsts skaļruņu vai austiņu vadīšanai. Mēs esam izveidojuši vienkāršu audio pastiprinātāju, izmantojot LM386, tā pati shēma ir parādīta zemāk, un jūs varat arī pārbaudīt saiti, lai uzzinātu vairāk par šo shēmu, kā arī pārbaudiet citas audio pastiprinātāja shēmas.
Arduino FM uztvērēja shēmas shēma
Mēs izmantojām divus potenciometrus FM joslas noregulēšanai un audio pastiprinātāja skaļuma kontrolei. Lai mainītu skaļumu, jūs varat vai nu atšķirties pot, kas ir savienots ar starp 1 un 8 th pin LM386 vai katlā, kas ir saistīta pie no LM386 3 pin. Zemāk redzamajā attēlā parādīta pilnīga Arduino FM Radio shēma.
Es veicu maz izmaiņas pastiprinātājā. Tā vietā, lai pastiprinātājā izmantotu divus potenciometrus, es izmantoju tikai vienu. Es nomainīju katlu, kas tiek izmantots, lai mainītu Gain, ar rezistoru. Tāpēc tagad mūsu projektam ir divi potenciometri, viens no kuriem ir jāpielāgo, bet otrs - skaļuma maiņai. Potenciometrs, ko izmanto kanāla noskaņošanai, ir savienots ar Arduino nano. Katla centrālā tapa ir savienota ar Arduino nano A0 tapu, un jebkura no abām atlikušajām tapām ir savienota ar 5V, bet otra - ar GND. Cits katls tiek izmantots radio skaļuma kontrolei, un tas ir savienots, kā parādīts iepriekšējā attēlā.
Arduino tapa A4 un A5 ir savienota ar RDA5807M SDA un SCL tapu. paturiet prātā, ka uztvērēja modulis darbojas tikai ar 3,3 V. Tātad, savienojiet Nano 3v3 tapu ar uztvērēja moduļa VCC tapu. Kad savienojumi tika izveidoti, mana iestatīšana izskatījās šādi
Arduino FM radio koda skaidrojums
Kods inicializēs uztvērēja moduli un pēc tam iestatīs kanālu ar iepriekš iestatīto frekvenci. Kad nano nolasītā vērtība A0 tapā mainās (mainot trauku), mainās frekvence, kas savukārt maina kanālu. Pilns kods ir norādīts lapas beigās.
Mēs sākam savu programmu, pievienojot nepieciešamo vadu bibliotēku saziņai ar RDA5807. Pēc tam mainīgajā “channel” mēs iestatām kanāla vērtību. Kad radio sāk darboties, tas automātiski tiks noregulēts uz šo kanālu.
# iekļaut
Pēc tam mēs ielādēsim baitus katram reģistram savā RDA5807 IC, lai iestatītu sākotnējo konfigurāciju. Šajā brīdī mēs atiestatām uztvērēju.
uint8_t boot_config = {/ * reģistrēt 0x02 * / 0b11000001, 0b00000011, / * reģistrēt 0x03 * / 0b00000000, 0b00000000, / * reģistrēt 0x04 * / 0b00001010, 0b00000000, / * reģistrēt 0x05 * / 0b1000111, 0b1000110, 0b00000000, 0b00000000, / * reģistrē 0x07 * / 0b01000010, 0b00000010,};
Pēc ierīces atiestatīšanas mēs varam to noregulēt. Lai kanālu izveidotu tunelī, mums jāprogrammē tikai pirmie 4 baiti. Šī koda daļa mainīs kanālu uz vēlamo frekvenci. Sākumā I2C mēs sākam pārraidi, uzrakstām vai nolasām datus un pēc tam pārraidi beidzam. Šajā uztvērēja IC mums nav jānorāda adrese, jo datu lapā ir skaidri teikts, ka I2C saskarnē ir fiksēts sākuma reģistrs, ti, 0x02h rakstīšanas operācijai un 0x0Ah lasīšanas operācijai.
uint8_t tune_config = {/ * reģistrēt 0x02 * / 0b11000000, 0b00000001, / * reģistrēt 0x03 * / (kanāls >> 2), ((kanāls & 0b11) << 6) - 0b00010000};
Iestatījumā mēs inicializējam sāknēšanas konfigurāciju (atiestatīšanu) un pēc tam noskaņojamies uz kanālu, ierakstot RDA5807M skaņošanas konfigurācijas baitus.
void setup () {Sērijas.sākt (9600); pinMode (A0, INPUT); / * Savienojums ar RDA5807M FM uztvērēju: * / 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 (); }
Izmantojot pot, lai noregulētu uz frekvenci, es saskāros ar problēmu. Vērtības, kuras nolasa A0 tapa, nav nemainīgas. Ir trokšņu klubs ar vēlamo vērtību. Es izmantoju 0,1uF keramikas kondensatoru, kas savienots starp A0 un GND, lai gan troksnis tika samazināts līdz minimumam, tas nav līdz vēlamajam līmenim. Tātad, man bija jāveic dažas izmaiņas kodā. Sākumā es atzīmēju rādījumus, kurus ietekmē troksnis. Es uzzināju, ka trokšņa maksimālā vērtība ir 10. Tāpēc es uzrakstīju programmu tā, ka tajā tiks ņemta vērā jaunā vērtība tikai tad, ja starpība starp jauno vērtību un tās pašas tapas veco vērtību ir lielāka par 10 un pēc tam noskaņo vajadzīgo kanālu.
void loop () {int kanāls1 = 187, vid. = 0, jaunsA; statiskā int vecāA = 0; int rezultāts = 0; newA = analogRead (A0); ja ((newA - oldA)> 10 - (oldA - newA)> 10) {Serial.println (newA); if (newA! = oldA) {kanāls = channel1 + (newA / 10); myChangeChannel (kanāls); vecsA = jaunsA; }}} // cilpas beigas
Šo funkciju izmanto, lai iestatītu masīva tune_config baitus, un pēc tam datus pārsūta uz RDA5807M IC, izmantojot protokolu I2C.
void myChangeChannel (int channel) {/ * void, ja nekas netiek atgriezts, int * / tune_config = (channel >> 2); tune_config = ((kanāls & 0b11) << 6) - 0b00010000; Wire.begin (); Wire.beginTransmission (RDA5807M_ADDRESS); Wire.write (tune_config, TUNE_CONFIG_LEN); Wire.endTransmission (); }
Arduino FM radio darbība
Kad modulis ir ieslēgts, mūsu kods atiestata RDA5807-M IC un iestata to vajadzīgā lietotāja kanālam (piezīme: šī frekvence tiek uzskatīta par bāzes frekvenci, kurā frekvence tiks palielināta). Mainot potenciometru (savienots ar A0), mainās Arduino Nano nolasītās vērtības. Ja atšķirība starp jauno un veco vērtību ir lielāka par 10, mūsu kods ņems vērā šo jauno vērtību. Kanāls tiek mainīts atkarībā no jaunās vērtības izmaiņām no vecās vērtības. Skaļuma palielināšana vai samazināšana ir atkarīga no potenciometra, kas savienots starp tapu 3 un GND.
Konstrukcijas un kodēšanas beigās jums būs savs FM radio. Pilnīga FM radio darbība ir atrodama videoklipā, kas ir saistīts ar šīs lapas apakšdaļu. Ceru, ka jums patika projekts un uzzinājāt kaut ko noderīgu. Ja jums ir kādi jautājumi par šī projekta ieviešanu, varat tos atstāt komentāru sadaļā vai izmantot mūsu forumus citai tehniskai palīdzībai.