Nr.20 – MP3 Shield

Mit einem mp3-Shield können mp3 Dateine, welche vorher auf einer FAT32-Micro-SD-Karte abgespeichert wurden, abgespielt werden.

mp3-Shield

Material: Mikrocontroller / MP3 Shield Vs1053 / Micro SD Karte (Materialbeschaffung: www.funduinoshop.com)

Wichtiger Hinweis : Die SD-Karte muss das FAT32 Format haben. Durch einen Linksklick auf den entsprechenden Wechseldatenträger kann „Formatieren…“ ausgewählt werden. In diesem sich öffnenden Fenster kann unter „Dateisystem“ „Fat32“ ausgewählt werden.

Das mp3-Shield kann auf den Mikrocontroller aufgesteckt und umgehend verwendet werden. Es benötigt lediglich die „ArduinoLibrary-vs1053 for Sdfat“ Library, welche Sie hier finden und downloaden können.

Auf der Website http://www.fromtexttospeech.com/ können Sie kostenfrei eigene mp3 Dateien erstellen.

Damit Sie den abgespielten Track auch hören können, müssen Sie einen Kopfhörer/Lautsprache per AUX-Kabel mit dem Shield verbinden. Den richtigen Anschluss können Sie dem obigen Bild entnehmen.

Aufgabe 1: Das mp3-Shield soll eine mp3-Datei in einem sechs sekündigen Abstand wiederholend abgespielt werden.

#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
}

Aufgabe 2: Wir möchten nun eine Temperatur mit dem LM35 erfassen und anschließend eine Soundfile abspielen, die dem erfassten Temperaturwert entspricht. Bei +12°C soll also die Datei mit dem Namen „Track024“ abgespielt werden.

LM35, der mit einem Schraubklemmenshield mit dem mp3 Shield verbunden wurde

Material : Mikrocontroller / mp3-Shield / Schraubklemmen Shield / LM35 Temperatursensor

Das mp3 Shield wird auf das Mikrocontroller Board gesteckt. Anschließend wird der LM35 durch das Schraubklemmenshield mit dem Board verbunden. Dabei entspricht das schwarze Kabel des LM35 dem GND, das rote Kabel dem 5V Anschluss und das gelbe Kabel dem analogen Signal A0.

Auf der Website http://www.fromtexttospeech.com/ können Sie kostenfrei eigene mp3 Dateien erstellen. Für die Bearbeitung dieser Aufgabe ist es also notwendig, dass Sie beliebig viele Dateien mit den entsprechenden Temperaturwerden erstellen.
Es ist dabei essentiell, dass die mp3 Dateien passend zu den Temperaturen benannt werden. Das beudetet, dass die Datei für +12°C „track012“ heißen muss, die Datei für +13°C „track013“ usw. . Diese werden anschließend auf der verwendeten SD-Karte gespeichert.

Damit Sie den abgespielten Track auch hören können, müssen Sie einen Kopfhörer/Lautsprache per AUX-Kabel mit dem Shield verbinden. Den richtigen Anschluss können Sie dem obigen Bild entnehmen.

Code:

#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
}