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”.