Shield MP3

FunduinoDernière mise à jour le

MP3-Dateien vom Arduino abspielen lassen

Das MP3-Shield VS1053 wird auf den Arduino UNO gesteckt und spielt MP3-Dateien von einer Micro-SD-Karte ab. Eine zusätzliche Verkabelung braucht es nicht, nur einen Kopfhörer oder Aktivlautsprecher am Klinkenanschluss.

Die Anleitung zeigt zuerst, wie eine einzelne Datei abgespielt wird. In der Erweiterung misst ein Temperatursensor LM35 die Temperatur, und das Shield spielt die passende Ansage dazu ab – das Prinzip lässt sich auf jeden anderen Sensor übertragen.

Das MP3-Shield VS1053 mit Micro-SD-Slot und Klinkenbuchse
Das MP3-Shield VS1053

Das MP3-Shield VS1053

Mit dem VS1053-Shield spielt ein Arduino MP3-Dateien ab, die auf einer Micro-SD-Karte liegen. Das Shield wird einfach auf den UNO gesteckt – zusätzliche Verkabelung ist nicht nötig.

Zum Hören schließt du einen Kopfhörer oder Aktivlautsprecher per Klinkenkabel an.

Das MP3-Shield VS1053 mit Micro-SD-Slot und Klinkenbuchse
Das MP3-Shield VS1053

SD-Karte und Bibliotheken vorbereiten

Die Micro-SD-Karte muss mit FAT32 formatiert sein. Unter Windows erreichst du das über einen Rechtsklick auf den Wechseldatenträger und „Formatieren“, dort unter Dateisystem FAT32 wählen.

Zwei Bibliotheken werden gebraucht:

  • Arduino_Library-vs1053_for_SdFat – die Bibliothek für das Shield, auf GitHub
  • SdFat – für den Zugriff auf die Speicherkarte

Eigene MP3-Dateien kannst du kostenlos über einen Text-to-Speech-Dienst erzeugen. Wichtig ist die Benennung: track001, track002 und so weiter.

Die Anleitung schreibt an dieser Stelle „Linksklick“. Das Kontextmenü mit „Formatieren“ öffnet sich unter Windows mit der rechten Maustaste.

Eine Datei abspielen

Der erste Sketch spielt eine einzelne Datei ab und wiederholt das alle sechs Sekunden. Welche Datei gespielt wird, bestimmt die Zahl in playTrack().

Im Sketch steht playTrack(3), der Kommentar daneben spricht von track001 und erklärt das Beispiel anhand einer 2. Die Zahl in der Klammer ist die Nummer der Datei – bei playTrack(3) also track003.

Eine MP3-Datei in Dauerschleife abspielen
#include <SPI.h>      // libraries
#include <SdFat.h>
#include <vs1053_SdFat.h>
SdFat sd;       //SD Karte benennen
vs1053 MP3player;   //MP3 Shield als „MP3Player benennen
int t=6000;       //Der Wert für „t“ gibt im Code den zeitlichen Abstand zwischen dem Abspielen der Datei an.
void setup() {
  if(!sd.begin(SD_SEL, SPI_FULL_SPEED)) sd.initErrorHalt(); //SD Karte mit MP3 Dateien auslesen
  if (!sd.chdir("/")) sd.errorHalt("sd.chdir");
  MP3player.begin();    //MP3 Shield starten
  MP3player.setVolume(10,10); //Die Lautstärke einstellen
}
void loop() {
  MP3player.available();
  MP3player.playTrack(3);     //Das MP3 Shield spielt nun die MP3 Datei mit dem Namen „track001“. Bei einer Datei mit dem Namen „track002“ müsste eine „2“ anstelle der „1“ in diese Klammer.
  delay(t);               //Vorher festgelegte Pause
}

Erweiterung: Temperatur ansagen

In der Erweiterung misst ein LM35 die Temperatur und das Shield spielt die passende Ansage ab. Der Sensor wird über einen Schraubklemmen-Aufsatz angeschlossen: schwarz an GND, rot an 5V, gelb an A0.

Dafür legst du für jeden Temperaturwert eine eigene Datei an – track012 für 12 °C, track013 für 13 °C und so weiter. Der map-Befehl rechnet den Sensorwert in Grad um und übergibt die Zahl direkt an playTrack().

playTrack() wird bei jedem Schleifendurchlauf aufgerufen. Bleibt die Temperatur gleich, startet dieselbe Ansage alle sechs Sekunden neu.

Temperatursensor LM35 über einen Schraubklemmen-Aufsatz am MP3-Shield
LM35 am VS1053 über Schraubklemmen-Aufsatz
Soundfile passend zur gemessenen Temperatur abspielen
#include <SPI.h>      // libraries
#include <SdFat.h>
#include <vs1053_SdFat.h>
SdFat sd;       //SD Karte benennen
vs1053 MP3player;   //MP3 Shield als „MP3Player benennen
int LM35 = A0;      //Der Sensor soll am analogen Pin A0 angeschlossen werden. Wir nennen den Pin ab jetzt "LM35"
int sensorwert;     //Variable für den Sensorwert erstellen
int temperatur = 0;   //Unter der Variablen "temperatur" wird später der Temperaturwert abgespeichert.
int t=6000;       //Der Wert für „t“ gibt im Code die zeitlichen Abstände zwischen den einzelnen Messungen vor.
void setup() {
  Serial.begin(9600);   //Serielle Verbindung starten
  if(!sd.begin(9, SPI_HALF_SPEED)) sd.initErrorHalt();  //SD Karte mit MP3 Dateien auslesen
  if (!sd.chdir("/")) sd.errorHalt("sd.chdir");
  MP3player.begin();    //MP3 Shield starten
  MP3player.setVolume(10,10); //Die Lautstärke einstellen

}
void loop() {
  MP3player.available();
sensorwert=analogRead(LM35);        //Auslesen des Sensorwertes.
temperatur= map(sensorwert, 0, 307, 0, 150);  //Umwandeln des Sensorwertes mit Hilfe des "map" Befehls.
  Serial.println(temperatur);       //Temperatur am seriellen Monitor anzeigen lassen
  MP3player.playTrack(temperatur);      //Das MP3 Shield spielt nun je nach gemessener Temperatur die Datei mit dem passenden Dateinamen ab.
  delay(t);             //Vorher festgelegte Pause
}
Évaluer le guide

Commentaires

Poser une question ou partager une expérience

Écris-nous si quelque chose ne fonctionne pas. Indique-nous ton modèle de carte et le message d’erreur.

Nous vérifions chaque commentaire avant sa publication. Ton adresse e-mail reste chez nous.