
Witam,
Jakiś czas temu zrobiłem i oprogramowałem swój własny odtwarzacz mp3.
Konstrukcja po umieszczeniu w obudowie jest jak najbardziej przenośna. Zasilana z dowolnej baterii litowo-jonowej (ładowanie zrobione na układzie MAX1811 - ładowarka baterii LI-Ion, wykorzystuje dowolną ładowarkę Nokia na "duże" złącze, np. ACP-12E), na LCD w prawym dolnym rogu widać wskaźnik naładowania baterii, po prawie całkowitym rozładowaniu ikona jest przekreślona i odtwarzacz wyłącza się, wykorzysuję tutaj przetwornik ADC wbudowany w mikrokontrolerze, także mogę dokładnie mierzyć napięcie baterii w trakcie obciążenia, co sygnalizowane jest ilością kresek w ikonce baterii, sam proces ładowania również sygnalizowany jest animowaną ikoną.
Odwtarzacz ma przyjemne menu graficzne z czterema opcjami: odtwarzanie mp3, wyświetlacznie obrazow BMP 24-bity (niestety ze względu na bardzo znikomą ilość pamięci ram w mikrokontrolerze PIC18F242 (768 bajtów) obrazki muszą być w rozdzielczości LCD, czyli 128x128 pixeli.), formatowanie kart pamięci MMC (FAT16, bez folderów, pliki w głównym katalogu), ustawienia (niestety jeszcze nic się pod tym nie kryje, gdyż zaprzestałem rozwijania projektu







Samo dekodowanie mp3 odbywa się w kości VS1001K, przez co można było układ tak zminimalizować. Wszelkie napięcia zasilające, czyli 3,3V digital, 3,3V analog, 5V do zasilania PIC'a oraz około 6V do zasilania podświetlenia LCD uzyskuję z dwóch przetwornic DC/DC MAX856 oraz MAX857.
Wyświetlacz pochodzi z telefonu Nokia 6610, czyli 128x128 pizeli 4096 kolorów CSTN, udało mi się zdobyć model z wyprowadzonymi polami, do kórych można było się podlutować.
Sam odtwarzacz mp3 pokazuje długie nazwy plików (scroll'ując je po ekranie), oraz podstawowe parametry, czyli bitrate, czas odtwarzania, częstotliwość próbkowania, czy plik jest mono, czy stereo (joint stereo, lub dualchannel), mamy możliwość wybrania również charakterystyki korektora, jest kilka predefiniowanych (oczywiście obliczaniem equalizera zajmuje się DSP w VS1001K, przez co układ musiałem trochę podtaktować, aby był w stanie dekodować mp3 320kb przy włączonej funkcji głębszego basu oraz przy włączonym korektorze).
W odtwarzaczu zastosowałem również automatyczne wyłączanie podświetlenia, tak jak w telefonach, więc jeśli nie wciskamy klawiatury to po około 15s wyłącza się podświetlenie LCD, natomiast po około 2 minutach włącza się wygaszacz ekranu (LCD przełączony zostaje w tryb oszczędzania zasilania) w postaci przesuwającego sie paska ekranu z góry do dołu ze scroll'owaną nazwą odtwarzanego pliku mp3 (tak jak to ma miejsce np. własnie w telefonie 6610), po kliknięciu klawiatury oczywiście widzimy menu odtwarzacza i zapala się podświetlenie.

Kod odtwarzacza napisany został w assemblerze, graficzne menu, ikonki, czcionki oraz wszystkie dane potrzebne do funkcjonowania playera (binaria zassemblowanego kodu equalizera na VS1001K, itd.) zostały umieszczone w EEPROMIE I2C Atmela 24C1024 o pojemności 128KB.
Oczywiście zadbałem o flashowanie eepromu w układzie, także wystarczy że nagram na kartę pamięci plik o rozmiarze eepromu i nazwe go eeprom.bin, a player przy uruchamianiu "sflashuje" atmela i będzie korzystał już z nowych zawartych w nim danych.
Korzystając z baterii FOOF 1200mAh czas pracy odtwarzacza mp3 wynosi około 20 godzin, także sam jestem zdziwiony jaki jest oszczędny

Cool? Ranking DIY