Elektroda.pl
Elektroda.pl
X
Please add exception to AdBlock for elektroda.pl.
If you watch the ads, you support portal and users.

Mały radiomagnetofon internetowy na STM32F407VGT6

Tytus Kosiarski 01 May 2017 20:34 13488 36
Eltrox Hurton
  • Mały radiomagnetofon internetowy na STM32F407VGT6

    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

    Mały radiomagnetofon internetowy na STM32F407VGT6 Mały radiomagnetofon internetowy na STM32F407VGT6 Mały radiomagnetofon internetowy na STM32F407VGT6 Mały radiomagnetofon internetowy na STM32F407VGT6 Mały radiomagnetofon internetowy na STM32F407VGT6 Mały radiomagnetofon internetowy na STM32F407VGT6

    Cool? Ranking DIY
    About Author
    Tytus Kosiarski
    Level 15  
    Offline 
    Has specialization in: programowanie mikrokontrolerów
    Tytus Kosiarski wrote 239 posts with rating 397, helped 10 times. Been with us since 2007 year.
  • Eltrox Hurton
  • #2
    djkomprez
    Level 21  
    1000zł ??? Masz chłopie wene twórczą ;)
    Osobiście nie poszedł bym w takie koszta szczególnie, że wykonanie czegoś takiego na innych podzespołach wyjdzie znacznie taniej ...
    Samo radio internetowe na upartego sam zrobiłem na ESP8266 na PWM i grało znośnie ;)
    A tak na marginesie radiomagnetofon to raczej mało odpowiednia nazwa dla tego urządzenia bo sama nazwa wskazuje że magnetofon opiera się na zapisie magnetycznym ... u Ciebie cyfrowym.
    Nie żebym się czepiał ale podoba mi się wykonanie a szczególnie szacun za te poniesione koszta ...
  • #4
    Tytus Kosiarski
    Level 15  
    Witam

    Dzięki za słowa uznania :) Ten koszt rozłożył się w kilkuletnim czasie, toteż nie było to tak odczuwalne dla kieszeni ;) Ale rzeczywiście, całość wymagała wytrwałości.

    Djkomprez - dzięki za podpowiedź odnośnie modułu WiFi. Zastosowany przeze mnie WF121 jest bardzo uciążliwy w oprogramowaniu i obsłudze. Można tyle powiedzieć, że działa...
    Jeśli chodzi o nazwę, to chciałem nawiązać choć nazwą do kultowego dla mnie RB3200 :)

    Pozdrawiam, KT
  • #5
    Anonymous
    Anonymous  
  • #7
    Duch__
    Level 31  
    djkomprez wrote:

    Samo radio internetowe na upartego sam zrobiłem na ESP8266 na PWM i grało znośnie ;)


    Napisz coś proszę o tym.
  • #8
    krzbor
    Level 25  
    Jeśli jednak ktoś chciałby zgrać trochę utworów z internetowego radia (za darmo :)) to polecam program RadioSure. Darmowa wersja pozwala na zgrywanie jednego kanału. Można nagrać trochę utworów do posłuchania w samochodzie.
  • Eltrox Hurton
  • #9
    lukashb
    Level 39  
    Ciekawi mnie, czy jest możliwość odtwarzania z radia strumienia i jednocześnie podając sygnał na wejście D/A nagrywać go do WAV np bądź mp3. Zrobić to co kolega wyżej pisze, zgrywać radio internetowe do pliku. Pewnie wymagało by to sporej przeróbki programu, nagrywanie w tle bądź odtwarzanie. Ciężka sprawa żeby to pogodzić łącznie...
  • #10
    Tytus Kosiarski
    Level 15  
    No właśnie to jest. Można nagrywać strumień jednocześnie go słuchając. Nagrywanie idzie w tle, jak w dawnych radiomagnetofonach, stąd taka nazwa urządzenia. Nagrywany jest plik MP3 lub AAC zależnie od formatu strumienia słuchanej właśnie stacji radiowej.
  • #11
    lukashb
    Level 39  
    Widać gdzieś mi umknęło :) w takim razie dla mnie urządzenie jeszcze bardziej przydatne. Osobiście gdybym miał wiedzę "jak się zabrać" za tego typu rejestrator zrobiłbym urządzenie do nagrywania rozmów z radiotelefonów na przykład, do tego karta sieciowa i dostęp do nagrań po FTP. Ale niestety zbyt to skomplikowane jak dla mnie, a szkoda bo widać ma potencjał :) Pozdrawiam
  • #12
    djkomprez
    Level 21  
    Duch__ wrote:
    djkomprez wrote:

    Samo radio internetowe na upartego sam zrobiłem na ESP8266 na PWM i grało znośnie ;)


    Napisz coś proszę o tym.


    Na życzenie wstawiam ... mam nadzieję że autor się nie obrazi a będzie to inspiracją do upgrejdów i nauki ;)


    To co ja wykorzystałem to jest z tej strony


    przy hardkorowej wersji nie używa się I2C tylko PWM i jest tam opis jak to zrobić ;)
    dla mniej wtajemniczonych przykładowe podłączenie :
    Mały radiomagnetofon internetowy na STM32F407VGT6

    a tu mój filmik jak to działało u mnie wpięte w głośniki komputerowe

    Link
  • #13
    Tytus Kosiarski
    Level 15  
    Djkomprez - super :) Nawet nie wiedziałem, że można w taki prosty sposób to zrobić. Projekt nawet wykorzystuje bibliotekę mad, która wydaje mi się, chyba jest lepsza od biblioteki Helixa.

    Dla malkontentów odnośnie nazwy - proszę przysyłać na priv propozycję nazwy urządzenia. Tylko proszę bez łamańców i wygibasów językowych. Jedna propozycja już padła - radiocyfrofon :) Na googlach znalazłem "kartopamięciofon".
    Jedynym kryterium przyjęcia nowej nazwy dla urządzenia będzie ilość wyników zwracanych przez Google dla podanej nazwy. Na razie jest "radiomagnetofon" - jednoznacznie się każdemu człowiekowi kojarzący, do czego to urządzenie, tak nazywane, służy. Google po wpisaniu "radiomagnetofon elektroda" wyświetla też obrazki mojego urządzenia.

    Pozdrawiam
  • #14
    Duch__
    Level 31  
    djkomprez wrote:
    Duch__ wrote:
    djkomprez wrote:

    Samo radio internetowe na upartego sam zrobiłem na ESP8266 na PWM i grało znośnie ;)


    Napisz coś proszę o tym.


    Na życzenie wstawiam ... mam nadzieję że autor się nie obrazi a będzie to inspiracją do upgrejdów i nauki ;)


    To co ja wykorzystałem to jest z tej strony

    przy hardkorowej wersji nie używa się I2C tylko PWM i jest tam opis jak to zrobić ;)
    dla mniej wtajemniczonych przykładowe podłączenie :
    Mały radiomagnetofon internetowy na STM32F407VGT6

    a tu mój filmik jak to działało u mnie wpięte w głośniki komputerowe

    Link


    Jak to skompilować?
  • #15
    miszczo997
    Level 28  
    Potrzeba:
    http://www.esp8266.com/viewtopic.php?f=9&t=820
    + to
    thanks for sharing this project!
    It was good work. but a few points should be noted:
    1- Make sure in your PC there is c:\Python27 and C:\Python27\Lib\site-packages\pyserial-2.7
    2- IN Eclipse, Project-> Properties-> C / C ++ build-> environment ->CWD.
    your path\mp3decode ghange to your path\mp3decode\ ------ yes just add "\"------
    3- R/C lowpass filter,100 ohm in series with the output, 100NF from there to ground and speaker connected to capacitor.
    I hope to help you.
    + dobrze przejrzeć ten temat
    http://www.esp8266.com/viewtopic.php?f=11&t=3431&start=32

    Sam walczylem troche z mozliwoscia dodania kilku stacji i zmiany ich za pomocą przycisku, ale ten rtos to dla mnie magia. Jak nie dasz rady sam skompilowac to odezwij sie pw to zrobie to za Ciebie.
    Tutaj wersja dla samego ESP01 https://github.com/pvvx/mp3_decode
  • #16
    djkomprez
    Level 21  
    Tytus Kosiarski wrote:
    Djkomprez - super :) Nawet nie wiedziałem, że można w taki prosty sposób to zrobić. Projekt nawet wykorzystuje bibliotekę mad, która wydaje mi się, chyba jest lepsza od biblioteki Helixa.


    Nie ma za co ;)
    Niestety tak to już jest że każde indywidualne oprogramowanie pod ESP wymaga
    odpowiedniego przygotowania sobie kompilatora ;) Ja to zrobiłem sobie na Virtualboxie aby nie zgoneło a nie zaśmiecało mi komputera ;)

    Co do dalszych zabaw ja poprzestałem na testach ... spodobał mi się potencjał tego ESP a tak naprawde nie wierzyłem że to tak będzie ładnie grało ! Co prawda monofonia ale jak pisałem potencjał toto ma ogromny ...
  • #17
    Duch__
    Level 31  
    miszczo997 wrote:

    2- IN Eclipse, Project-> Properties-> C / C ++ build-> environment ->CWD.
    your path\mp3decode ghange to your path\mp3decode\ ------ yes just add "\"------


    Zrobiłem wszystko zgodnie z instrukcją i utknąłem na tym punkcie. Nie mam takiej opcji w Eclipse NEON.
  • #18
    miszczo997
    Level 28  
    U mnie w tym miejscu nie trzeba było nic zmieniać akurat. Mam tą samą wersję eclipse co Ty. Chodzi o upewnienie się, czy ścieżka do folderu z projektem kończy się backslashem. Po zaimportowaniu projektu klikasz prawym na liście projektów na cały folder z projektem->properties i upewniasz się czy ścieżka kończy się w ten sposób
    Mały radiomagnetofon internetowy na STM32F407VGT6
  • #19
    Duch__
    Level 31  
    Mam pliki:

    0x00000.bin
    0x09000.bin
    blank.bin
    esp_init_data_default.bin
    rapid_loader.bin
    rapid_loader_40m.bin

    Pod jakie adresy je wgrać bo nie umiem znaleźć żadnego wpisu?
  • #21
    Duch__
    Level 31  
    Dzięki! Działa!

    Pytanie kolejne. Czy udało się koledze ostatecznie zrealizować zmianę stacji radiowej?
  • #22
    miszczo997
    Level 28  
    Do tej pory nie, ale zamierzam jeszcze przy tym posiedzieć w wolnym czasie. To pewnie nie jest jakoś specjalnie trudne dla kogoś kto pracował na jakimkolwiek rtosie, ale dla mnie to nowość. Ogólnie też ciężko jest znaleźć jakieś sensowne stacje radiowe transmitowane w mp3, ponieważ większość obecnie nadawana jest w aac.
    Jak u kolegi z jakością? U mnie są straszne szumy na zwykłym filtrze RC. Myślałem nad zastosowaniem jakiegoś porządnego filtru dolnoprzepustowego(pasywnego), ale nie mogłem znaleźć nic ciekawego w sieci.
  • #23
    Duch__
    Level 31  
    Jakość jest dobra gdyby nie te szumy właśnie. Narazie mam filtr dolnoprzepustowy RC na 16kHz oraz 1,5kHz. Przy 16kHz szum nie do zniesienia, a przy 1,5kHz dźwięk jest płaski. Rozglądam się nad jakimś konwerterem i2s oraz pamięcią RAM, bo niektóre stacje szarpie. Ale co jak co jest potencjał w tym. Wymaga tylko pieszczot.
  • #24
    Tytus Kosiarski
    Level 15  
    Na radionomy.com jest trochę radiostacji nadających w mp3. Niestety z polskimi stacjami tam jest już gorzej.
  • #27
    Tytus Kosiarski
    Level 15  
    I jak to gra po podłączeniu DAC-a? Czy Duch__ 'u uruchomiłeś też stereo? W dekoderze Helixa bufor próbek PCM przechowuje 16-bit dane dla DAC w sposób: LRLRLR.... Możliwe, że podobnie będzie w dekoderze mad. Jak pamiętam, kiedyś czytałem, że generowane przez ten dekoder próbki PCM są 24-bit. Chyba, że gdzieś w nastawach można je przyciąć do 16-bit.
  • #28
    Duch__
    Level 31  
    Niestety mam problemy z odpaleniem TDA1543. Jak powinien wyglądać prawidłowo plik playerconfig.h?
  • #29
    miszczo997
    Level 28  
    Zakomentuj/usuń definicje (możesz ich nie mieć)
    Code: c
    Log in, to see the code

    i powinno działać. Jeżeli dalej będzie problem przeanalizuj funkcję sampToI2s() i porównaj z tym czego oczekuje tda(jak ma wyglądać ramka danych). W tej chwili wysyłane jest 16 bitów dla kanału lewego oraz powielone te same 16 bitów dla kanału prawego. Sprawdź, też dla pewności połączenie magistrali i2s wg opisu wyprowadzeń
    Mały radiomagnetofon internetowy na STM32F407VGT6
  • #30
    Duch__
    Level 31  
    Niestety nie działa. A może to wina tego że próbuję uruchomić to na esp12e na sofcie pod esp01? Dodam tylko że poprzez pwm działa na 12e. Dodatkowo nie mogę w eclipse kompilować softu z oryginalnego źródła - brak przycisków all i flashcode :|