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

O autorze

Absolwent Wydziału Elektroniki Politechniki Wrocławskiej, współpracownik miesięcznika Elektronika Praktyczna, autor książek o mikrokontrolerach Microchip i wyświetlaczach graficznych, wydanych nakładem Wydawnictwa BTC.
Zawodowo zajmuje się projektowaniem zaawansowanych systemów mikroprocesorowych.