- odtwarzanie pojedynczego pliku WAV zapisanego na karcie microSD sformatowanej w systemie FAT32,
- rozpoczęcie odtwarzania po podaniu na zacisk wejściowy impulsu napięcia 3…30 V,
- wyjście monofoniczne o poziomie sygnału regulowanym potencjometrem,
- obsługa plików 8- i 16-bitowych, mono- i stereofonicznych, próbkowanych z częstotliwością 8…48 kHz,
- wbudowany prosty przetwornik cyfrowo-analogowy typu PWM,
- niski pobór prądu w stanie spoczynku: do 230 μA,
- pobór prądu podczas odtwarzania: około 30 mA,
- zasilanie napięciem stałym 4,5…18 V (lub 2,7…3,6 V z pominięciem wbudowanego stabilizatora).
Drzwi, które samoczynnie witają klientów, witryna z czujnikiem ruchu, która fotokomórką wykrywa obecność zainteresowanego człowieka lub prosta instrukcja głosowa, uruchamiana wciśnięciem przycisku – te i inne aplikacje znane z codziennego użytku, które zostały zautomatyzowane elektroniką, wymagają odtwarzania komunikatów głosowych. W latach dziewięćdziesiątych służyły do tego układy z serii ISD, które odeszły już w zapomnienie. To nawet lepiej, bo oferowana przez nie jakość była… taka, jaką udało się wtedy uzyskać. Dzisiaj mamy do dyspozycji znacznie pojemniejsze i tańsze nośniki danych, co umożliwia odtwarzanie dźwięków o zdecydowanie lepszej jakości.
Dzięki temu, że nośnikiem pliku dźwiękowego jest zwykła karta microSD, którą dzisiaj można kupić dosłownie za kilkanaście złotych, można ów dźwięk wygodnie edytować na komputerze, tablecie lub smartfonie, po czym wgrać na kartę jak każdy inny, zwykły plik. To wygodne rozwiązanie, ponieważ pliki WAV są obsługiwane przez wszystkie systemy operacyjne, również te mobilne. Nie jest potrzebna jakakolwiek konwersja do formatu binarnego czy innego, odczytywanego przez bardzo proste systemy mikroprocesorowe.
Zadanie tego układu jest skrajnie proste: po podaniu napięcia na wejście rozpoczyna się odtwarzanie zapisanego pliku. Jeżeli wejście jest aktywowane stale, odtwarzanie przebiega w pętli tak długo, jak długo na wejściu jest obecne napięcie. Po zakończeniu odtwarzania układ wraca do stanu spoczynku. Dlatego można go zaadaptować do bardzo wielu zastosowań, ponieważ nie wymaga od użytkownika jakiegokolwiek dodatkowego działania.
Budowa
Głównym podzespołem zawiadującym jego pracą jest niewielki mikrokontroler typu ATtiny85 z 8-bitowym rdzeniem AVR, taktowanym sygnałem o częstotliwości 16 MHz, dla którego wzorcem jest wewnętrzny generator RC o częstotliwości oscylacji 8 MHz. Wbudowany układ PLL służy do podwojenia częstotliwości dla rdzenia oraz do uzyskania sygnału o częstotliwości aż 64 MHz na potrzeby generowania sygnału PWM. Ten zaś służy do realizacji przetwarzania cyfrowo-analogowego.
Skąd decyzja o wyborze właśnie takiego mikrokontrolera? Po pierwsze jego pamięć Flash pomieści przeszło 6 kB programu. Po drugie jest wyposażony w 512 bajtów pamięci RAM, co jest konieczne przy odczytywaniu bloków z karty SD, które to przychodzą w pakietach po 256 bajtów – wartość ta jest charakterystyczna dla użytej darmowej biblioteki Petit FatFs. Po trzecie układ ma dosyć unikatową – jak na ośmiobitowe, małe mikrokontrolery – możliwość taktowania licznika sygnałem o częstotliwości aż 64 MHz, przez co można generować z jego użyciem sygnał PWM o częstotliwości 250 kHz i rozdzielczości 8 bitów (64 MHz/256=250 kHz), co jest w zupełności wystarczające do odtworzenia sygnału spróbkowanego z częstotliwością 48 kHz lub niższą. Ze względu na niewielką liczbę konfigurowalnych wyprowadzeń (ATtiny85 ma ich zaledwie pięć) nie jest możliwe podanie zewnętrznego sygnału zegarowego stabilizowanego rezonatorem kwarcowym, lecz w tak prostym zastosowaniu wbudowany generator RC jest całkowicie wystarczający.
Mikrokontroler nawiązuje połączenie z kartą microSD poprzez standardowy interfejs SPI, co jest bardzo wygodne z uwagi na jego niewielką liczbę wyprowadzeń. Użyte w tym projekcie złącze karty microSD ma metalową obudowę, która została solidnie połączona z masą układu, a to ze względu na fakt, że w testach pierwszego prototypu okazało się, że regularne odczytywanie danych z karty SD powodowało powstawanie przydźwięku w wytwarzanym sygnale audio. Dopiero zaekranowanie samej karty oraz ścieżek łączących ją z mikrokontrolerem, co zostało zrealizowane poprzez użycie płytki dwustronnej z wylewką masy na jednej stronie, zniwelowało ten przykry odsłuchowo efekt praktycznie do zera.
Z uwagi na wymaganą w tym projekcie oszczędność linii mikrokontrolera, wejście wyzwalające odtwarzanie zostało podłączone do jednej z linii interfejsu SPI, która podczas spoczynku ma stan wysoki, wymuszony przez wbudowany w mikrokontroler rezystor podciągający do dodatniej linii zasilania. Tranzystor T1, który wchodzi w nasycenie po podaniu zewnętrznego impulsu wyzwalającego, nadaje tej linii stan niski za pośrednictwem rezystora R2. W ten sposób, po rozpoczęciu odtwarzania, dalsza obecność impulsu wejściowego nie zaburza współpracy na linii karta microSD – mikrokontroler, ponieważ rezystor ten obciąża ją jedynie prądem o wartości około 1 mA, co jest całkowicie akceptowalne. Po zakończeniu odtwarzania wyprowadzenie znów przyjmuje stan wysoki.
Napięcie zasilające układ wymusza tutaj karta microSD, ponieważ toleruje ona wartości z przedziału 2,7…3,6 V. Na szczęście takie same wartości akceptuje również mikrokontroler, więc nie ma tutaj konfliktu interesów i oba te podzespoły mogą się komunikować bez potrzeby translacji poziomów napięcia. W celu uzyskania stabilizowanego napięcia o wartości 3,3 V, na płytce został dodany stabilizator LDO typu LP2950-33 (US2). Pobiera on jedynie 50 μA prądu spoczynkowego, co jest bardzo dobrym wynikiem, choć przy zasilaniu bateryjnym każdy mikroamper staje się cenny. Stabilizator może okazać się zbyteczny, kiedy mamy do dyspozycji takie właśnie napięcie – montaż US2 można pominąć, zwierając przy tym kroplą spoiwa lutowniczego pola SJ1.