ATB-WAV Player (1). Karta muzyczna i czytnik kart pamięci dla mikrokontrolerów

ATB-WAV Player (1). Karta muzyczna i czytnik kart pamięci dla mikrokontrolerów
Pobierz PDF Download icon
Jak wiadomo, w dzisiejszych czasach odtwarzanie plików dźwiękowych z plików typu WAV umieszczonych na karcie pamięci, za pomocą 8-bitowego mikrokontrolera nie stanowi dużego problemu. Niestety, jest mały kłopot polegający na tym, że trudno tę funkcjonalność zaimplementować do dowolnego projektu na 8-bitowcu z uwagi na spore wymagania czasowe w trakcie odtwarzania dźwięków z karty SD. W związku z tym postanowiłem przygotować projekt oparty na niewielkim mikrokontrolerze ATmega328P. Ma on przejąć na siebie czasochłonną obsługę odtwarzania plików dźwiękowych a jednocześnie zapewnić możliwość komunikacji z modułem za pomocą popularnego interfejsu UART (RS232), dzięki któremu będzie można zlecać mu odtwarzanie dowolnego pliku *.WAV umieszczonego w dowolnym folderze na karcie. Rekomendacje: użyteczny, uniwersalny moduł odtwarzacza, który przyda się w wielu projektach lub do rozszerzenia funkcjonalności urządzeń.

Według pierwotnego założenia, system obsługi miał być na tyle nieskomplikowany, aby można było sterować nim za pomocą komend tekstowych AT, umożliwiających także testowanie z poziomu zwykłego programu terminala oraz zapewniającymi współpracę ze specjalnym oprogramowaniem funkcjonującym pod kontrola systemu Windows, poszerzającym funkcjonalność całości. Idąc dalej, udało się niejako przy okazji wprowadzić funkcjonalność całkowicie niezależnego odtwarzacza plików dźwiękowych, a także możliwość przełączania modułu w dowolnym momencie jego pracy w tryb całkowicie niezależnego czytnika kart micro SD, jeśli zewnętrzny mikrokontroler będzie miał potrzebę wykorzystania karty pamięci do własnych potrzeb. W ostatnim etapie projektu, moduł wzbogacono o wzmacniacz audio (o mocy ok 1 W) z programową regulacją siły głosu. Aby mieć pełen obraz możliwości dodam, że za pomocą komend AT można nie tylko odczytywać dowolne pliki z karty SD, ale także zapisywać dane do specjalnie spreparowanych wcześniej plików za pomocą darmowego programu PetitGen.exe.

Zanim przejdę do opisu każdej z trzech głównych funkcjonalności nadmienię, że moduł jest przeznaczony do systemów wbudowanych z zasilaniem +5 V. Pomimo tego, w ramach modułu zapewniono odpowiednią translację napięcia na potrzeby karty micro SD, która jest zasilana napięciem +3,3 V. Omawiany moduł został maksymalnie zminiaturyzowany oraz przystosowany do pracy również w złączu typu KANDA, które często jest wykorzystywane w projektach z mikrokontrolerami AVR do programatora sprzętowego ISP. Naturalnie, ATB-WAV Player może równie dobrze współpracować z dowolną rodziną mikrokontrolerów – od 8-bitowej rodziny 51 poprzez mikrokontrolery firmy Microchip typu PIC, aż po 32-bitowe mikrokontrolery typu ARM. Moduł odciąża główny mikrokontroler z konieczności realizowania procedur odtwarzających dźwięk i umożliwia niesłychanie łatwe sterowanie ich odtwarzaniem za pomocą UART.

Schemat ideowy odtwarzacza ATB WAV Player pokazano na rysunku 1. Pierwsza rzecz, która pewnie rzuca się w oczy, to rezonator kwarcowy o częstotliwości 24 MHz, którego użyłem pomimo tego, że wg noty aplikacyjnej zastosowanego mikrokontrolera, może on być taktowany maksymalnie częstotliwością 20 MHz. Nie jest to przypadek lub pomyłka – świadomie zastosowałem tutaj lekkie przetaktowanie mikrokontrolera. Naturalnie, nie zaleca się tego typu podejścia, ponieważ pewne wewnętrzne moduły mikrokontrolera mogą przestać działać prawidłowo, szczególnie trzeba mieć tu na uwadze chociażby wewnętrzną pamięć EEPROM. Jednak w tym projekcie w ogóle nie jest wykorzystywana pamięć EEPROM, zaś niewielka wartość zwiększonej częstotliwości nie wpływa na pracę portów cyfrowych mikrokontrolera oraz jego pamięci Flash oraz RAM.

Aby w ogóle mówić o przetaktowaniu należy podjąć specjalne kroki odnośnie do ustawień fusebitów mikrokontrolera. Trzeba zadbać o ustawienie wewnętrznego generatora, do którego jest dołączony zewnętrzny rezonator 24 MHz, aby pracował w trybie „Rail to Rail”. Opcja występuje w omawianym mikrokontrolerze pod nazwą „Ext. Full-swing Crystal”. Na rysunku 2 pokazano, w jaki sposób zostały ustawione fusebity mikrokontrolera ATmega328P na potrzeby projektu z uwzględnieniem nie tylko wymienionej wyżej opcji, ale równie ustawienia zapewniające pracę z Bootloaderem oraz zabezpieczeniem BOD. Zastosowanie omawianych tutaj ustawień zapewnia pewną i bezawaryjną pracę modułu nawet przy przetaktowaniu mikrokontrolera częstotliwością 24 MHz.

Jak widać ze schematu na rys. 1, sama aplikacja mikrokontrolera jest nieskomplikowana. Poza zapewnieniem poprawnej filtracji zawiera ona połączenia umożliwiające obsługę karty SD za pomocą SPI, jeden przycisk oraz steruje wzmocnieniem układu TDA7052A. Regulacja odbywa się za pomocą PWM. Sygnał dźwiękowy jest również generowany za pomocą wyjść PWM. Zwrócę uwagę, że wyjścia 16-bitowych sygnałów PWM OC1A oraz OC1B są zmiksowane do jednego wejścia wzmacniacza za pomocą kondensatorów C7, C8 oraz rezystorów R7, R8. Zapewnia to poprawne odtwarzanie również stereofonicznych plików dźwiękowych, przy czym oba kanały są prawidłowo zmiksowane do pojedynczego monofonicznego wyjścia wzmacniacza audio. Na istotną uwagę zasługuje fakt, że do wzmacniacza można podłączyć jedynie głośniki o rezystancji mniejszej od 32 V. To bardzo ważne z uwagi na możliwość uszkodzenia układu TDA7052A. Poza tym, do mikrokontrolera jest dołączona tylko jedna dioda LED sygnalizująca różne stany pracy modułu w zależności od tego, w jakim trybie aktualnie on pracuje.

Zasilanie na potrzeby karty pamięci realizowane jest za pomocą stabilizatora LDO typu MCP1700T-3.3. Stabilizator zasila również układ 74LVC125, który pełni podwójną rolę. Zapewnia buforowanie komunikacji z kartą pamięci oraz poprawną translację napięć, która jest konieczna z uwagi na dostęp mikrokontrolera zasilanego napięciem +5 V.

Dość istotnym zagadnieniem jest przystosowanie modułu do pracy nawet w typowym złączu KANDA. W tym celu proszę zwrócić uwagę na rysunek 3, na którym przedstawiono porównanie standardowego złącza KANDA i sygnałów wyprowadzonych w module ATB-WAV Player. Na pierwszy rzut oka wydaje się to być całkowicie niekompatybilne z uwagi na wyprowadzone sygnały modułu ATB-WAV Player po lewej stronie złącza, na pinach  o numerach: 4, 6, 8. O ile wiemy, że sygnały o nazwach EN oraz CS są wejściami z punktu widzenia omawianego modułu, to wydaje się to nie stanowić zagrożenia elektrycznych połączeń, ponieważ dopuszczalny jest stan niski (GND) na tychże wejściach. Patrząc jednak na sygnał o nazwie TX, będący wyjściem komunikacyjnym modułu UART (pin nr 4), który jest sygnałem wyjściowym, to wydawać by się mogło, że tutaj został popełniony jakiś poważny błąd konstrukcyjny. Tym bardziej, że wiadomo, iż domyślnie po załączeniu modułu UART w mikrokontrolerze panuje na nim stan wysoki, co może kolidować z poziomem niskim na złączu KANDA i mogłoby to doprowadzić nawet do uszkodzenia mikrokontrolera w module ATB-WAV Player.

Na szczęście, oprogramowanie zawarte w mikrokontrolerze w zupełności uwzględnia taką sytuację i zapewnia w stu procentach poprawną pracę modułu ATB-WAV Player tyle, że przy takim podłączeniu moduł będzie w stanie pracować tylko i wyłącznie w trybie niezależnego odtwarzacza (playera), pozwalającego na odtwarzanie plików dźwiękowych, muzycznych typu *.WAV umieszczonych w ścieżce głównej karty pamięci. Będzie można wprawdzie przełączyć moduł w tryb sterowania i odtwarzania wybranych plików dźwiękowych z karty pamięci, za pomocą interfejsu UART z udziałem pinu nr 3, który w standardowym złączu KANDA jest nie używany i mamy możliwość podłączenia do niego sygnału TX bądź to z mikrokontrolera lub z przejściówki USB/RS232, czyli poprzez terminal w systemie Windows/Linux itp., lecz będzie to nieco ograniczona komunikacja, ponieważ pin TX mikrokontrolera w module będzie wyłączony z użytku. Wymuszone zostanie jego praca w funkcji wejścia, po to, aby nie doszło do jego uszkodzenia poprzez dołączenie do GND w standardowym złączu KANDA. Rysunek 4 przedstawia widok programatora ATB-USBasp wraz z osadzonym modułem ATB-WAV Player. Tego typu połączenie umożliwia również wygodne zaprogramowanie mikrokontrolera w module.

Na tym etapie nadmienię, że przedstawiony na schemacie widok sygnałów złącza modułu ATB-WAV Player jest tylko poglądowy. Aby w pełni zrozumieć wszystkie możliwości modułu i zasady pracy każdej z jego funkcjonalności przedstawiam na rysunku 5 pełny opis wyprowadzeń złącza wraz z uwzględnieniem kierunków sygnałów występujących na poszczególnych pinach. Widać na nim także widok 3D płytki PCB zarówno od strony bootom jak również top wraz opisem numerów wejść na złączu żeńskim 2×10 modułu. Poza tym, że zapewnia ono możliwość sterowania modułem czy bezpośredni dostęp do karty, umożliwia ono także wygodne i solidne osadzenie mechaniczne niewielkiej płytki PCB w tego typu gnieździe. Miniaturyzacja płytki PCB zapewnia jej niewielką wagę a więc stabilny montaż w dowolnym projekcie bez konieczności bezpośredniego lutowania wyprowadzeń do docelowego układu lub używania innych sposobów mechanicznego montażu np. śrubek, nakrętek itp. Nieocenioną zaletą takiego podejścia jest rewelacyjna możliwość łatwego montażu i demontażu w układzie docelowym. Zapewnia to łatwe przeprogramowywanie wsadu (firmware) mikrokontrolera w module ATB-WAV Player za pomocą dedykowanego oprogramowania na PC poprzez przejściówkę USB/RS232 z poziomu komputera.

Sygnały o nazwach EN, CS oraz CD na rys. 5, mają poziomą kreskę nad nazwą, co oznacza, że aktywny jest poziom niski. Niezależnie od tego, że dwa z nich EN i CS są sygnałami wejściowymi do modułu, zaś CD jest sygnałem wyjściowym. Pomiędzy nazwami sygnałów i numerami pinów widoczne są dodatkowo strzałki określające kierunki każdego z sygnałów w całym złączu. Należy zwrócić uwagę, że pin 4 złącza ma dwie alternatywne funkcjonalności. W obu przypadkach są to sygnały wyjściowe. Na temat sygnału TX już wspominałem i jest to wyjście z modułu linii komunikacyjnej UART. Sygnał ten działa tylko w wypadku funkcjonalności niezależnego playera oraz odtwarzacza sterowanego przez RS232. Natomiast po przełączeniu modułu ATB-WAV Player w tryb zwykłego czytnika kart pamięci, sygnał wyprowadzony na pinie nr 4 będzie pełnił rolę sygnału z karty o nazwie CD (Card Detect) z tym, że to mikrokontroler w module ATB-WAV Player będzie odtwarzał w sposób programowy stan sprzętowego sygnału z gniazda karty pamięci. W tym trybie sygnał ten można traktować jako wyjście typu Open Colector (otwarty kolektor) zatem nie grozi również w tym trybie, zwarcie z zewnątrz tej linii do GND.

Mirosław Kardaś
biuro@atnel.pl

Artykuł ukazał się w
Elektronika Praktyczna
grudzień 2017
DO POBRANIA
Pobierz PDF Download icon

Elektronika Praktyczna Plus lipiec - grudzień 2012

Elektronika Praktyczna Plus

Monograficzne wydania specjalne

Elektronik czerwiec 2024

Elektronik

Magazyn elektroniki profesjonalnej

Raspberry Pi 2015

Raspberry Pi

Wykorzystaj wszystkie możliwości wyjątkowego minikomputera

Świat Radio lipiec - sierpień 2024

Świat Radio

Magazyn krótkofalowców i amatorów CB

Automatyka, Podzespoły, Aplikacje maj 2024

Automatyka, Podzespoły, Aplikacje

Technika i rynek systemów automatyki

Elektronika Praktyczna czerwiec 2024

Elektronika Praktyczna

Międzynarodowy magazyn elektroników konstruktorów

Elektronika dla Wszystkich lipiec 2024

Elektronika dla Wszystkich

Interesująca elektronika dla pasjonatów