Modułowy odtwarzacz MP3 (1)
W artykule przedstawiamy odtwarzacz MP3 wykonany na bazie gotowych, łatwych do kupienia modułów. Załóżmy, że mamy zbudować urządzenie, które musi informować obsługę o ważnych zdarzeniach za pomocą komunikatów głosowych.
W przypadku, kiedy to urządzenie będzie wykorzystywać komputer lub moduł embeded z wbudowanym systemem operacyjnym np. Linux, to sprawa jest w miarę prosta. Ale kiedy nie mamy do dyspozycji takich środków, to nawet przy zastosowaniu prostego mikrokontrolera można sobie poradzić, dołączając kartę pamięci SD i sprzętowy kodek. Jednak wtedy potrzebne będzie napisanie oprogramowania odtwarzania. Będzie to zadanie tym trudniejsze, im „słabszy” to będzie mikrokontroler. Najprostszym i zarazem najtańszym rozwiązaniem może się okazać zastosowanie specjalizowanego modułu odtwarzacz MP3. Jednym z nich jest moduł firmy Catalex z układem YX5300.
Odtwarzacz MP3 układem YX5300
Odtwarzacz MP3 z układem YX5300 jest oferowany przez firmę CATALEX. Po krótkim przeszukaniu Internetu nie znalazłem ani strony tej firmy, ani dokumentacji samego układu YX5300. Jest za to dostępny dokument Serial MP3 Player Manual, zupełnie wystarczający do zaaplikowania układu.
Za kompletną płytkę z układem YX5300 , stereofonicznym gniazdem słuchawkowym Jack 3,5mm i złączem karty microSD, zapłaciłem razem z przesyłką ok. 5 USD . Jest to cena bardzo atrakcyjna zważywszy na możliwości układu:
- Możliwość odtwarzania plików skompresowanych w formacie mp3 i nieskompresowanym WAV
- Wspierane częstotliwości próbkowania: 8kHz, 11,025KHz, 12KHz, 16kHz, 22,05kHz, 24kHz, 32kHz, 44,1kHz i 48kHz
- Możliwość użycia kart Micro SD (max 2GB) i Micro SDHC (max 32GB). Format FAT16, lub FAT32
- Sterowanie odtwarzaniem z wykorzystaniem interfejsu szeregowego UART pracującego z prędkością 9600 bodów
- Poziomy logiczne na magistrali: UART 3,3V, lub 5V TTL
- Napięcie zasilania: 3,2V….5,2V maksymalny pobór prądu 200 mA dla 5 VDC
- Wzmacniacz słuchawkowy wbudowany w odtwarzacz MP3
- Cyfrowa regulacja poziomu sygnału audio w 30 krokach
Oprócz wspomnianego gniazda słuchawkowego Jack, na płytce umieszczono 4-pinową listwę golpinów, przeznaczoną do podłączenia zasilania – piny GND i VCC – oraz linii interfejsu UART: RX i TX. Kierunek przesyłania danych jest oznaczony z punktu widzenia modułu. Zielona dioda D1 sygnalizuje gotowość do odtwarzania, pauzę odtwarzania (ciągłe świecenie) lub stan odtwarzania pliku (świecenie przerywane).
Komendy sterujące
Odtwarzacz wymaga, by pliki i katalogi na karcie SD miały nazwy zaczynające się od cyfr. Nazwa katalogu może być wyłącznie liczbą dwucyfrową na przykład 01, 02, 11, 23 itp. Nazwa każdego pliku musi się zaczynać od liczby trzycyfrowej na przykład 001-test1.mp3, 002-test2.mp3. Przykładowa struktura katalogów i nazw plików została pokazana na rysunku 1.
Rysunek 1. Struktura plików na karcie SD
Odtwarzacz identyfikuje pliki na dwa sposoby: komenda odtwarzania może podać numer katalogu i numer pliku w katalogu, stąd struktura plików pokazana na rysunku 2. Można też identyfikować pliki za pomocą indeksu. Indeks jest nadawany w momencie wgrywania na kartę. Inaczej mówiąc o kolejności odtwarzania decyduje kolejność nagrania plików na kartę.
Format komend
Sterowanie odtwarzaczem odbywa się poprzez wysyłanie do niego komend. Komendy mają format pokazany w tabeli 1.
Tabela 1. Format komend
Bajt (hex) | Opis | |
$S | 0x7E | Bajt startu – zawsze 0x7E |
VER | 0xFF | Informacja o wersji |
LEN | 0x06 | Ilość bajtów komendy bez bajtów startu i końca |
CMD | — | Kod komendy |
Feedback | 0x00, lub 0x01 | Potwierdzenie komendy: 00 – bez potwierdzenia, 01 – z potwierdzeniem |
Data[0]
…. Data[n] |
— | Parametry komendy – zazwyczaj 2 bajty, ale są dłuższe |
$0 | 0xEF | Bajt końca komendy |
Format komend sterujących
Zestaw najważniejszych komend sterujących pokazano w tabeli 2.
Tabela 2. Komendy sterujące
Komendy odtwarzania plików | Bajty komendy bez sumy CRC | Opis |
Następny utwór | 7E, FF, 06, 01, 00, 00, 00, EF | Następny utwór |
Poprzedni utwór | 7E, FF, 06, 02, 00, 00, 00, EF | Poprzedni utwór |
Odtwarzanie pliku z indeksem | 7E, FF, 06, 03, 00, 00, 01, EF
7E, FF, 06, 03, 00, 00, 02, EF |
Pierwszy plik (odtwarzaj)
Drugi plik (odtwarzaj) |
Odtwarzaj pliki na podstawie numeru folderu i pliku w folderze | 7E, FF, 06, 0F, 00, 01, 01, EF
|
Odtwarzaj plik 001-test1.mp3 z katalogu 01
Itp. |
Cykliczne odtwarzanie plików w folderze | 7E, FF, 06, 17, 00, 00, 01, EF | Cykliczne odtwarzanie plików w folderze 01 |
Grupowe odtwarzanie plików z indeksem | 7E, FF, 09, 21, 00, 05, 01, 02, 03, 04, EF
|
Odtwarzanie 5 plików w kolejności 05, 01, 02, 04 |
Stop | 7E, FF, 06, 16, 00, 00, 00, EF | Zatrzymaj odtwarzanie |
Play | 7E, FF, 06, 0D, 00, 00, 00, EF | Wznów odtwarzanie |
Pause | 7E, FF, 06, 0E, 00, 00, 00, EF | Wstrzymaj odtwarzanie |
Shuffle Play | 7E, FF, 06, 18, 00, 00, 00, EF | Odtwarzanie w przypadkowej kolejności |
Play with volume | 7E, FF, 06, 22, 00, 1E, 01, EF | Ustaw głośność 1E (30) i odtwarzaj plik 01 |
Set volume | 7E, FF, 06, 06, 00, 00, 1E, EF | Ustaw głośność 1E (30) |
Volume Up | 7E, FF, 06, 04, 00, 00, 00, EF | Zwiększ głośność o 1 |
Volume down | 7E, FF, 06, 05, 00, 00, 00, EF | Zmniejsz głośność o 1 |
Jeżeli bajt feedback (tabela 1) ma wartość 01, to po każdym wysłaniu komendy moduł odpowiada sekwencją 7E, FF, 06, 41, 00, 00, FE, BA EF. Wyzerowany szósty bajt oznacza, że dane zostały odebrane prawidłowo.
Ramki spontaniczne
Oprócz potwierdzenia przesłania komendy mogą być wysyłane przez moduł ramki spontaniczne, nie będące reakcją na komendę, ale na zdarzenie np. zakończenie odtwarzania konkretnego pliku, lub włożenie/wyjęcie karty SD. Ponadto można wysyłać komendy pytające o status urządzenia. Zostało to pokazane w tabeli 3.
Tabela 3. Ramki spontaniczne i komendy statusowe
Komenda |
Odpowiedź |
opis |
spontanicznie |
7E, FF, 06, 41, 00, 00, 00, FE, BA, EF |
Dane odebrano prawidłowo |
spontanicznie |
7E, FF, 06, 3A, 00, 00, 02, FE, BF, EF 7E, FF, 06, 3B, 00, 00, 02, FE, BE, EF |
Włożono kartę pamięci Wyjęto kartę pamięci |
spontanicznie |
7E, FF, 06, 3D, 00, 00, 04, FE, BA, EF |
Zakończono odtwarzać plik 04 |
7E, FF, 06, 42, 00, 00, 00, EF |
7E, FF, 06, 42, 00, 00, 00, FE, B6, EF |
Odtwarzanie zatrzymane (stop) |
7E, FF, 06, 42, 00, 00, 00, EF |
7E, FF, 06, 42, 00, 00, 01, FE, B6, EF |
Odtwarza (play) |
7E, FF, 06, 42, 00, 00, 00, EF |
7E, FF, 06, 42, 00, 00, 02, FE, B6, EF |
Pauza |
7E, FF, 06, 48, 00, 00, 00, EF |
7E, FF, 06, 48, 00, 00, 07, FE, AC, EF |
Znaleziono 7 plików |
7E, FF, 06, 4C, 00, 00, 00, EF |
7E, FF, 06, 4C, 00, 00, 04, FE, AB, EF |
Odtwarzany plik nr 4 |
7E, FF, 06, 43, 00, 00, 00, EF |
7E, FF, 06, 43, 00, 00, 1E, FE, 99, EF |
Poziom siły głosu =1F |