Przedstawiony projekt dotyczy uniwersalnego i kompaktowego modułu odtwarzacza MP3 do systemów wbudowanych. Kompletne urządzenie mieści się na płytce drukowanej o rozmiarach 37 mm x 27 mm. Pliki MP3 przechowywane są na karcie pamięci typu microSD, maksymalnie można zapisać ich 65 536. Sterowanie modułem odbywa się za pomocą przycisków i wejść cyfrowych lub poprzez interfejs szeregowy TTL.
Schemat blokowy modułu można zobaczyć poniżej:
Moduł odtwarzacza oparto o układ dekodera MPC typu VS1011, a za sterowanie odpowiada procesor z rodziny PIC24, dzięki czemu możliwe jest odtwarzanie do 65 536 różnych plików muzycznych lub dźwiękowych zapisanych na karcie microSD. Wyboru odtwarzanej ścieżki można dokonać za pomocą portu szeregowego lub z użyciem dziewięciu przycisków albo przełączników (użycie przełącznika typu dipswitch umożliwia wybór 64 plików MP3). Przy korzystaniu z komunikacji szeregowej modułem musi sterować mikrokontroler, przy wyborze drugiego sposobu sterowania sygnały podawane na 9 wejść logicznych mogą pochodzić z różnorakich źródeł, takich jak choćby elementy generujące światło, przekaźniki itp. Moduł może być więc wykorzystany w automatach vendingowych do odtwarzania komunikatów głosowych, w systemach telefonicznych, w samochodach do informowania kierowcy o kondycji pojazdu i warunkach zewnętrznych, w systemach alarmowych do prowadzenia użytkownika przez proces konfiguracji i do sygnalizowania zdarzeń, może znaleźć też wiele innych zastosowań.
Urządzenie obsługuje karty microSD o pojemności do 16 GB i może być zasilany napięciem 3,3 V lub 5 V, w zależności od wyboru. Moduł wyposażono w jednorzędowe złącze zamocowane na boku płytki drukowanej, co pozwala na zaoszczędzenie miejsca i umożliwia zamontowanie modułu w pozycji pionowej.
Sposoby zasilania i sterowania modułem (odpowiednio „pin-to-pin” i interfejs szeregowy) przedstawiono na poniższym rysunku:
Wykorzystując do sterowania przyciski czy wyłączniki (sposób określony przez autora jako „pin-to-pin”) trzy przyciski służą do uruchamiania/zatrzymywania odtwarzania oraz do regulacji głośności, a segmentowy przełącznik dwustanowy służy do wyboru odtwarzanego pliku. Możliwa jest też oczywiście komunikacja z modułem za pomocą portu szeregowego o poziomach TTL. Urządzenie może być też sterowane w sposób mieszany.
W przypadku pierwszego sposobu sterowania (mode 1) odtwarzana ścieżka definiowana jest 6-bitowym słowem ustalanym za pomocą przełącznika dipswitch lub w inny sposób podawanym na wejścia IN1 – IN6. Aby rozpocząć odtwarzanie, należy podać stan niski na wejście PLAY. Podawanie stanu niskiego na linie VOL_UP i VOL_DOWN powoduje odpowiednio zwiększanie i zmniejszanie głośności odtwarzania.
W drugim sposobie sterowania (mode 0) nazwa wybór odtwarzanego pliku następuje za pomocą przesłania specjalnych komend. Komenda „#” rozpoczyna wybór nazwy pliku MP3, a komenda „*” powoduje zakończenie wyboru. Szczegóły tego sposobu sterowania są definiowalne w pliku konfiguracyjnym. Na przykład, aby odtworzyć plik o nazwie „65.mp3” należy wykonać następujące kroki:
- 1. Wysłanie komendy „#” (wprowadzanie nazwy ścieżki),
- 2. Wysłanie znaku „6” (pierwszy bajt nazwy),
- 3. Wysłanie znaku „5” (drugi bajt nazwy),
- 4. Wysłanie komendy „*” (zakończenie wprowadzania nazwy ścieżki, komenda opcjonalna, można zaczekać, aż upłynie określony czas)
- 5. Wysłanie komendy „P” (rozpoczęcie odtwarzania),
- 6. Wysłanie komendy „S” (zakończenie odtwarzania).
Tryb mieszany (mode 2) pozwala wykorzystać zalety obydwu sposobów sterowania. Nazwy plików MP3 muszą być cyfrą z zakresu od 0 do 65 535, zakończoną rozszerzeniem „.mp3” (np. 0.mp3, 1.mp3, …, 16.mp3, …, 65535.mp3).
Konfiguracja modułu odbywa się za pomocą edycji pliku konfiguracyjnego (config.txt, na powyższym zdjęciu) zapisywanego na karcie pamięci. Oprogramowanie modułu odtwarzacza MP3 rozpoznaje też nowe karty pamięci i tworzy na nich plik konfiguracyjny z domyślnymi parametrami, dzieje się też tak, kiedy plik konfiguracyjny jest uszkodzony. Plik zapisywany jest w katalogu głównym karty microSD.
Plik konfiguracyjny składa się z dwóch części: pierwsza zawiera opis projektu oraz konfigurację wyprowadzeń, a także kilka istotnych uwag. Druga część służy do konfiguracji modułu. Linie zaczynające się od znaku „#” oznaczają komentarz, pozostałe służą do zmiany parametrów.
Parametry konfigurowane przez użytkownika są następujące:
Tryb (Mode) – pozwala wybrać tryb pracy modułu, możliwe wartości to:
- 0 dla sterowania przez port szeregowy,
- 1 (wartość domyślna) dla sterowania przyciskami/przełącznikami oraz
- 2 dla pracy w trybie mieszanym.
Parametry związane ze sterowaniem przez port szeregowy lub pracą w trybie mieszanym:
Szybkość transmisji (Baud rate) – pozwala wybrać szybkość transmisji danych przez port szeregowy. Dozwolone wartości to 1 200, 2 400, 9 600 (wartość domyślna), 19 200 oraz 115 200 bps.
Komenda echa (Echo command) – parametr pozwalający określić, czy wysyłane są komendy echa. Dozwolone wartości to 0 (echo wyłączone) i 1 (echo włączone, wartość domyślna).
Rozszerzone komendy echa (Extended echo command) – służy do określania, czy przez port szeregowy ma być zwracany opis żądanej akcji (domyślnie włączone).
Działanie komendy Play (Play) – parametr pozwalający określić, co dzieje się po otrzymaniu komendy odtwarzania „P”. Jeśli wynosi on 0, a przed przesłaniem komendy odtwarzania nie wybrano pliku MP3, taka komenda jest ignorowana. Jeśli wynosi on 1 (wartość domyślna) odtworzony zostanie ostatnio wybrany plik.
Czas oczekiwania (Timeout) – służy do określenia czasu (wyrażonego w ms), w którym użytkownik ma wprowadzić numer odtwarzanej ścieżki, dopuszczalny zakres wynosi od 1 do 10 000 ms (wartość domyślna wynosi 3 000 ms, tj. 3 s).
Parametry związane z pracą w trybie mieszanym lub w trybie „pin-to-pin”:
Czas oczekiwania dla linii sterującej odtwarzaniem i kontrolą głośności (Time Wait Play oraz Time Wait Vol) – działanie tych parametrów jest podobne, służą do ustalenia czasu, jaki musi upłynąć pomiędzy kolejnymi impulsami podawanymi na te linie, aby zostały one uznane za odrębne komunikaty, wartość może wynosić od 1 do 5 000 ms (domyślnie 100 ms).
Odtwarzanie (Play) – parametr określa zachowanie po zmianie stanu na linii Play (podczas odtwarzania ścieżki): jeśli wynosi on 0, odpowiada to pauzie w odtwarzaniu, o ile nie został zmieniony numer ścieżki (stan na wejściach IN1 – IN6 pozostał niezmieniony), jeśli zaś uległ on zmianie, jest to równoznaczne z zatrzymaniem odtwarzania. Jeśli parametr wynosi 1, zmiana stanu na tej linii zawsze powoduje zatrzymanie odtwarzania.
Dodatkowe parametry pozwalają ustalić, które linie będą aktywne w trybie pracy mieszanej.
Schemat całości pokazano na poniższym rysunku:
Wykaz elementów wraz z rysunkami płytek drukowanych pokazano poniżej:
Na stronie źródłowej dostępne są wzory płytek drukowanych oraz firmware modułu.
Fajne? Ranking DIY
