In diesem Tutorial möchte ich das MP3 Shield für den Arduino vorstellen.
Das Shield kann bequem auf den Arduino stecken.
In diesem Beispiel verwende ich einen Arduino Leonardo (Klon) dieser ist baugleich mit dem Arduino UNO. Der Mikrocontroller unterscheidet sich vom Chip, Anschlussbuchse und noch ein paar kleineren Feinheiten, welche jedoch bei dem MP3 Shield nicht zum tragen kommen.
Bezug
Zu beziehen ist das Shield über ebay.de* oder aber auch amazon.de* hat dieses im Sortiment. Der Preis liegt hier zwischen 6 € und 23 € je nach Model.
Hinweis von mir: Die mit einem Sternchen (*) markierten Links sind Affiliate-Links. Wenn du über diese Links einkaufst, erhalte ich eine kleine Provision, die dazu beiträgt, diesen Blog zu unterstützen. Der Preis für dich bleibt dabei unverändert. Vielen Dank für deine Unterstützung!
Aufbau
Vorbereitungen
Als erstes benötigt man eine Micro SD Karte im FAT32 Format.
Die Micro SD Card kann man in jedem gut sortierten Elektronikfachhandel (Saturn, Mediamarkt, usw.) oder im Supermarkt für einen schmalen Taler kaufen. Ich habe meine bei Saturn für ca. 10€ gekauft (aber das ist schon deutlich lange her.)
Ein vergleich von den Anbietern kann hier bares Geld sparen, daher nicht gleich beim erstbesten zugreifen.
Formatieren der Micro SD Karte
Je nach Betriebssystem kann das formatieren der SD Karte anders verlaufen, ich habe ein Microsoft Windows 10 und klicke im Explorer (Windows Taste + E) auf das Laufwerkssymbol mit der rechten Maustaste und wähle dort “Formatieren” aus.
Im nun neu geöffneten Fenster wählt man aus der Auswahlliste “Dateisystem” den Eintrag FAT32 aus und bestätigt die Auswahl mit der Schaltfläche “Starten”. Wenn der Vorgang abgeschlossen ist wird dieses mit einem Infodialog quittiert.
Ablage der MP3 Dateien
Die MP3 Dateien müssen für die Verwendung mit der Bibliothek VS1053 von Michael L. Flaga mit einem bestimmten Dateinamen versehen werden. Das Format ist “trackxxx” wobei xxx als Platzhalter für eine dreistellige Zahl steht. Wenn diese Zahl unter 100 bzw. 10 ist dann wird mit Nullen aufgefüllt. zbsp. track099.mp3 oder track001.mp3.
Quellcode
Bibliothek zum abspielen von MP3 Dateien
Für den nachfolgenden Sketch wird die Bibliothek Arduino_Library-vs1053_for_SdFat benötigt welche vom GitHub Repository des Entwicklers Michael P. Flaga heruntergeladen werden kann.
Alternativ kann man die Bibliothek auch über den Bibliotheksverwalter der Arduino IDE installieren.
Wenn man die Bibliothek über den Bibliotheksverwalter oder als *.zip Datei installiert hat, erhält man zusätzlich Zugriff auf 3 Beispiele.
Ich benutze diese Beispiele wieder als Grundlage jedoch vereinfache ich diese um das abspielen genau einer bestimmten Datei von der Micro SD Karte.
Des Weiteren wird die Bibliothek SDFat benötigt. Diese kann man auch über den Bibliotheksverwalter installieren.
#include <SPI.h> // Bibliothek für die Kommunikation über SPI #include <SdFat.h> // Bibliothek für den Zugriff auf die SD Karte (wird benötigt für die Bibliothek vs1053_SdFat) #include <vs1053_SdFat.h> // Bibliothek für das Abspielen von MP3 Dateien SdFat sd; //erzeugen des Objektes für die SD Karte vs1053 MP3player; //erzeugen des MediaplayerObjektes //Definieren der Pause zwischen dem Abspielen von Lieder. const int PAUSE = 2000; void setup() { //Starten der Kommunikation mit der SD Karte //Wenn ein Fehler auftritt soll hier angehalten werden. if(!sd.begin(SD_SEL, SPI_FULL_SPEED)) sd.initErrorHalt(); //Auf das Wurzelverzeichnis der SD Karte wechseln. //Sollte ein Fehler auftreten so wird die Fehlermeldunt "sd.chdir" ausgegeben. if (!sd.chdir("/")) sd.errorHalt("sd.chdir"); //MP3 Shield starten MP3player.begin(); //Setzen der Lautstärke //der erste Wert ist für den linken Audiokanal //der zweite für den rechten Audiokanal MP3player.setVolume(15,15); //Die Lautstärke einstellen } void loop() { //Startet den Timer zum abspielen der Lieder MP3player.available(); //Öffnet das Lied mit der Bezeichnung "track003.mp3". //Die Lieder müssen im Format "trackXXX.mp3" vorliegen. //Wobei XXX für eine dreistellige Zahl steht, sollte die //Zahl unter 100 bzw. unter 10 liegen wird jeweils mit Nullen //aufgefüllt. zbsp. track099.mp3 oder track001.mp3 MP3player.playTrack(3); delay(PAUSE); }
Troubleshooting
SD errorCode: 0X20,0XFF
Im ersten Versuch habe ich den Arduino Leonardo verwendet und folgenden Fehler auf dem seriellen Monitor der Arduino IDE erhalten:
SD initialization failed. Do not reformat the card! Is the card correctly inserted? Is chipSelect set to the correct value? Is there a wiring/soldering problem? errorCode: 0x1, errorData: 0xff
Auf der GitHub Seite findet man folgenden Text “Initially developed on a ATmega328 Arduino UNO/Duemilanove” und dieses gab mir zu denken denn der Arduino Leonardo hat einen ATmega32u4 Chip und nicht einen ATmega328 somit habe ich einen MakerUNO getestet und es hat funktioniert.