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

ATB-WAV Player (2). Karta muzyczna i czytnik kart pamięci dla mikrokontrolerów
Pobierz PDF Download icon

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. Jednak, aby nie absorbować mocy obliczeniowej rdzenia i dla uproszczenia budowy urządzeń, postanowiłem przygotować „przystawkę”, która przejęła czasochłonną obsługę odtwarzania plików dźwiękowych. W pierwszym artykule omówiono jej budowę – teraz czas na opisanie sposobów jej użycia.

Podstawowe parametry:
  • Zasilanie +5 V.
  • Standard sygnałów TTL – umożliwia zastosowania w systemach zasilanych napięciem +5 V, chyba że zostanie dokonana konwersja napięć dla linii sygnałowych SPI.
  • Złącze modułu w pełni przystosowane do pracy w standardzie złącza programatora KANDA – w celu wykorzystania wszystkich możliwości i trybów pracy modułu należy dokonać niewielkiej rekonfiguracji kilku linii sygnałowych złącza KANDA.
  • Aktualizacje firmware'u poprzez bootloader – mogą być dokonywane za pomocą RS232 z poziomu programu narzędziowego przygotowanego pod Windows.
  • Obsługa kart pamięci micro SD (SDXC) – możliwe jest zastosowanie dowolnej pojemności kart nawet najnowszych typu „class 10 SDXC U3 – 64/128 GB” sformatowanych w FAT32.
  • Programowa regulacja siły głosu – dzięki zastosowaniu wzmacniacza audio umożliwiającego regulację wzmocnienia za pomocą sygnału PWM.
  • Odtwarzacz plików typu WAV typu stereo i mono – pliki mogą zawierać próbki 16-bitowe, przy czym stereofoniczne mogą zawierać próbkowanie max. 32 kHz (typowo 22,5 kHz), zaś monofoniczne do 44 kHz.
  • Odczyt z plików w trybie binarnym z karty, zapis do plików w trybie ASCII za pomocą komend AT.
  • Parametry pracy RS232 to standard napięciowy TTL – 115200, 8, n, 1 – obsługa za pomocą wbudowanych i wygodnych w użyciu dla programisty komend typu AT.
  • Wbudowany wzmacniacz audio TDA7052A – możliwość bezpośredniego sterowania głośnikiem mocy minimum 1 W i impedancji minimum 32 Ω.
  • Oprogramowanie pod Windows służące do testowania i aktualizacji firmware'u.
  • Możliwość przełączania modułu karty dźwiękowej w tryb niezależnego czytnika do kart pamięci z poziomu nadrzędnego mikrokontrolera sterującego.

Mając na uwadze dotychczasowe informacje, można przejść do omówienia każdego z trzech trybów pracy modułu ATB-WAV Player. Pierwszym i najważniejszym trybem, związanym z tym, że może on być niezależną kartę dźwiękową dla dowolnego mikrokontrolera, jest tryb odtwarzacza sterowanego za pomocą RS232. Mam nadzieję, że każdy z opisanych trybów wzbudzi zainteresowanie, szczególnie prostota obsługi oraz pewne ciekawe możliwości podczas sterowania za pomocą UART (RS232 po zastosowaniu konwertera napięcia w rodzaju MAX232).

Moduł ATB-WAV Player umożliwia płynne odtwarzanie z bardzo dobrą jakością stereofonicznych plików dźwiękowych WAV, ale muszą one być zapisane z maksymalną częstotliwością próbkowania 32 kHz. W wypadku plików monofonicznych ta częstotliwość może wynosić nawet 44 kHz. Oba typy plików mogą zawierać próbki 16-bitowe.

Odtwarzacz sterowany za pomocą UART

Zasadę działania modułu w tym trybie z opisem sygnałów na żeńskim złączu komunikacyjnym 2×10 pokazano na rysunku 6. Zastosowanie trybu sterowania modułem przez UART wymaga doprowadzenia jedynie napięcia +5 V na pin 2 oraz GND na pin 10. Poza tym jest wymagane podanie poziomu niskiego na wejście EN (8). Wejście EN można na stałe dołączyć do masy, jeśli nie zamierzamy przełączać modułu w III tryb, zwykłego czytnika kart pamięci. Ostatecznie, jeśli nie potrzebujemy informacji zwrotnych z modułu ATB-WAV Player za pomocą RS232, to wystarczyłoby użyć tylko linii RX (3), do której należy doprowadzić linię TX mikrokontrolera korzystającego z modułu, po to, aby zlecać mu odtwarzanie wybranych plików dźwiękowych. Jeśli zaś chcemy wykorzystywać informacje zwrotne z modułu, komunikaty na temat bieżącego stanu jego pracy czy też odpytywać o jego bieżącą konfigurację lub odczytywać pliki z karty, to wtedy podłączamy również sygnał TX (pin nr 4) do linii RX mikrokontrolera wykorzystującego moduł ATB-WAV Player.

Rysunek 6. Sterowanie modułu ATB-WAV Player za pomocą UART

Uwaga! Sygnały TX oraz RX modułu pracują wyłącznie w trybie napięciowym TTL (0/5 V). Parametry transmisji asynchronicznej to: 115200, 8, n, 1. Jeśli zajdzie konieczność sterowania modułem za pomocą RS232, to dodatkowo należy zastosować układ MAX232 lub odpowiednik.

Na tym etapie najważniejszą informacją jest lista komend, które można wysyłać do modułu oraz ich format – wyszczególniono je w tabeli 1. Jak wspominałem, głównym założeniem jest maksymalna prostota sterowania, aby moduł był łatwy w użyciu nawet dla amatora nieznającego się na konstruowaniu skomplikowanych komend HEX, takich jakie są używane w podobnych, chińskich modułach, których sposób sterowania został moim zdaniem drastycznie skomplikowany. Wracając do naszego modułu, przedstawiam poniżej listę komend AT z ich podziałem na funkcjonalności.

Nowością, jeśli chodzi o możliwości modułu, jest możliwość odczytu dowolnych plików z karty pamięci w trybie binarnym za pomocą RS232 oraz możliwość zapisu danych do wcześniej stworzonego pliku na karcie w trybie ASCII. Co ciekawe, odczytu z pliku można dokonać od dowolnego miejsca w pliku (offset), a także odczytu z góry określonej liczby bajtów danych (BTR). Do odczytu plików służy komenda AT+FREAD, do której przekazujemy kilka argumentów, z czego ostatni jest opcjonalny i może być pominięty. Pierwszy argument to oczywiście pełna nazwa pliku ze ścieżką, w której on się znajduje. Drugi argument to wspomniany wyżej Offset, zaś trzeci to liczba bajtów do odczytu BTR (Bytes To Read). Jeśli plik zawiera mniej bajtów, niż podano w argumencie BTR, to odczyt zakończy się wcześniej. Czwarty argument można pominąć, chyba że zależy nam na dokonaniu odczytu plików zapisanych w trybie PetitFS, wtedy argument powinien przyjąć wartość „1”. Odczyt spowoduje pobranie wszystkich bajtów z pominięciem tzw. bajtu „wypełniającego” plik (0xFF). Puste pliki można tworzyć za pomocą specjalnie przygotowanego do tych celów programu PetitGen.EXE. Omawiany tu sposób zapisu został bardzo precyzyjnie opisany w książce pt. „Język C – pasja programowania mikrokontrolerów 8-bitowych” wydawnictwa Atnel.

Zapis do pliku jest realizowany na zasadzie dopisywania danych ASCII do „pustego” pliku. Dane powinny zawierać znaki ASCII o kodach przedziału 0x01…0xFE, z pominięciem kodu 0x00 oraz kodu wypełniacza 0xFF, co znacznie przyśpiesza odczyt tylko istotnych danych z pliku (bez bajtów wypełniacza). Sposób ten przydaje się idealnie w sytuacjach, gdy np. budujemy rejestratory danych zapisujące cyklicznie na karcie informacje z czujników lub zdarzenia systemowe.

W omawianym trybie pracy najbardziej interesującą komendą jest AT+MPLAY, za pomocą której możemy odtwarzać dowolne pliki znajdujące się w dowolnym folderze na karcie pamięci. Co ciekawe, dostajemy od razu możliwość regulowania głośności odtwarzanych plików. Niewątpliwą zaletą tego sposobu jest możliwość używania własnych nazw plików i folderów, dzięki czemu można podzielić logicznie pliki do odtwarzania na karcie pamięci.

Na specjalną uwagę zasługuje możliwość przesłania do odtworzenia wielu plików dźwiękowych. Za pomocą jednej komendy można wymusić odtworzenie maksymalnie 20 plików. Taka funkcjonalność odciąża mikrokontroler sterujący ze sporej ilości pracy, którą musiałby poświęcić na asynchroniczne sprawdzanie końca odtwarzania jednego pliku, aby natychmiast odtworzyć kolejny. Jest to szczególnie istotne przy odtwarzaniu skomplikowanych sekwencji komunikatów dźwiękowych. Jedynym ograniczeniem jest fakt, że pliki powinny mieć nazwy w standardzie (DOS) – 8 znaków nazwy, kropka, 3 znaki rozszerzenia. Nie jest to wprawdzie wymogiem i pliki mogą mieć dłuższe nazwy, lecz w takiej sytuacji należy stosować ich nazwy skrócone zgodnie ze starym systemem MS DOS. Jest to nieco skomplikowane, aby samemu bez podglądu zawartości karty pamięci w trybie MS DOS określić taki skrót, jednak dostajemy do dyspozycji specjalne i przeznaczone do celu obsługi, sterowania oraz aktualizacji firmware, oprogramowanie na komputer PC pod system Windows, które potrafi odczytać całą zawartość karty pamięci, uwzględniając skrócone nazwy MS DOS. Dzięki temu możemy je zapamiętać i zastosować w docelowym mikrokontrolerze, który będzie odtwarzał te pliki dźwiękowe. Dla wygody użytkownik nie musi przesyłać rozszerzenia nazwy pliku. Należy jednakże pamiętać, że w nazwach plików nie będą rozróżniane wielkości znaków.

Dla wyjaśnienia posłużę się dwoma przykładami. Załóżmy, że zastosowalibyśmy kartę do opisywanego na łamach czasopisma Magic Matrixa. Jeśli zechcemy podawać głosem bieżącą godzinę i temperatury jako sekwencje specjalnie przygotowanych, spreparowanych wcześniej plików dźwiękowych, na przykład: „godzina dwudziesta trzecia czterdzieści pięć” – „temperatura dwadzieścia jeden stopni Celsiusza”, to pierwsza sekwencja może polegać na odtworzeniu trzech plików dźwiękowych, a drugi – czterech. Dzięki komendzie AT+MPLAY uzyskujemy wygodną i odciążającą mikrokontroler sterujący funkcję do jednoczesnego przesłania wielu nazw plików WAV za pomocą UART (lub RS232). Moduł ATB-WAV Player zajmie się nie tylko odtwarzaniem sekwencyjnym tych plików, ale także zadba o to, aby były one odtwarzane jeden po drugim, bez zbędnej zwłoki. W wypadku zastosowania odpowiedniego nazewnictwa plików na potrzeby odczytywania godzin lub dowolnych liczb wysłanie każdej z sekwencji może wyglądać następująco:

AT+MPLAY=255,/ZEGAR/,g23,40,5
AT+MPLAY=255,/ZEGAR/,20,1,stopni,celsius

Ogromną zaletą jest możliwość przetestowania komend AT wprost z terminalu na PC!

Wysłanie każdej z tych komend spowoduje optymalne czasowo i sekwencyjne odtworzenie przygotowanych uprzednio plików. Plik o nazwie „g23.wav” oznacza odczytanie dwóch słów „dwudziesta trzecia”, plik o nazwie „40.wav” spowoduje odtworzenie słowa „czterdzieści”, zaś plik o nazwie „5.wav” spowoduje odtworzenie słowa „pięć” itd. Na podobnej zasadzie odbędzie się odczytanie na głos temperatury. Dzięki temu mikrokontroler sterujący pracą modułu będzie miał za zadanie jedynie wybór odpowiednich nazw plików z puli wcześniej przygotowanych i wgranych na kartę pamięci. Proszę zwrócić uwagę, że w ramach komendy AT+MPLAY podając nazwy plików, nie wpisujemy ich rozszerzeń „,wav” z uwagi na to, że inne rozszerzenia i tak nie mogą być odtwarzane, a więc moduł ATB-WAV Player automatycznie uzupełnia te nazwy, a to powoduje, że uzyskujemy mniejsze obciążenie podczas przesyłania danych do modułu.

Myślę, że nie trzeba osobno szerzej wyjaśniać każdej z komend z tabeli 1, ponieważ już same nazwy wiele wskazują na ich zastosowanie. Niżej podano niezbędne informacje:

  • AT+VOL=<0..255> działa niezależnie od tego, czy moduł jest w trakcie odtwarzania pliku dźwiękowego, czy nie. Jej przesłanie nie przerywa odtwarzania pliku, co daje ciekawą możliwość zmiany poziomu głośności w trakcie jego trwania. Bywa to nieocenione podczas realizacji zaawansowanej funkcjonalności budzika, znanego np. z telefonów komórkowych, kiedy z rana dźwięk czy muzyka budzika rozpoczyna się cichutko i wraz z upływem czasu jej odtwarzania może być płynnie zwiększany poziom głośności.
  • AT+MUTE powoduje jedynie natychmiastowe ustawienie poziomu wzmacniacza audio na zero, zaś odtwarzanie pliku dźwiękowego nie zostaje zatrzymane.
  • AT+FADEVOL=1 powoduje, że odtwarzane dźwięki w trybie pracy zwykłego odtwarzacza będą automatycznie rozpoczynały się od ciszy i przez kilkaset milisekund będą zmieniały swój poziom głosu do wcześniej ustalonego za pomocą AT+VOL. W krótkich komunikatach zalecam wyłączać tę opcję, czyli AT+FADEVOL=0.

W omawianym trybie LED zamontowany na module albo świeci (migocze) podczas odtwarzania pliku dźwiękowego, albo nie świeci, gdy plik nie jest odtwarzany. Częstotliwość migotania diody LED w trakcie odtwarzania pliku jest zależna od częstotliwości próbkowania, z którą został nagrany plik dźwiękowy. Krótko mówiąc – im mniejsza częstotliwość próbkowania, tym LED migocze wolniej.

W omawianym trybie przycisk SMD (micro switch) na module nie pełni żadnej funkcji. Jego naciśnięcie może co najwyżej spowodować natychmiastowe zatrzymanie odtwarzania pliku dźwiękowego (jak komenda AT+STOP). Złącze goldpin SPK służy do przyłączenia zewnętrznego głośnika o mocy minimum 1 W oraz impedancji co najmniej 32 Ω. Zastosowanie głośnika o mniejszej impedancji może doprowadzić do nieodwracalnego uszkodzenia wzmacniacza audio – układu TDA7052A.

Niezależny odtwarzacz muzyki, plików dźwiękowych na karcie pamięci

Aby zrozumieć ten tryb pracy modułu ATB-WAV Player, należy zapoznać się z rysunkiem 7. Tryb niezależnego odtwarzacza jest praktycznie dostępny od razu po włączeniu zasilania modułu ATB-WAV Player oraz podaniu poziomu niskiego na wejście EN (8). Można zatem przetestować ten tryb bezpośrednio po przyłączeniu modułu chociażby programatora USBasp, który ma wyprowadzone zasilanie +5 V. Przypomnę, że zgodnie ze standardem KANDA na wyprowadzeniu 8 jest poziom niski, a zatem użytkownik nie musi wykonywać żadnych dodatkowych czynności czy połączeń w celu szybkiego przetestowania tej funkcjonalności. Wystarczy 32-omowy głośniczek o mocy minimum 1 W dołączony do wyjścia SPK.

Rysunek 7. Tryb zwykłego odtwarzacza plików dźwiękowych – muzyki

Opcjonalnie, wyjście SPK można dołączyć do wejścia innego wzmacniacza audio lub głośnika Bluetooth z wejściem stereo jack. Całość można zasilać z dowolnego power banku zapewniającego +5 V. Dzięki temu od razu możemy zorganizować sobie niezależny odtwarzacz plików dźwiękowych. Coś na kształt popularnego odtwarzacza mp3, tyle że w naszym wypadku będą odtwarzane pliki dźwiękowe przekonwertowane do formatu *.WAV za pomocą chociażby darmowego programu AudaCity. Zasada pracy z modułem w tym trybie wymaga, aby umieścić wszystkie interesujące nas pliki dźwiękowe tylko i wyłącznie na głównej ścieżce karty pamięci. Odtwarzacz potrafi automatycznie je pobierać tylko z tej lokalizacji. Liczba plików jest w zasadzie nieograniczona i limitowana jedynie pojemnością karty pamięci. Moduł ATB-WAV Player współpracuje z dowolnymi kartami pamięci, w tym z najnowszymi „class 10 SDXC U3” do kamer 4K. Dotyczy to każdego z opisanych trybów pracy. Krótko mówiąc, przy dzisiejszych pojemnościach kart pamięci rzędu 32…128 GB, dowolna liczba utworów muzycznych umieszczonych na karcie nie powinna stanowić żadnego problemu.

W omawianym trybie LED na płytce modułu albo świeci (migocze) podczas odtwarzania pliku dźwiękowego, albo nie świeci, gdy plik nie jest odtwarzany. Przycisk SMD (micro switch) na module pełni trzy funkcje:

  • PLAY służy do aktywowania sekwencyjnego odtwarzania plików dźwiękowych. Po włączeniu zasilania wymagane jest kilkusekundowe wciśnięcie przycisku do momentu, aż dioda LED zacznie bardzo szybko migotać. Wtedy można przycisk zwolnić i rozpocznie się odtwarzanie.
  • Krótkie wciśnięcie NEXT w trakcie odtwarzania pliku powoduje zakończenie odtwarzania bieżącego pliku dźwiękowego i rozpoczęcie odtwarzania kolejnego pliku.
  • Przyciśnięcie STOP na kilka sekund zatrzymuje automatyczne odtwarzanie do momentu, gdy LED zacznie szybko migotać. Wtedy można go zwolnić – odtwarzanie kolejnych plików zostanie zatrzymane. Po zatrzymaniu odtwarzacza (STOP) kolejne jego uruchomienie rozpocznie odtwarzanie plików dźwiękowych od samego początku. Nie ma możliwości kontynuacji odtwarzania od pliku, na którym odtwarzacz został zatrzymany. Kolejność odtwarzania plików zależy od kolejności ich wgrania na kartę pamięci do folderu głównego.

Naturalnie wyjęcie karty pamięci z gniazda nie sprawi żadnego problemu, a ponowne jej włożenie umożliwi ponowne odtwarzanie plików dźwiękowych. Na uwagę zasługuje także fakt, że nawet w trybie zwykłego odtwarzacza działa komunikacja UART, dzięki czemu można albo odczytywać nazwę odtwarzanego utworu i wyświetlać ją na wyświetlaczu, jeśli zajdzie taka potrzeba, albo w dowolnym momencie włączyć inny tryb pracy modułu.

Czytnik kart pamięci

Ostatnim trybem jest możliwość użycia modułu w funkcji czytnika kart pamięci micro SD. Jest to o tyle ciekawa możliwość, że na potrzeby docelowego mikrokontrolera, który potrzebuje np. co jakiś czas zapisać dane na karcie pamięci lub odczytać dane, można „w locie” przełączyć moduł z dowolnego trybu pracy w tryb czytnika kart. Gdy mikrokontroler sterujący modułem ATB-WAV Player wykona żądane operacje na karcie i zajdzie potrzeba odtworzenia komunikatów dźwiękowych, nie będzie żadnego problemu, aby przywrócić tryb sterowania za pomocą UART. Pracę w tym trybie ilustruje rysunek 8, jednak wymaga on dodatkowych wyjaśnień. Jest to związane z większą liczbą sygnałów, które w takim wypadku musi obsługiwać mikrokontroler sterujący modułem.

Rysunek 8. Tryb pracy czytnika karty pamięci micro SD za pomocą SPI

Po pierwsze, dostęp do karty pamięci w omawianym trybie jest przezroczysty. Oznacza to, że mikrokontroler nadrzędny przejmuje (wywłaszcza) magistralę SPI od modułu ATB-WAV Player. W tej sytuacji ATmega328P w module odłącza się od magistrali SPI, ustawiając swoje piny MOSI, MISO oraz SCK w stanie wysokiej impedancji, aby nie przeszkadzać mikrokontrolerowi sterującemu. W tym trybie ATmega328P mogłaby zostać wprowadzona w tryb głębokiego uśpienia tuż po zwolnieniu magistrali SPI. Jest jednak mały kłopot związany z zastosowanym złączem typu KANDA albo inaczej mówiąc – z liczbą pinów, ponieważ zabraknie jednego pinu, który mógłby przekazać bezpośrednio sprzętowy sygnał CD (Card Detect) z gniazda karty pamięci. Jak wiemy, jest to zwykły styk, zwierany do GND po włożeniu karty do gniazda. To właśnie w tym celu powstała alternatywna funkcjonalność pinu 4 gniazda/wtyku modułu ATB-WAV Player. Domyślnie, w obu poprzednio opisanych trybach pracy, pełnił on funkcję sygnału TX linii UART (RS232). Tymczasem w tym wypadku, po przełączeniu w tryb czytnika karty, użytkownik (mikrokontroler nadrzędny) powinien otrzymać w zasadzie „czysty” interfejs dostępu do karty pamięci, w którym istotną funkcję pełni właśnie sygnał CD, informujący o fakcie osadzenia karty w gnieździe, aby nie dokonywać wcześniej prób jej odczytu czy zapisu, bo wtedy zawsze zakończy się to różnymi, nieprzewidzianymi błędami.

Przełączenie w tryb czytnika kart pamięci jest realizowane w bardzo prosty sposób za pomocą sygnału EN (Enable), który w każdym z pozostałych trybów pracy musi być dołączony do GND. Należy pamiętać, że sygnał EN w module ATB-WAV Player jest wewnętrznie podciągnięty do VCC, a zatem wystarczy po prostu odłączyć od niego niski poziom, a moduł od razu przejdzie w tryb czytnika karty pamięci. Można także wystawić stan wysoki z zewnętrznego mikrokontrolera sterującego modułem. Natychmiast po odłączeniu wejścia EN od masy lub podaniu poziomu wysokiego, pin 4 zaczyna pełnić funkcję wyjścia z gniazda karty pamięci CD. Jednak nie jest on przekazywany w sposób sprzętowy. Jego funkcjonalność jest emulowana programowo przez mikrokontroler ATmega328P znajdujący się w module. Z tego właśnie powodu nie zostaje on usypiany w tym trybie pracy. Wciąż wykonuje swój program, w tym wypadku z maksymalną szybkością bada stan fizycznego wejścia CD z gniazda karty pamięci i przekazuje go na swój pin wyjściowy PD7, który jest doprowadzony do pinu 4 złącza modułu. Naturalnie takie podejście powoduje pewne opóźnienie przekazywanego sygnału, jednak w wypadku sygnału CD jest to nieistotne.

Przy okazji, skoro nawet w tym trybie jest zaprzęgnięty do pracy mikrokontroler ATmega328P, to uznałem, że warto, aby wykonywał jeszcze jakieś dodatkowe operacje. Szybko okazało się, że poza tym, iż może on wciąż sterować LED-em pełniącym funkcję sygnalizatora poprawności włożenia do gniazda karty pamięci (świeci, gdy karta w gnieździe), udało się również badać stan magistrali SPI. Dzięki temu, gdy następuje jakakolwiek komunikacja, wtedy dioda LED migocze.

Bardzo łatwo sprawdzić, czy moduł działa w omawianym trybie. Wystarczy włączyć zasilanie (piny: 2 – VCC oraz 10 – GND), nie łączyć z GND sygnału EN (pin 8) i obserwować LED podczas wkładania/wyjmowania karty pamięci. Będzie on świecił, gdy karta jest umieszczona w gnieździe i zgaśnie, gdy zostanie wyjęta. To jest pierwszy, szybki, praktyczny test omawianego trybu pracy. W tym samym czasie można obserwować lub za pomocą woltomierza sprawdzić poziom logiczny na wyjściu CD. Będzie ono wyzerowane, gdy karta będzie włożona lub ustawione, gdy wyjęta. Dostęp do karty sprowadza się jednak do użycia SPI, w skład której wchodzą sygnały: MOSI (pin 1), MISO (pin 9), SCK (pin 7) oraz CS (pin 6). Jeśli moduł ma być dołączony do magistrali SPI mikrokontrolera nadrzędnego, bezwzględnie należy pominąć sygnał RESET, ponieważ może to zakłócić proces programowania mikrokontrolera. Dlatego najwygodniejsze jest osadzanie modułu ATB-WAV Player w gnieździe KANDA, o ile takie zostało zastosowane w projekcie, ponieważ na czas programowania nadrzędnego trzeba po prostu wyjąć moduł ATB-WAV Player ze złącza KANDA. Można również rozłączyć zworkę SMD na linii RESET modułu.

Po dołączeniu do mikrokontrolera sterującego sygnały MOSI, MISO, SCK, CS oraz CD karta osadzona w gnieździe natychmiast staje się dostępna. Mikrokontroler nadrzędny może używać dowolnego rodzaju dostępu do karty pod warunkiem, że będzie on obsługiwał system FAT16/32. Jeśli system zostanie zmieniony na własny, to moduł ATB-WAV Player straci możliwość odczytu plików, a tym samym odtwarzania plików dźwiękowych. Mikrokontroler nadrzędny może zatem korzystać z dowolnych bibliotek dostępu do kart pamięci, z obsługą systemu FAT16/32, w tym z najbardziej popularnych „FatFS” (zapis/odczyt) czy też „PetitFS” (głównie odczyt).

Opisywany tryb idealnie przydaje się np. w sytuacjach, gdy mikrokontroler nadrzędny potrzebuje szybkiego i bezpośredniego dostępu do plików graficznych wyświetlanych na wyświetlaczu, nawet TFT-LCD. Przypominam, że komunikacja SPI odbywa się w standardzie napięciowym TTL, chyba że we własnym zakresie zastosowana zostanie konwersja napięć na liniach SPI po to, aby mieć dostęp do karty, z poziomu mikrokontrolera sterującego, zasilanego napięciem +3,3 V. Należy jednak wciąż zapewnić poprawne zasilanie +5 V dla modułu ATB-WAV Player.

Praca w trybie programowania modułu ATB-WAV Player

Tego trybu w zasadzie nie wymieniłem na początku z uwagi na fakt, że dzięki temu, że zastosowano odpowiednik do złącza KANDA z przemyślanym dopasowaniem sygnałów. Ten tryb jest dostępny bezpośrednio po uruchomieniu przy założeniu, że kropelką cyny są zwarte punkty lutownicze J2, J3 i J4 umieszczone tuż obok złącza. Jeśli nie zamierzamy wykorzystywać trybu pracy modułu jako czytnika kart pamięci, można z powodzeniem rozlutować zworki J2, J3, J4 oraz J5 po pierwszym zaprogramowaniu modułu, ponieważ oprogramowanie na PC zapewnia możliwość dalszych aktualizacji wsadu (firmware'u) modułu za pomocą bootloadera poprzez UART (RS232 z konwerterem MAX232).

W celu aktualizacji firmware'u za pomocą bootloadera wystarczy dołączyć zasilanie modułu ATB-WAV Player oraz linie RX i TX do dowolnej przejściówki USB/RS232, mając jednak na uwadze to, aby pracowała w standardzie napięciowym TTL. Inaczej operacja aktualizacji może zakończyć się niepowodzeniem.

Oprogramowanie narzędziowe dla PC

Rysunek 9. Widok głównego okna programu narzędziowego ATB_WAV.EXE

W trakcie pisania tego artykułu wciąż trwają jeszcze intensywne prace rozwojowe nad programem o nazwie ATB_WAV dla systemów MS Windows. Na rysunku 9 przedstawiono zrzut ekranu z głównego okna programu, w którym widać podstawowy interfejs użytkownika służący do przeprowadzenia testów modułu, odtwarzania plików dźwiękowych, regulacji głośności oraz wielu innych parametrów pracy modułu. W chwili obecnej program komunikuje się z modułem jedynie za pomocą RS232, jednak trwają prace, aby umożliwić zdalny radiowy dostęp za pomocą modułu ATNEL-WIFI232-T. Obrazek zielonej karty elektronicznej w prawym dolnym rogu okna programu stanowi przycisk pozwalający odczytać całą zawartość karty pamięci (strukturę w postaci drzewka folderów) plików na niej zapisanych w formacie MS DOS (8+3). Dzięki temu możemy sprawdzić, jak wyglądają skrócone nazwy plików, ale również folderów, z których chcielibyśmy później skorzystać w mikrokontrolerze sterującym. Po kliknięciu myszką na tej ikonce ujrzymy okno prezentujące zawartość karty pamięci jak na rysunku 10.

Rysunek 10. Widok okienka programu ze strukturą folderów oraz plikami

Jak widać na rysunku 10, eksplorator karty SD z poziomu komputera PC potrafi odczytać zawartość karty pamięci nie tylko jeśli chodzi o pliki dźwiękowe typu *.wav, lecz wszystkie pliki z dowolnymi rozszerzeniami. Z poziomu tego okna programu użytkownik może poprzez dwukrotne kliknięcie na nazwie pliku *.wav spowodować jego odtwarzanie w trybie niezależnego odtwarzacza plików dźwiękowych. Obsługiwane są również inne rodzaje plików w celu ich odczytu z karty, np. pliki typu *.txt lub *.csv. Dzięki temu nie ma konieczności wyjmowania karty pamięci z modułu ATB-WAV Player i umieszczania jej w czytniku kart pamięci, szczególnie gdy akurat nie mamy go pod ręką. Nie będę na tym etapie opisywał pozostałych zakładek programu z uwagi na to, że program wciąż się rozwija i być może w czasie, gdy ukaże się artykuł, będzie miał sporo dodatkowych możliwości oraz oprogramowane do tej pory wszystkie widniejące zakładki. W programie została zaimplementowana funkcjonalność związana z możliwością wgrania pełnego wsadu do mikrokontrolera z użyciem programatora USBASP, a następnie aktualizacji poprzez mechanizm bootloadera, wgrywania aktualizacji firmware'u, jeśli takie się pojawią, za pomocą przejściówki USB/RS232.

Kolejnym darmowym programem narzędziowym jest PetitGen.EXE służący do wygodnego tworzenia „pustych” plików na kartę pamięci, do których później będzie można zapisywać dane za pomocą komendy AT+FWRITE. Oba programy można pobrać za darmo ze strony https://goo.gl/LJ5Joq.

Na zakończenie

W najbliższym artykule na łamach „Elektroniki Praktycznej” postaram się na przykładzie opisywanego wcześniej Magic Matrixa pokazać sposób integracji opisywanej karty dźwiękowej wraz z przykładami jej obsługi z poziomu mikrokontrolera AVR w języku C.

Wyjaśnię teraz, dlaczego niektóre zdjęcia czy grafiki użyte w artykule zawierają obrazek „rybki”. Związane jest to z formą obudowy przewidzianej do modułu ATB-WAV Player, która w pewnym zakresie, przypomina swoim kształtem właśnie rybę. Stąd też często zamiennie używam nazwy dla modułu „Fish-Player”. Proszę zwrócić uwagę, że na niektórych obrazkach widać nawet w postaci 3D obudowę, wykonaną tak naprawdę z przezroczystej pleksi za pomocą jednej z tańszych frezarek. Jeśli interesuje Was również ta tematyka, zapraszam wkrótce do artykułów wprowadzających każdego początkującego w świat obróbki CNC za pomocą m.in. takich programów jak Mach3 oraz innych niesamowitych i co ciekawe – darmowych, profesjonalnych narzędzi do projektowania tego typu obudów na potrzeby frezarek, prezentacji 3D i nie tylko. Życzę dobrej zabawy!

Mirosław Kardaś
biuro@atnel.pl

Artykuł ukazał się w
Elektronika Praktyczna
styczeń 2018
DO POBRANIA
Pobierz PDF Download icon
Elektronika Praktyczna Plus lipiec - grudzień 2012

Elektronika Praktyczna Plus

Monograficzne wydania specjalne

Elektronik listopad 2024

Elektronik

Magazyn elektroniki profesjonalnej

Raspberry Pi 2015

Raspberry Pi

Wykorzystaj wszystkie możliwości wyjątkowego minikomputera

Świat Radio listopad - grudzień 2024

Świat Radio

Magazyn krótkofalowców i amatorów CB

Automatyka, Podzespoły, Aplikacje październik 2024

Automatyka, Podzespoły, Aplikacje

Technika i rynek systemów automatyki

Elektronika Praktyczna listopad 2024

Elektronika Praktyczna

Międzynarodowy magazyn elektroników konstruktorów

Elektronika dla Wszystkich listopad 2024

Elektronika dla Wszystkich

Interesująca elektronika dla pasjonatów