- Ogólne działanie radia FM
- Wymagane składniki
- Odbiornik RDA5807
- Wzmacniacz dźwięku
- Schemat obwodu odbiornika Arduino FM
- Objaśnienie kodu radia Arduino FM
- Działanie radia Arduino FM
Dzisiaj prawie wszyscy używają swoich telefonów komórkowych do słuchania muzyki, wiadomości, podcastów itp. Ale nie tak dawno wszyscy byliśmy zależni od lokalnych radia FM, aby otrzymywać najnowsze wiadomości i piosenki. nie działa, radia odgrywają ważną rolę w przekazywaniu informacji użytkownikom. Sygnały radiowe są zawsze obecne w powietrzu (które są nadawane przez stacje), a wszystko, czego potrzebujemy, to obwód odbiornika FM, aby wyłapać te sygnały radiowe i przenieść je na sygnały audio. W naszych poprzednich samouczkach zbudowaliśmy również kilka innych nadajników i odbiorników FM, które są wymienione poniżej.
- Nadajnik FM Raspberry Pi
- Radio z odbiornikiem FM Raspberry Pi
- Obwód nadajnika FM
- Obwód nadajnika FM bez cewki indukcyjnej
W tym samouczku zamierzamy zbudować odbiornik Arduino FM i dodać go do naszego arsenału projektu. Użyjemy układu scalonego odbiornika FM RDA5807 z Arduino i zaprogramujemy go tak, aby odtwarzać dowolną stację radiową FM, którą użytkownik może dostroić za pomocą potencjometru. Będziemy również używać wzmacniacza audio wraz z obwodem do sterowania głośnością wyjściową naszego radia Arduino FM, brzmi interesująco, prawda? Więc zacznijmy.
Ogólne działanie radia FM
Stacje radiowe konwertują sygnały elektryczne na sygnały radiowe, które przed przesłaniem przez antenę muszą być modulowane. Istnieją dwie metody modulacji sygnału, a mianowicie AM i FM. Jak sama nazwa wskazuje, modulacja amplitudy (AM) moduluje amplitudę przed wysłaniem sygnału, podczas gdy w modulacji częstotliwości (FM) częstotliwość sygnału jest modulowana przed wysłaniem przez antenę. W stacjach radiowych używają modulacji częstotliwości do modulacji sygnału, a następnie transmitują dane. Teraz wszystko, czego potrzebujemy, to odbiornik, który można dostroić do określonych częstotliwości i odebrać te sygnały, a później przekształcić te sygnały elektryczne w sygnały audio. Będziemy używaćModuł odbiornika FM RDA5807 w tym projekcie, który upraszcza nasz układ.
Wymagane składniki
- Arduino Nano
- Odbiornik RDA5807
- Wzmacniacz dźwięku
- Przewody łączące
- Garnek - 100K
- Płyta Perf
Odbiornik RDA5807
RDA5807 to jednoukładowy stereofoniczny moduł tunera radiowego FM zw pełni zintegrowanym syntezatorem. Moduł obsługuje ogólnoświatowe pasmo częstotliwości 50 - 115 MHz, regulację głośności i wyciszenie, programowalną deemfazę (50 / 75us), wskaźnik siły sygnału odbioru i SNR, oscylator kwarcowy 32,768 kHz, cyfrową automatyczną kontrolę wzmocnienia itp. schemat blokowy tunera RDA5807M.
Ma cyfrową architekturę z niskim IF i integruje wzmacniacz o niskim poziomie szumów (LNA), który obsługuje pasmo transmisji FM (od 50 do 115 MHz), programowalną kontrolę wzmocnienia (PGA), przetwornik analogowo-cyfrowy o wysokiej rozdzielczości oraz wysokiej jakości przetworniki cyfrowo-analogowe (DAC). Ogranicznik zapobiega przeciążeniom i ogranicza liczbę produktów intermodulacyjnych wytwarzanych przez sąsiednie kanały. PGA wzmacnia sygnał wyjściowy miksera, a następnie jest przetwarzany na postać cyfrową za pomocą przetworników ADC. Rdzeń DSP zarządza wyborem kanału, demodulacją FM, dekoderem stereo MPX i wyjściowym sygnałem audio. RDA5807 wyprowadzeń schemat układu scalonego są przedstawione poniżej.
Moduł pracuje na zasilaniu 1,8 - 3,3V. Po przejściu do stanu spoczynku i wybraniu interfejsu sterowania, moduł resetuje się, gdy VIO jest włączany, a także obsługuje miękki reset przez wyzwalanie bitu 1 od 0 do 1 adresu 02H. Moduł wykorzystuje komunikację I2C do komunikacji z MCU, a interfejs zaczyna się od warunku uruchomienia, bajtu polecenia i bajtów danych. RDA5807 posiada 13 16-bitowych rejestrów, z których każdy wykonuje określoną funkcję. Adresy rejestrów zaczynają się od 00H, który jest przypisany do identyfikatora chipa, a kończy na 0FH. We wszystkich 13 rejestrach niektóre bity są zarezerwowane, a niektóre R / W. Każdy rejestr wykonuje zadania, takie jak zmiana głośności, zmiana kanałów itp. W zależności od przypisanych im bitów.
Nie możemy bezpośrednio użyć modułu podłączając go do obwodu, ponieważ piny są zamknięte. Więc użyłem płytki perf i kilku męskich pinów i przylutowałem każdy pin modułu do każdego męskiego pinu, jak pokazano na poniższym zdjęciu.
Wzmacniacz dźwięku
Wzmacniacz audio to urządzenie elektroniczne, które wzmacnia elektroniczne sygnały audio małej mocy do poziomu, na którym jest wystarczająco wysoki, aby napędzać głośniki lub słuchawki. Zbudowaliśmy prosty wzmacniacz audio przy użyciu LM386, obwód tego samego pokazano poniżej, a także możesz sprawdzić link, aby dowiedzieć się więcej o tym obwodzie, sprawdź także inne obwody wzmacniacza audio.
Schemat obwodu odbiornika Arduino FM
Do strojenia pasma FM i regulacji głośności wzmacniacza audio użyliśmy dwóch potencjometrów. Do zmiany objętości można też zmieniać garnka, który jest połączony między 1 i 8 th sworznia LM386 lub puli, która połączona jest na pin 3 LM386. Poniższe zdjęcie przedstawia pełny schemat obwodu radia Arduino FM.
Niewielkie zmiany dokonałem we wzmacniaczu. Zamiast dwóch potencjometrów we wzmacniaczu zastosowałem tylko jeden. Potencjometr, który służy do zmiany wzmocnienia, zamieniłem na rezystor. Więc teraz nasz projekt ma dwa potencjometry, jeden do strojenia, a drugi do zmiany głośności. Potencjometr służący do strojenia kanału jest połączony z Arduino nano. Środkowy pin garnka jest połączony ze stykiem A0 Arduino nano, a jeden z pozostałych dwóch pinów jest podłączony do 5 V, a drugi jest podłączony do GND. Kolejny potencjometr służy do regulacji głośności radia i jest podłączony jak na powyższym rys.
Pin A4 i A5 Arduino są podłączone do pinów SDA i SCL RDA5807M. pamiętaj, że moduł odbiornika działa tylko na 3,3V. Więc podłącz pin 3v3 Nano do pin VCC modułu odbiornika. Po wykonaniu połączeń moja konfiguracja wyglądała tak
Objaśnienie kodu radia Arduino FM
Kod zainicjuje moduł odbiornika, a następnie ustawi kanał z zadaną częstotliwością. Gdy wartość odczytana przez nano na pinie A0 zmienia się (poprzez zmianę potencjometru), zmienia się częstotliwość, co z kolei zmienia kanał. Pełny kod znajduje się na końcu strony.
Rozpoczynamy nasz program od dodania wymaganej biblioteki przewodów do komunikacji z RDA5807. Następnie w zmiennej „channel” ustawiamy wartość kanału. Za każdym razem, gdy radio się uruchomi, automatycznie dostroi się do tego kanału.
#zawierać
Następnie załadujemy bajty do każdego rejestru w naszym układzie scalonym RDA5807, aby ustawić naszą początkową konfigurację. W tym momencie resetujemy odbiornik.
uint8_t boot_config = {/ * register 0x02 * / 0b11000001, 0b00000011, / * register 0x03 * / 0b00000000, 0b00000000, / * register 0x04 * / 0b00001010, 0b00000000, / * register 0x05 * / 0b10001000, 0b00001111, / * 0b00000000, 0b00000000, / * register 0x07 * / 0b01000010, 0b00000010,};
Po zresetowaniu urządzenia możemy je dostroić. Aby dostroić kanał, musimy zaprogramować tylko pierwsze 4 bajty. Ta część kodu zmieni kanał na żądaną częstotliwość. W I2C najpierw rozpoczynamy transmisję, zapisujemy lub odczytujemy dane, a następnie kończymy transmisję. W tym układzie scalonym odbiornika nie musimy podawać adresu, ponieważ arkusz danych wyraźnie mówi, że interfejs I2C ma stały rejestr początkowy, tj. 0x02h dla operacji zapisu i 0x0Ah dla operacji odczytu.
uint8_t tune_config = {/ * register 0x02 * / 0b11000000, 0b00000001, / * register 0x03 * / (kanał >> 2), ((kanał & 0b11) << 6) - 0b00010000};
Podczas instalacji inicjalizujemy konfigurację rozruchu (reset), a następnie dostrajamy się do kanału, zapisując bajty konfiguracji strojenia do RDA5807M.
void setup () {Serial.begin (9600); pinMode (A0, WEJŚCIE); / * Podłącz do tunera FM RDA5807M: * / 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 (); }
Podczas używania potencjometru do dostrajania częstotliwości napotkałem problem. Wartości odczytywane przez pin A0 nie są stałe. Występuje szum pałki o pożądanej wartości. Użyłem kondensatora ceramicznego 0,1uF podłączonego między A0 i GND, chociaż szum został zminimalizowany, nie jest do pożądanego poziomu. Musiałem więc wprowadzić pewne zmiany w kodzie. Najpierw zanotowałem odczyty, na które wpływa hałas. Dowiedziałem się, że maksymalna wartość szumu to 10. Więc napisałem program w taki sposób, że będzie on uwzględniał nową wartość tylko wtedy, gdy różnica między nową wartością a starą wartością tego samego pinu będzie większa niż 10 a następnie dostroi się do żądanego kanału.
void loop () {int channel1 = 187, avg = 0, newA; static int oldA = 0; int wynik = 0; nowyA = analogRead (A0); if ((nowyA - staryA)> 10 - (staryA - nowyA)> 10) {Serial.println (nowyA); if (nowyA! = staryA) {kanał = kanał1 + (nowyA / 10); myChangeChannel (kanał); oldA = newA; }}} // koniec pętli
Ta funkcja służy do ustawiania bajtów tablicy tune_config, a następnie przesyła dane do układu scalonego RDA5807M przy użyciu protokołu I2C.
void myChangeChannel (int kanał) {/ * void, jeśli nic nie zostanie zwrócone else int * / tune_config = (kanał >> 2); tune_config = ((kanał & 0b11) << 6) - 0b00010000; Wire.begin (); Wire.beginTransmission (RDA5807M_ADDRESS); Wire.write (tune_config, TUNE_CONFIG_LEN); Wire.endTransmission (); }
Działanie radia Arduino FM
Gdy moduł jest zasilany, nasz kod resetuje układ scalony RDA5807-M i ustawia go na kanał żądany przez użytkownika (uwaga: ta częstotliwość jest przyjmowana jako częstotliwość podstawowa, na której częstotliwość będzie zwiększana). Zmieniając potencjometr (podłączony do A0) zmieniają się wartości odczytywane przez Arduino Nano. Jeśli różnica między nową a starą wartością jest większa niż 10, nasz kod uwzględni tę nową wartość. Kanał jest zmieniany w zależności od zmiany nowej wartości w stosunku do starej wartości. Zwiększanie lub zmniejszanie głośności zależy od potencjometru, który jest podłączony między pinem 3 a GND.
Pod koniec budowy i kodowania będziesz mieć własne radio FM. Pełne działanie radia FM można znaleźć w filmie, do którego link znajduje się na dole tej strony. Mam nadzieję, że projekt Ci się podobał i nauczyłeś się czegoś pożytecznego. Jeśli masz jakieś pytania dotyczące uruchomienia tego projektu, możesz je zostawić w sekcji komentarzy lub skorzystać z naszych forów, aby uzyskać inną pomoc techniczną.