Witam wszystkich.
Tym razem chciałbym zaprezentować radioodtwarzacz internetowy, zbudowany na bazie starej, niewykorzystywanej już mptrójki, którą prezentowałem na Elektrodzie w 2010 roku
Możliwości radioodtwarzacza:
1. Odbiór stacji radiowych zdefiniowanych w pliku stations.txt, w formacie MP3 i AAC-LC (HE-AAC tylko bez rozszerzenia SBR z uwagi na zbyt małą pojemność pamięci RAM w mikrokontrolerze) z max bitrate 256kb/s dla strumienia MP3 i 128kb/s dla strumienia AAC-LC oraz z częstotliwością próbkowania 24kHz, 44,1kHz oraz 48kHz.
2. Odtwarzanie plików MP3 oraz AAC-LC z karty SD, z max bitrate 320kb/s dla MP3 i 128kb/s dla AAC.
3. Obsługa karty SD sformatowanej w systemie plików FAT32. Karta SD jest niewymienna przez zwykłego użytkownika z uwagi na jej umieszczenie wewnątrz obudowy.
4. Możliwość podłączenia radioodtwarzacza do komputera przez USB - pojawia się w komputerze jako kolejny napęd dyskowy, udostępniając zawartość karty SD
5. Prezentowanie na wyświetlaczu naprzemiennie przewijanej nazwy słuchanej stacji oraz wykonawcy i tytułu słuchanego utworu (widoczne na filmiku) lub prezentowanie nazwy odtwarzanego pliku.
6. Oprócz informacji z punktu 5 prezentowane na wyświetlaczu są podstawowe informacje nt. słuchanego pliku / strumienia radiowego, takie jak, czas grania, rodzaj strumienia, bitrate i częstotliwość próbkowania.
Inspiracją do budowy mojej wersji tego radioodtwarzacza była konstrukcja Kolegi @Majster_XXL ( https://www.elektroda.pl/rtvforum/topic4041603.html ). Początkowo moja konstrukcja miała być zbudowana w oparciu o moduł ESP12F DEVKIT V3, który mam w swoich zapasach oraz na DAC PCM5102, gdyż było trochę gotowych przykładów takiego radioodbiornika w Internecie
( https://www.instructables.com/Esp8266-Internet-Radio/ ; https://blog.sperka.pl/2015/08/odtwarzacz-radia-internetowego-na-esp8266-cz-1/ ; https://www.instructables.com/Wifi-Webradio-With-ESP8266-and-VS1053/ czy https://github.com/renat2985/esp8266-Radio ). Jednakże uzyskane efekty dżwiękowe nie zadowalały mnie... Uzyskałem max bitrate tylko 64kb/s podczas grania MP3. Wyższe bitrate cięły się. Dołożenie zewnętrznej RAM SPI (dałem 23K256, bo taką miałem w zapasach) praktycznie niczego nie zmieniało. A chciałem również słuchać strumieni AAC... Moją uwagę zwracały rozwiązania opierające się na sprzętowym dekoderze strumieni audio, rodzaju VS1053, sam moduł ESP8266 dostarczał tylko strumień do sprzętowego dekodera. Nie chciałem też specjalnie kupować takiego dekodera. Myśląc, jak rozwiązać problem niemożności słuchania strumieni o wyższych bitrate, przypomniałem sobie, że już przecież mam dekoder MP3/AAC
Działanie radioodtwarzacza jest następujące: po włączeniu i po sprawdzeniu obecności dwóch plików: Wifi_credentials.txt oraz stations.txt w katalogu głównym karty SD wyświetlane jest główne menu odbiornika z domyślną możliwością grania radia. Wybór możliwości grania radia lub plików z karty SD (wskazywanym przez strzałki na wyświetlaczu) odbywa się pokręcając enkoderem i zatwierdzając wybór przyciskiem Start / Play (czarnym na zdjęciu ogólnego widoku radioodbiornika). W przypadku braku tych plików na karcie SD, na wyświetlaczu wyświetla się odpowiedni komunikat z sugestią podłączenia do komputera przez USB, by poprawić, co trzeba.
Po wybraniu słuchania radia, radioodtwarzacz odczytuje zawartość pliku WiFi_credentials.txt i wysyła nazwę SSID oraz hasło do modułu ESP8266. Po udanym połączeniu z WiFi przez ten moduł, stwierdzonym przez radioodtwarzacz, ten następnie odczytuje zawartość pliku stations.txt i wyświetla na wyświetlaczu listę stacji radiowych pamiętanych w tym pliku. Zastosowałem ten sam format zawartości pliku stations.txt, jak w opisywanym wcześniej przeze mnie radiomagnetofonie internetowym na STM32F407 (w formie tablic w języku C). Wyboru stacji do słuchania odbywa się również przez pokręcanie enkoderem i naciśnięciem czarnego przycisku Start / Play. Przy czym aktywną pozycją na liście jest ta stacja radiowa, która jest wyświetlana na pierwszym wierszu wyświetlacza - wciśnięcie Start / Play spowoduje wybranie jej właśnie do słuchania. Wciśnięcie białego przycisku Stop / Exit spowoduje przerwanie słuchania i powrót do listy stacji radiowych. Ponowne wciśnięcie Stop / Exit spowoduje powrót do głównego menu radioodtwarzacza. Natomiast wybieranie podkatalogów i plików oraz odtwarzanie plików z karty SD w menu odtwarzacza zrobione jest tak samo, jak w starej mptrójce.
Podczas projektowania elektroniki starałem się wszystko zmieścić w obudowie KM-60 z uwagi na już posiadany przeze mnie filtr optyczny do niej. Chciałem też wykorzystać w maksymalny sposób posiadane jeszcze stare (m.in. też polskie) podzespoły oraz stary rosyjski głośnik: https://www.radiomuseum.org/r/unknown_lautsprecherchassis_05gd_31_05_31.html
W projekcie PCB istnieje możliwość zamiennego użycia wzmacniacza UL1482 lub UL1490. Ponadto istnieje możliwość zastosowania na PCB zasilacza na LM723 lub na LM7805. Zależnie od wyboru elementu stabilizacyjnego, montuje się LM723 lub LM7805 z niezbędną otoczką.
Podczas uruchamiania pierwszej wersji elektroniki na PCB bazowej wyszedł na jaw błąd braku lustrzanego odbicia połączeń złącza goldpin wyświetlacza dla przyjętego sposobu wlutowania listwy goldpin od strony "bottom" PCB wyświetlacza. Stąd konieczność użycia dodatkowej PCB uniwersalnej pomiędzy wyświetlaczem i przewodem taśmowym z żeńskim wtykiem IDC, na której to PCB trzeba było zamienić piny 1<->2, 3<->4 itd, by uzyskać prawidłowe podłączenie poszczególnych sygnałów do odpowiednich pinów listwy goldpin na PCB wyświetlacza.
Ponadto okazało się, że w głośniku były słyszalne zakłócenia pochodzące od przydźwięku sieciowego oraz od pracy elektroniki mptrójki. Stąd wynikła konieczność wprowadzenia zmian w połączeniach na PCB (wykonanych metodą cięcia i krosowania ścieżek) i dodania / usunięcia części podzespołów.
Obecnie schemat ideowy oraz sam projekt płytki bazowej w dołączonej dokumentacji uwzględnia już wprowadzone zmiany i modyfikacje. Oprócz tego zaproponowałem też sam schemat ideowy kompletnego radioodtwarzacza, gdyby ktoś chciałby go budować od podstaw. Jednakże wtedy trzeba sobie samodzielnie zaprojektować odpowiednią PCB do wybranej przez siebie obudowy.
Istnieje też możliwość zamiennego użycia wyświetlacza VFD (użyłem M0220SD‐202SDAR1 kupiony w DigiKey) lub LCD 2002A (np. takiego: https://kamami.pl/wyswietlacze-lcd-alfanumery...686-lcd-ac-2002a-yiy-yg-e6-5906623491759.html ; ten sam pinout i wymiary). Pamiętać trzeba o odpowiednim podłączeniu 16-pin wtyku IDC do 14-pin złacza wyświetlacza VFD - piny 15 i 16 wtyku IDC są niewykorzystane. Natomiast podłączając LCD, trzeba uzupełnić zworę JP1, by móc ustawić prawidłowy kontrast potencjometrem R1.
Można też zastosować wyświetlacz 2x16 znaków - trzeba odpowiednio zmienić definicję LCD_CHARS_IN_ROW w pliku lcd_functions.h i być może odpowiednio zmodyfikować niektóre pliki *.c.
W przypadku chęci użycia wyświetlacza VFD zalecam zastosowanie przetwornicy np. KPSB6-9 z TME w miejsce transformatora TS5/14. W moim radioodtwarzaczu, pomimo całkowitego poboru prądu na poziomie ok. 320mA, transformator ten dość mocno się grzeje (do jakichś 45stC). W przypadku użycia LCD transformator ten nie powinien już tak mocno się grzać.
Teraz parę słów o przygotowaniu PCB starej mptrójki do pełnienia nowej funkcji:
1. Usunąć z PCB (wylutować): przyciski S2...S6; diody: D8, D9; rezystory: R20, R26; gniazda: ładowarki J2 i słuchawkowe J3
2. Wykonać dodatkowe połączenia przewodowe na tej PCB:
- anoda D12 z padem katody D9
- pad 8 gniazda FFC LCD1 do pada PA19 mikrokontrolera (znajduje się między padami wylutowanych przycisków S4 i S5)
- pad 9 gniazda FFC LCD1 do pada R26 połączonego bezpośrednio z PA20 (pin 16) mikrokontrolera
- pad 10 gniazda FFC LCD1 z padem R13 na potencjale 3,3V przychodzącym ze stabilizatora U2 (LD2985)
- pady styków NO wylutowanego przycisku S6
3. Wlutować męskie goldpiny do padów po stronie warstwy bottom, po UPRZEDNIM!! spasowaniu z odpowiednimi otworami na bazowej PCB (miejsca wlutowania goldpinów zaznaczyłem czerwonymi obwódkami na zdjęciu warstwy bottom PCB starej mptrójki):
- pady styków NO wylutowanego przycisku S5 dołączonych do PA27 (pin 37) mikrokontrolera
- pady styków NO wylutowanego przycisku S4 dołączonych do PA26 (pin 26) mikrokontrolera
- pady styków NO wylutowanego przycisku S2 dołączonych do PA24 (pin 23) mikrokontrolera
- pady diody D8
- pady JP3 (jest to UART mikrokontrolera)
- pad PA28 mikrokontrolera (znajduje się między mikrokontrolerem i gniazdem FFC). Tu UWAGA!! - uważać, by nie przebić podczas lutowania tego goldpina slotu karty SD umieszczonego po drugiej stronie PCB - może uniemożliwić włożenie karty.
- pady wylutowanego gniazda J2, doprowadzających masę i 5V do PCB starej mptrójki
- pady wylutowanego gniazda J3, wyprowadzających masę i sygnały lewego i prawego kanału.
Tu rozwinę trochę punkt 3 - spasowanie ma polegać na tym, by możliwe było osadzenie płytki starej mptrójki "na kanapkę" na PCB bazowej oraz jej przykręcenie dwiema śrubkami M2,5 do odpowiednich kołków dystansowych wlutowanych do PCB bazowej. Aby to zapewnić, proponuję zrobić tak:
- przykręcić do otworów mocujących płytkę starej mptrójki dwa kołki dystansowe 11mm za pomocą śrub M2,5
- na goldpiny nałożyć żeńskie gniazda BL1.5.G z TME (można je rozcinać na pojedyncze gniazda)
- starać się ucelować tak, by gwinty zewnętrzne kołków dystansowych oraz końcówki lutownicze goldpinów oraz nałożonych gniazd weszły w odpowiednie otwory na PCB bazowej. Przylutować końcówki lutownicze i przykręcić nakrętkami / przylutować kołki dystansowe do PCB bazowej. W efekcie powinno być możliwe łatwe rozłączenie i złączenie obu płytek razem. Jedno ze zdjęć przedstawia wlutowane w PCB bazową gniazda goldpinów oraz kołki dystansowe do podłączenia i umocowania "na kanapkę" płytki starej mptrójki.
Poniżej przedstawiam listę ważniejszych podzespołów użytych do budowy radioodtwarzacza:
1. Enkoder Alps EC12E1220813 (DigiKey)
2. Wyświetlacz VFD M0220SD‐202SDAR1 (DigiKey) lub LCD-AC-2002A-YIY Y/G-E6 (Kamami)
3. Gniazda żeńskie goldpin BL1.5.G (TME)
4. Gniazdo FFC MX-52207-1685 (już wycofane z oferty), podobne gniazdo MX-52207-1633 (TME)
5. Taśma FFC 10-16-A-0101-C (TME)
6. Tuleja dystansowa TFF-M3X9/DR114 (TME) - mocowanie wyświetlacza do wewnętrznego frontpanelu
7. Tuleja dystansowa TFM-M2.5X11/DR222 (TME) - mocowanie PCB starej mptrójki do PCB bazowej
8. Plastykowa śrubka DR8G202M3X16 (TME) - mocowanie PCB bazowej do obudowy w pobliżu przyłącza 230VAC
9. Przewód CAB-MUSB-A5/0.15 (TME) - wyprowadzenie USB z PCB mptrójki na tylną ściankę radioodtwarzacza
10. gniazdo USB-03C-BK (TME) - gniazdo USB na tylnej ściance radioodtwarzacza.
Koszty budowy: jakieś 600zł (Wyświetlacz z DigiKey, wykonanie PCB w Satlandzie, brakująca drobnica z TME typu obudowa, śrubki, kołki dystansowe, potrzebne gniazda, przewód USB, taśma FFC, transformator, pokrętła). Reszta była w moich leżakujących zapasach
Kody źródłowe napisałem w IDE Rowley Crossworks ver 2.0.11 dla mikrokontrolera oraz w IDE Arduino ver 1.8.19 dla modułu ESP8266-01.
Schematy ideowe, projekt PCB bazowej i Gerbery wykonałem w Protelu 99 SE.
Dokumentacja zawiera: kod źródłowy i wsad do mikrokontrolera, kod źródłowy do modułu ESP8266-01, schematy, projekt PCB bazowej, widok PCB z zaznaczonymi ograniczeniami wysokości podzespołów na niej i Gerbery.
Filmiki prezentują wygląd wyświetlacza podczas słuchania stacji radiowej oraz wygląd i działanie układu uruchomieniowego.
Acha, na moim profilu na fb można prześledzić etapy powstawania radyjka
Pozdrawiam, KT
Fajne? Ranking DIY