
Witam wszystkich,
Chciałbym tym razem przedstawić projekt gotowego radiomagnetofonu internetowego. Jest to rozwinięcie opublikowanego wcześniej na Elektrodzie małego odtwarzacza MP3.
Radiomagnetofon umożliwia granie strumieni radiostacji internetowych, nagrywanie tych strumieni na kartę SD, nagrywanie z mikrofonu na kartę SD, odtwarzanie plików MP3, WMA, AAC (też HE-AAC), FLAC z karty SD.
Po podłączeniu do komputera przez USB radiomagnetofon widziany jest jako jeden lub dwa napędy, zależnie od tego, czy w momencie podłączenia USB karta SD jest obecna w slocie, czy też nie.
Radiomagnetofon ma zaimplementowane podstawowe metody oszczędzania energii: wyciemnianie podświetlenia wyświetlacza, wyłączanie zasilania w przypadku bezczynności, zmniejszenie częstotliwości taktowania mikrokontrolera do 48MHz podczas grania plików MP3, AAC z bitrate < 56kb/s i FLAC z karty SD oraz nagrywania z mikrofonu, zmniejszenie częstotliwości taktowania mikrokontrolera do 72MHz podczas grania plików MP4, WMA i AAC z bitrate >= 56kb/s. W pozostałych przypadkach mikrokontroler taktowany jest zegarem 96MHz.
Dane techniczne:
1. dekodowanie strumieni MP3, AAC, HE-AAC, WMA, MP4, FLAC podczas odtwarzania muzyki z karty SD
2. dekodowanie strumieni MP3, AAC, HE-AAC podczas grania radia internetowego
3. nagrywanie z wbudowanego mikrofonu elektretowego i zapis nagrań w postaci plików FLAC na kartę SD
4. również nagrywanie słuchanej audycji radiowej w postaci pliku AAC lub MP3 na kartę SD
5. zasilanie z dwóch akumulatorków AAA/R3 800mAh lub z zasilacza 5V/500mA (np. z odpowiedniej ładowarki do telefonu komórkowego)
6. kontrola ładowania akumulatorków realizowana przez specjalizowany układ scalony
7. możliwość współpracy z komputerem przez USB jako Mass Storage Device
8. wymiary zewnętrzne (Długość x Szerokość x Grubość) 84x60x22mm
9. masa 112g.
Większość czynności obsługowych radiomagnetofonu wykonuje się poprzez ekran dotykowy wyświetlacza, kilka przycisków służy jedynie do podstawowej obsługi radiomagnetofonu, typu włączenie zasilania, pauza i wznowienie grania po pauzie oraz stop grania, regulacja głośności. Przycisk włączający zasilanie (podświetlany migającą diodą) służy również do odblokowania ekranu dotykowego, który blokuje się po wyciemnieniu podświetlenia LCD. Powyższe właściwości umożliwiają korzystanie z radiomagnetofonu trzymanego np. w kieszeni, bez wyciągania go.
Pojemność w pełni naładowanych akumulatorków wystarcza na ok. 8h odtwarzania muzyki z karty SD i nagrywania z mikrofonu na kartę SD. Natomiast w przypadku słuchania radia, czas ten wynosi ok. 2h, z uwagi na bardzo duży pobór prądu przez moduł WiFi - zalecam tutaj korzystanie z zewnętrznego zasilacza/ładowarki podczas słuchania radia.
Sam program mikrokontrolera radiomagnetofonu wydaje się stabilnie działać (podczas dwumiesięcznej eksploatacji), niemniej jednak dołożyłem w procedurze obsługi wyjątku Hardfault funkcję powodującą reset mikrokontrolera.
Pierwsze prace nad tym projektem rozpocząłem od opanowania obsługi wyświetlacza LCD (wątek https://www.elektroda.pl/rtvforum/topic2606807.html) i obsługi kart SD (wątek https://www.elektroda.pl/rtvforum/topic2648211.html w roku 2013. Potem, rok później, zaimplementowałem odtwarzacz i nagrywarkę (wątek https://www.elektroda.pl/rtvforum/topic2920643.html ). Po upływie kolejnego roku uruchomiłem radioodbiornik internetowy (wątek https://www.elektroda.pl/rtvforum/topic3092250.html ). Obecnie przedstawiam docelowe urządzenie.
Ponieważ w podanych wątkach przedstawiłem opisy działania poszczególnych modułów, to teraz uwagę skupię na opisie montażu i uruchomienia całości, gdyż radiomagnetofon jest dość złożonym urządzeniem.
Montaż proponuję zacząć od polutowania płytki zasilacza i modułu WiFi. Na tejże płytce najpierw polutować układy scalone, przy czym podczas montażu układu U6 nie zapomnieć o przylutowaniu jego padu termicznego do padu GND na płytce, wykorzystując w tym celu metalizowany otwór w tym padzie GND. Następnie polutować pozostałe elementy SMD oraz LED D1 i D2, przy czym montaż cewki L1 oraz modułu WiFi U1 pozostawić na koniec po uprzednim przylutowaniu listwy goldpinów J1. Podczas lutowania LED zwrócić uwagę, aby wyprowadzenia LED były obcięte równo z powierzchnią PCB i nie utworzyły się krople z cyny od strony złącza J3, gdyż to złącze przeznaczone jest dla złącza wyjściowego programatora PICKIT2. Następną czynnością będzie przylutowanie listwy goldpinów złącza J1. Aby to zrobić dobrze - ma później wejść w odpowiednie gniazdo na płytce z mikrokontrolerem, proponuję zrobić tak:
przygotować sobie dwa kołki dystansowe o długości 8mm z gwintem zewnętrznym i wewnętrznym M3, które należy włożyć w odpowiednie otwory w płytce z mikrokontrolerem i umocować nakrętkami. Gwint M3 z tej racji, że zapewni bezluzowe ustalenie wzajemnego położenia obu płytek. Następnie do gniazda ZL265-20DG z TME włożyć uciętą na odpowiednią długość listwę goldpin C6200-34BDGATPR z TME i następnie całość włożyć w miejsce złącza J2 na płytce z mikrokontrolerem. Jeszcze nie lutować tego gniazda. Następnie śrubkami M3 przymocować płytkę zasilacza do uprzednio umocowanych kołków dystansowych. Końcówki lutownicze listwy goldpin powinny trafić na odpowiednie pady złącza J1 płytki zasilacza i modułu WiFi. Przylutować te końcówki lutownicze, do których jest dostęp, do padów. Następnie rozkręcić obie płytki, rozdzielić je od siebie, zdjąć gniazdo z listwy goldpin i polutować pozostałe końcówki lutownicze listwy goldpin do padów złącza J1 na płytce zasilacza i modułu WiFi. Dopiero teraz można zamontować na płytce zasilacza i modułu WiFi cewkę L1 i sam moduł WiFi U1. Przed przylutowaniem modułu WiFi do płytki zalecam podłożenie między moduł a powierzchnię PCB, na której będzie ten moduł leżał, prostokątnej podkładki izolacyjnej wyciętej z cienkiej folii (np. z woreczka). Wymiary tej podkładki powinny być nieco mniejsze od wymiarów płytki modułu WiFi (tak ok. 1mm z każdej strony), ponadto w tej podkładce należy wyciąć prostokątny otwór na pad GND modułu WiFi, który powinien mieć elektryczny kontakt z padem GND na montowanej płytce. Zapewnić ten kontakt kroplą cyny, wykorzystując w tym celu metalizowany otwór w padzie GND na montowanej płytce.
Po zmontowaniu płytki należy ją uruchomić oraz później zaprogramować moduł WiFi nowym wsadem.
W tym celu podłączyć dwa szeregowo połączone akumulatorki NiMH do goldpinów "batt" przez mikroamperomierz, zwracając uwagę na ich biegunowość. Sprawdzić wskazania mikroamperomierza, prąd powinien ustabilizować się na poziomie ok. 180uA. Sprawdzić napięcie na wyjściu U5 (najwygodniej mierzyć na rezystorze R2), powinno być ok. 3,4V. Sprawdzić napięcie na stabilizatorze U4, powinno być ok. 3,3V. Na pozostałych stabilizatorach U3, U2 powinno być 0V, gdyż ich wejścia Inhibit są połączone z masą.
Następnie odłączyć akumulatorki, zamiast nich podłączyć miliamperomierz i do pinów 17,18 złącza J1 oraz masę podać napięcie 5V z zasilacza o wydajności ok. 500mA. Sprawdzić obecność prądu ok. 40mA oraz świecenie LED D2 ("charging"). Odłączyć i następnie znów podłączyć miliamperomierz bez odłączania zasilania 5V. Prąd powinien wzrosnąć do ok. 200mA, jest to prąd ładowania akumulatorków. Pomierzyć obecność napięć na wyjściach układów U5 i U4, powinny być takie same, jak poprzednio. Po wykonaniu powyższego odłączyć zewnętrzny zasilacz i akumulatorki.
Następnym krokiem będzie uruchomienie stabilizatorów U3 oraz U2. W tym celu należy na ich wejścia Inhibit podać napięcie 3,4V z wyjścia układu U5. Najwygodniej jest to zrobić, przylutowując końce przewodów do padów POWER_ON i RADIO_ON złacza J1, drugie zaś końce tych przewodów dolutować do padów rezystora R2. Podłączyć akumulatorki przez miliamperomierz. Prąd powinien być ok. 40mA. Powinno pojawić się ok. 3,3V na wyjściach układów U3, U2. Jeśli powyższe czynności dadzą pozytywny rezultat, to można spróbować połączyć się z modułem WiFi i zaprogramować go nowym wsadem. Można to zrobić na dwa sposoby:
Pierwszym sposobem będzie podłączenie modułu WiFi do portu szeregowego komputera z wykorzystaniem odpowiedniego konwertera poziomów logicznych np. MAX3232 (zasilanie do tego konwertera można wziąć z pinów 3.3V, GND złącza J3) lub z wykorzystaniem przejściówki RS232<->USB, przy czym przejściówka ta powinna również udostępniać sygnały RTS, CTS - są one potrzebne dla modułu WiFi. Ja wykorzystuję do tego przerobioną przejściówkę ZL4USB Kamami (przeróbka polega na wyprowadzeniu sygnałów RTS, CTS poprzez transoptor na jej złącze goldpin). Na komputerze musi być zainstalowany program Bluegiga WF121 GUI. Instalator tego programu jest w pliku Bluegiga_wifi-1.2.2-63.zip - można go próbować szukać na stronie Silicon Labs (firma, która wykupiła Bluegiga). Podłączyć moduł WiFi do komputera wykorzystując złącze sygnałowe J2 oraz zasilanie i masę wyprowadzone na złącze J3, uruchomić wspomniany program. Wybrać w tym programie odpowiedni port szeregowy oraz prędkość 115200, nacisnąć przycisk "Attach". Następnie przyciskami "Reset" oraz "Retrieve info" sprawdzić komunikację z modułem WiFi - ten powinien odpowiadać w oknie terminala tego programu. Następnie przejść do zakładki "Network", odczytać i zanotować adres MAC. Dalsze czynności podczas programowania modułu dokładniej opisane są tutaj: https://www.elektroda.pl/rtvforum/topic3092250.html
Drugim sposobem będzie wykorzystanie do tego celu programatora PICKIT2 (lub jego odpowiednika AVT5279) lub PICKit3 wraz z odpowiednim PICKit Programmer. Podłączyć programator PICKIT do złącza J3 na płytce zwracając uwagę na prawidłowość połączeń płytki z programatorem. Dalszy opis postępowania jest również podany w powyższym linku.
Po wykonaniu powyższych czynności usunąć wszystkie dodatkowe połączenia przewodowe na tej płytce - płytka jest już wstępnie uruchomiona oraz moduł WiFi na niej zaprogramowany nowym wsadem.
Teraz można zająć się montażem płytki mikrokontrolera. Tu również rozpocząć od polutowania układów scalonych oraz złącza J4 z gęstym rastrem wyprowadzeń. Jako złącze J4 zastosować złącze FFC o oznaczeniu XF3M40151BR100 lub XF2M40151AR100 z TME. Przed montażem złącza J4 przylutować rezystory R30 i R31. UWAGA: niestety, nie ustrzegłem się błędu na płytce mikrokontrolera, polegającego na odwróceniu numeracji pinów tego złącza J4, w stosunku do numeracji pinów taśmy przyłączeniowej wyświetlacza LCD. Dopiero błąd ten wyszedł na jaw przy uruchamianiu płytki mikrokontrolera. W związku z tym konieczne jest zastosowanie dodatkowej płytki-przejściówki wraz z 5cm odcinkiem taśmy FFC z Farnella (nr 190-8533) między złączem J4 na płytce mikrokontrolera a taśmą przyłączeniową wyświetlacza LCD. Montaż gniazda złącza J2 pozostawić na sam koniec. Przed przylutowaniem gniazda USB również zalecam podłożenie pomiędzy to gniazdo i powierzchnię PCB podkładki izolacyjnej wyciętej z cienkiej folii. Kondensator C50 i rezystor R11 wlutować po przylutowaniu slotu karty SD. Podczas montażu slotu SD zwrócić uwagę, aby kołki ustalające slot weszły w odpowiednie otwory na PCB, a sam slot leżał płasko na powierzchni PCB. Diodę świecącą D4 i rezystror R32 można zamontować na czas uruchamiania układu, potem można zostawić lub zdemontować. Jej zadaniem jest sygnalizacja, że mikrokontroler dostarcza dane do DAC w sposób ciągły. Jednak podczas montażu D4 należy ją przylutować tak, aby jej katoda była skierowana w stronę mikrofonu MK1. Po przylutowaniu elementów SMD można lutować elementy przewlekane. Podczas montażu mikrofonu elektretowego zwrócić uwagę na jego biegunowość - obudowa mikrofonu ma być połączona z masą analogową AGND. Podczas montażu gniazda słuchawkowego J1 i Goldcap'a C42 zachować właściwą kolejność montażu - najpierw montować gniazdo słuchawkowe, przed przylutowaniem obciąć jego wyprowadzenia równo z powierzchnią PCB. Dopiero potem montować Goldcap'a C42, przycinając tak jego wyprowadzenia, by nie dotykały gniazda słuchawkowego po drugiej stronie PCB, a sam GoldCap był jak najbliżej powierzchni PCB. Przed przylutowaniem gniazda żeńskiego J2 proponuję najpierw nałożyć je na uprzednio przylutowaną listwę goldpinów na PCB zasilacza i modułu WiFi. następnie w odpowiednie otwory na PCB bazowej włożyć kołki dystansowe M3 i przymocować je nakrętkami - zwrócić przy tym uwagę, by nie uszkodzić elementów SMD w ich pobliżu. Następnie nałożyć płytkę zasilacza i modułu WiFi na płytkę bazową tak, aby końcówki lutownicze gniazda J2 weszły w odpowiednie otwory na PCB bazowej, skręcić całość śrubkami M3 i polutować te końcówki lutownicze. Dopiero po tym można rozkręcić całość i rozdzielić od siebie obie płytki. Do ostatecznego połączenia razem obu płytek zalecam użycie dwóch kołków dystansowych długości 7mm z gwintem zewnętrznym i wewnętrznym M2,5. Same kołki można wlutować w odpowiednie metalizowane otwory w PCB mikrokontrolera. Przed ostatecznym złożeniem obu płytek razem najpierw podłączyć wyświetlacz LCD do gniazda J4 na PCB mikrokontrolera wykorzystując do tego płytkę-przejściówkę i taśmę FFC. Następnie włożyć do złącza JP1 wtyczkę IDC10 (by ułatwić sobie ułożenie taśmy samego wyświetlacza), następnie wstępnie odpowiednio ułożyć taśmę FFC wraz z płytką-przejściówką pomiędzy składanymi ze sobą płytkami, następnie po złożeniu obu płytek razem, należy całość skręcić śrubkami M2,5 do wlutowanych uprzednio kołków. Dopiero potem można przykleić klejącą dwustronnie taśmą klejącą wyświetlacz w odpowiednim polu na płytce zasilacza i modułu WiFi, przy czym lepiej kleić wyświetlacz za pomocą dwóch wąskich pasków taśmy klejącej, by ewentualnie później w razie potrzeby można było w miarę łatwo go oderwać od miejsca przyklejenia. Po złożeniu całości sprawdzić możliwość i łatwość wyjmowania i wkładania wtyczki IDC10 do złącza JP1.
Po zmontowaniu całej płytki bazowej należy ją uruchomić i zaprogramować mikrokontroler na niej. W tym celu połączyć obie płytki i podać zasilanie z akumulatorków poprzez miliamperomierz. Pobór prądu powinien wynieść ok. 6,2mA, napięcie dochodzące do mikrokontrolera powinno być ok. 3,3V - sprawdzić na pinach 2, 10 złącza miniJTAG JP1. Następnie można podjąć próbę zaprogramowania mikrokontrolera. Można to zrobić na dwa sposoby. Pierwszy sposób będzie polegał na wykorzystaniu programatora STLink z jakiejś płytki Discovery oraz programu STM32 ST-Link Utility. W tym celu na płytce Discovery zdjąć jumpery "Discovery", jumper podający zasilanie na wbudowany mikrokontroler, oraz połączyć wyjście SWD z płytki Discovery do złącza miniJTAG następująco: SWDIO -> TMS (pin 3 JP1); SWCLK -> TCK (pin 5 JP1); NRST -> NRST (pin 9 JP1); GND -> GND (pin 10 JP1) możliwie krótkimi przewodami, po czym podłączyć płytkę Discovery do komputera i w programie STM32 ST-Link Utility podjąć próbę połączenia się z mikrokontrolerem STM32F407. Gdy ta próba się powiedzie, można zaprogramować mikrokontroler plikiem ODTWARZACZ.HEX. Drugi sposób zaprogramowania będzie wymagał użycia środowiska IDE Rowley Crossworks w wersji 2.0.11 (w tym pisałem program) wraz zainstalowaną paczką "STMicroelectronics STM32 CPU Support Package" w wersji pomiędzy 2.13 do 2.18 (ważne - inne wersje powodują błąd linkera lub błąd "loader error: unsupported device" podczas próby zaprogramowania mikrokontrolera) oraz programatora Macraigor Wiggler wraz z kabelkiem JTAG - miniJTAG lub programatora ST-Link. Połączyć jeden lub drugi programator ze złączem miniJTAG JP1, uruchomić IDE, załadować w nim projekt odtwarzacza, w tym IDE połączyć się z odpowiednim programatorem, w "Project Explorer" wybrać "THUMB Release", następnie w "Build" -> "Build and Run" skompilować i załadować projekt do mikrokontrolera. Ten drugi sposób umożliwia też debug programu, w tym celu wybrać w "Project Explorer" -> "THUMB Debug", następnie w "Build" -> "Build and Debug" skompilować i załadować projekt do mikrokontrolera, po czym można krokowo wykonywać program projektu.
Po zaprogramowaniu mikrokontrolera radiomagnetofon powinien podjąć normalną pracę. Sprawdzić prąd pobierany z akumulatorków - powinien być na poziomie ok 110mA podczas wyświetlania zawartości SD i ok. 90mA podczas grania pliku z karty. Podłączyć radiomagnetofon do komputera przez USB. Powinien pokazać się przynajmniej jeden dysk wymienny, który będzie wymagał sformatowania. We właściwościach tego dysku można sprawdzić pojemność - będzie 2MB. Sformatować ten dysk i nazwać go STATIONS. Następnie po formacie wgrać do głównego katalogu tego dysku plik STATIONS.TXT. W przypadku, gdy w slocie jest karta SD, pokaże się drugi dysk wymienny, po otworzeniu którego będzie widoczna zawartość karty SD w slocie. Odłączyć USB, potem w menu "Settings" ustawić czas i datę oraz spróbować połączyć się z siecią WiFi. Następnie można sprawdzić funkcjonowanie całego radiomagnetofonu. Można też spróbować zmierzyć pobór prądu podczas grania radia - u mnie był on na poziomie ok. 400mA
Teraz koszty - niestety niemałe. Szacuję koszt samych części na poziomie ok. 1000zł (3szt. PCB ok. 180zł, moduł WF121 ok. 150zł, wyświetlacz ok. 100zł, główne układy scalone ok. 200zł (mikrokontroler, kodek, układ ładowarki), pozostała drobnica resztę, gdyby wszystko kupować.
Źródła zakupów części:
Wekton Electronics lub ElfaDistrelec - wyświetlacz LCD DEM240320E-TMH-PW-N(A-Touch), kiedyś był dostępny w TME
Conrad - układy TLV320AIC23, LTC4060, tranzystor FDG312P, dioda PMEG2005EJ
Electropark - stabilizator LD3985 3,3V
Farnell - taśma FFC 40pin, nr 190-8533
TME - pozostałe części
Octopart - tranzystory PMF400UN
Płytki wykonane w Satland Prototype, wszystkie płytki dwuwarstwowe, płytka zasilacza oraz płytka mikrokontrolera z laminatu grubości 1mm,
płytka przejściówka z laminatu grubości 0,4mm. Schematy ideowe i projekty PCB wykonałem w Protelu 99SE. W dokumentacji elektronicznej jest też poglądowy schemat ideowy całego urządzenia.
Pozdrawiam, KT






Cool? Ranking DIY