Nr.20 – MP3 Shield

Das MP3 Shield kann MP3 Dateien, welche vorher auf einer Micro SD Karte abgespeichert werden, abspielen.

Sketch Nr.1: Das MP3 Shield soll eine MP3 Datei in einem sechs Sekunden Abstand immer wieder abspielen.

Material: Mikrokontroller Board / MP3 Shield VS1053 /Micro SD Karte

SD Karte:

Wichtiger Hinweis: Die SD Karte muss das FAT32 Format haben. Durch Linksklick auf den entsprechenden Wechseldatenträger kann „Formatieren..“ ausgwählt werden. In dem Fenster, welches sich dann öffnet kann unter „Dateisystem“ dann „FAT32“ ausgwählt werden uns die Speicherkarte entsprechend formatiert werden.

Auf der SD Karte kann eine beliebige MP3 Datei unter dem Namen „track001“ gespeichert werden.

Aufbau: Das MP3 Shield muss nur auf den Mikrocontroller gesteckt werden. Die SD Karte mit der MP3 Datei muss in das MP3 Shield gesteckt werden.

Zur Programmierung:

Es werden zwei Libraries benötigt, welche nicht vorinstalliert sind:

– SFEMP3Shield

– SDFat

Diese können unter folgendem Link heruntergeladen werden und müssen zu der Arduino Software hinzugefügt werden:

Libraries

Code:

#include <SPI.h>      // libraries
#include <SdFat.h>
#include <SdFatUtil.h>
#include <SFEMP3Shield.h>

SdFat sd;       //SD Karte benennen
SFEMP3Shield 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(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();

  MP3player.playTrack(1);     //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
}

Sketch Nr.2: Mit Hilfe eines MP3 Shields, soll die mit dem LM35 gemessene Temperatur angesagt werden.

In dieser Anleitung soll jeweils eine bestimmte MP3 Datei zu einem dazugehörigen Temperaturwert abgespielt werden. Also beispielsweise wenn 24°C vom LM35 gemessen werden, soll die Datei mit dem Namen Track024 abgespielt werden.

Material: Mikrokontroller Board/ LM35 Temperatursensor/ MP3 Shield/ Schraubklemmenshield (für den LM35)

Aufbau:

Das MP3 Shield wird auf das Mikrokontroller Board gesteckt (in unserem Fall ein UNO, MEGA ist natürlich auch möglich). Dann wird der LM35 mit dem aufgesteckten Board verbunden. Schwarzes Kabel > GND, Rotes Kabel > 5V und Gelbes Kabel > A0. Wir haben dazu ein Schraubklemmenshield verwendet, da dies für die Anschlüsse des LM35 am einfachsten ist.

Wichtiger Hinweis: Die SD Karte muss das FAT32 Format haben. Durch Linksklick auf den entsprechenden Wechseldatenträger kann „Formatieren..“ ausgwählt werden. In dem Fenster, welches sich dann öffnet kann unter „Dateisystem“ dann „FAT32“ ausgwählt werden uns die Speicherkarte entsprechend formatiert werden.

MP3 Dateien:

Eine hilfreiche Website für das erstellen der MP3 Dateien ist http://www.fromtexttospeech.com/.

Dort kann ein eingetippter Text in eine gesprochene MP3 Datei umgewandelt werden. Man gibt zum Beispiel „Es sind zwölf Grad Celsius“ in das Eingabefeld ein, wählt die Sprache aus und klickt auf „Create Audio File“. So kann man nun für jede Temperatur eine passende MP3 Datei erstellen.

Für diese Anleitung ist es wichtig dass die MP3 Dateien passend zu der Temperatur benannt sind. Das bedeutet: Die Datei für 12°C muss track012 heißen, die Datei für 13°C muss track013 heißen usw.. Also benennt man alle Dateien passend um und speichert diese auf der SD Karte ab.

MP3 Shield Komponenten:

Die SD Karte mit den MP3 Dateien muss nun in das MP3 Shield gesteckt werden. An den Lautsprecher / Kopfhörer Anschluss kann nun ein Lautsprecher/ Kopfhörer angeschlossen werden um das Ergebnis zu hören.

Code:

#include <SPI.h>      // libraries
#include <SdFat.h>
#include <SdFatUtil.h>
#include <SFEMP3Shield.h>

SdFat sd;       //SD Karte benennen
SFEMP3Shield 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
}