Prezentowane radio powstało na bazie modułu z układem RDA5807, jego najważniejsze cechy to:
- Jednoukładowy, kompletny tuner radiowy.
- Odbiór informacji RDS.
- Stereofoniczny.
- Funkcje redukcji szumów, podbicia basów, regulacji głośności.
- Interfejs I²C, zasilanie 3,3 V.
Do prawidłowej pracy tuner wymaga dosłownie kilku elementów zewnętrznych. Kłopotliwy może okazać się niestandardowy raster wyprowadzeń, ale można poradzić sobie dolutowując listwy golpinów z lekko zgiętymi szpilkami.
Układ RDA5807 pozwala na dołączenie słuchawek do wyjścia audio, wtedy kabel słuchawkowy może pełnić rolę anteny. Aby uzyskać większą moc sygnału audio w projekcie zastosowano dodatkowy wzmacniacz mocy – moduł AVT1498. Funkcję anteny pełni typowa antena teleskopowa.
Sterowanie modułem zrealizowano na bazie płytki Arduino Uno z dołączoną płytką interfejsu użytkownika AVT1615. Dla wygody zestaw został uzupełniony o płytkę ze złączami – AVT1633.
Program sterujący pracą urządzenia powstał w środowisku Arduino IDE i bazuje na jednym z przykładów dołączonych do dokumentacji modułu. Chodzi o projekt SerialRadio, który pozwala na uruchamianie wszystkich funkcji modułu poprzez komendy wysyłane z terminala. Lista dostępnych komend i funkcji jest wyświetlana po wysłaniu znaku zapytania do układu. Jednak zanim projekt zostanie skompilowany, należy dołączyć dodatkową bibliotekę „Radio”.
Do projektu należy dodać obsługę wyświetlacza oraz przycisków dostępnych w płytce AVT1615. Przed wywołaniem funkcji setup() należy dodać fragment z listingu. W ten sposób przypisujemy wyprowadzeniom płytki Arduino odpowiednie funkcje, inicjujemy wyświetlacz oraz wyłączmy port szeregowy, który zakłócałby działanie przycisków. Kolejne zmiany mają za zadanie przeniesienie na wyświetlacz informacji wysyłanych do portu szeregowego. Należy zmodyfikować funkcje DisplayFrequency() oraz DisplayServiceName(). Ostatnia zmiana to umieszczenie na końcu programu funkcji sprawdzającej stan przycisków ButtonCheck() oraz wywoływanie tej funkcji wewnątrz pętli głównej loop(). Dzięki modyfikacjom po przyciśnięciu któregoś przycisku program wykona funkcje jak gdyby otrzymał komendę z terminala runSerialCommand(). W tym przypadku przyciski powodują zwiększenie/zmniejszenie głośności oraz przełączenie na kolejną/poprzednią stacje z listy. Warto jeszcze uzupełnić listę stacji wpisując wartości częstotliwości ulubionych stacji.
Pełne źródła programów znajdują się w materiałach dodatkowych dołączonych do projektu.