Instalacja audiowizualna do statku wykonanego z klocków LEGO
Transkrypt
Instalacja audiowizualna do statku wykonanego z klocków LEGO
Adrian Ratajczyk Projekt MARM Dokumentacja 1. Opis projektu Celem projektu było stworzenie instalacji audiowizualnej do statku wykonanego z klocków LEGO. Po naciśnięciu przycisku na płycie z mikrokontrolerem STM32 ma nastąpić odpowiednia sekwencja audiowizualna polegająca na odtworzeniu dwóch utworów muzycznych i zapalaniu i gaszeniu diod LED w odpowiednim czasie i kolejności. Ponadto po wyzwoleniu sekwencji, system miał być niewrażliwy na bodźce zewnętrzne do czasu zakończenia wykonywania sekwencji. Oprócz zaprogramowania mikrokontrolera wykonano również dwie płytki elektroniczne do sterowania diodami LED, które nie będą prezentowane w niniejszej dokumentacji. Fot. 1 Statek 2. Realizacja projektu Nośnikiem dla plików dźwiękowych jest pendrive obsługiwany przez złącze microUSB znajdujące się na płytce ewaluacyjnej STM32F4-discovery z mikrokontrolerem STM32F407. Pliki dźwiękowe są zapisane na nośniku w formacie MP3. Bufory GPIO zostały wykorzystane do sterowania diodami LED oraz do obsługi przycisku inicjującego sekwencję audiowizualną. Do odtworzenia plików wykorzystano bibliotekę dekodującą format MP3. Wykorzystano również przetwornik DAC do odtwarzania dźwięków. Do gniazda JACK znajdującego się na płytce ewaluacyjnej można podłączyć głośniki w celu dokonania odsłuchu plików dźwiękowych. USB_OTG FAT_FS CORE Dekoder MP3 USB_OTG Pendrive DAC GPIO Button Speaker LED Rys.1 Schemat blokowy systemu 3. Struktura projektu Projekt został napisany w języku C, w środowisku Eclipse IDE for C/C++ Developers w wersji Mars.1 z wtyczką OpenSTM32 IDE. Zainstalowano toolchain arm-none-eabi. Do debugowania programu na mikrokontrolerze wykorzystano openOCD w wersji 0.9.0. Projekt kompilowano z ustawieniem optymalizacji Optimize most (-O3). Bez wykorzystania optymalizacji projekt nie działał prawidłowo na mikrokontrolerze. Dźwięk nie był odtwarzany. Dodatkowo do kontroli wersji wykorzystano rozproszony system kontroli wersji git. Pliki projektu są pogrupowane ze względu na rodzaj plików źródłowych. W folderze „lib” znajdują się biblioteki: • fat_fs by Chan 2009 • helix Version: RCSL 1.0/RPSL 1.0 (dekoder MP3) • STDPeriph • USB_Host • USB_OTG • CMSIS Folder „inc” zawiera pliki nagłówkowe edytowalne przez programistę, a folder „src” zawiera pliki źródłowe edytowane przez programistę. Poniżej opisano najważniejsze pliki projektu: Plik „main.c” Jest głównym plikiem całego programu mikrokontrolera. W tym pliku odbywa się inicjalizacja wszystkich peryferiów takich jak porty GPIO, host USB itd. Zdefiniowane są również funkcje odpowiedzialne za odtwarzanie plików MP3. Uruchamiany jest również licznik SysTick i obsłużone jest przerwanie od tego licznika. Jako, że program realizuje tylko jedną funkcję, tj. odtwarzanie sekwencji audiowizualnej nie zadbano o szybką obsługę przerwania. Stąd kod w funkcji przerwania nie jest krótki (dużo warunków do sprawdzenia itd.). W obsłudze przerwania zawarto całą sekwencję audiowizualną wykonywaną w zależności od ustawianych flag. Plik „config.h” W tym pliku zdefiniowano porty GPIO i piny używane do sterowania diodami LED. Plik „animation.h” W tym pliku zdefiniowano wartości decydujące o wyglądzie sekwencji audiowizualnej. Plik „lights.c” Implementacja funkcji inicjalizujących i sterujących portami GPIO do sterowania diodami LED. 4. Załączone pliki • • • „projekt.rar” - archiwum z plikami projektu „sprawozdanie.pdf” - plik ze sprawozdaniem „20151201_212000.mp4” - film przedstawiający działającą instalację audiowizualną zamontowaną na statku 5. Uwagi dodatkowe Aby dźwięk był poprawnie odtworzony należy sformatować pendrive do systemu plików FAT32 i wgrać dwa pliki dźwiękowe nazwane: „burza.mp3” oraz „salwa.mp3”.