Steffs & Gränds Soundbox

Das Ausstandsgeschenk für zwei Kollegen powered by Arduino.

Soundbox

Die Soundbox ließt über einen RFID-Leser eine RFID-Karte aus und spielt eine ihr fest zu geordnete MP3-Datei ab.

Zusätzlich erhält die Soundbox drei Taster :

  • Lauter
  • Leiser
  • Wiedergabe unterbrechen

Design des Holzgehäuses by Kollege Teflonson.

Benötigte Bauteile

  • Arduino Nano
  • Mini-MP3-Player Modul
  • PCB für das Tonuino-Projekt / Selbst erstellen oder im Set kaufen
  • Drei Taster
  • Zwei Lautsprecher mit kleiner gleich 3 Ohm
  • RFID-Leser

Galerie

Die Bildergalerie zeigt den fertigen Aufbau samt Gehäuse usw.



.....

Quellcode


#include "Arduino.h"
#include "SoftwareSerial.h"
#include "DFRobotDFPlayerMini.h"
#include "MFRC522.h"
#include "JC_Button.h"
/*---------------------------------------------------------------------------*/
#define RST_PIN 9                 // Configurable, see typical pin layout above
#define SS_PIN 10                 // Configurable, see typical pin layout above
#define DEBOUNCE 10
/*---------------------------------------------------------------------------*/
Button PLAY_PAUSE(14);
Button VOLUME_UP(15);
Button VOLUME_DN(16);
/*---------------------------------------------------------------------------*/
MFRC522 rfid(SS_PIN, RST_PIN); // Create MFRC522
byte nuidPICC[4];
/*---------------------------------------------------------------------------*/
SoftwareSerial mySoftwareSerial(2, 3); // RX, TX
DFRobotDFPlayerMini myDFPlayer;
/*---------------------------------------------------------------------------*/
String RFID_UID = "";
String RFID_UID_alt = "";
/*---------------------------------------------------------------------------*/
int volume = 30;
/*---------------------------------------------------------------------------*/
static unsigned long timer = millis();
/*---------------------------------------------------------------------------*/
void setup()
{
  mySoftwareSerial.begin(9600);
  Serial.begin(115200);
  Serial.println("Initialisiere Buttons");
  PLAY_PAUSE.begin();
  VOLUME_UP.begin();
  VOLUME_DN.begin();
  Serial.println(F("Initialisiere MP3-Modul .....)"));
  if (!myDFPlayer.begin(mySoftwareSerial)) {  //Use softwareSerial to communicate with mp3.
    Serial.println(F("Unable to begin:"));
    Serial.println(F("1.Please recheck the connection!"));
    Serial.println(F("2.Please insert the SD card!"));
    while(true);
  }
  Serial.println(F("MP3-Modul in Betrieb"));
  myDFPlayer.volume(volume);
  SPI.begin(); // Init SPI bus
  rfid.PCD_Init(); // Init MFRC522 
  delay(500);
}
/*---------------------------------------------------------------------------*/
void increase_volume()
{
  volume = volume + 1;
  if (volume >= 30)
  {
    volume = 30;
  }
  Serial.print("Lautstärke bei ");
  Serial.print(volume,DEC);
  Serial.println(" / 30");
  myDFPlayer.volume(volume);
}
/*---------------------------------------------------------------------------*/
void decrease_volume()
{
  volume = volume - 1;
  if (volume <= 0)
  {
    volume = 0;
  }
  Serial.print("Lautstärke bei ");
  Serial.print(volume,DEC);
  Serial.println(" / 30");
  myDFPlayer.volume(volume);
}
/*---------------------------------------------------------------------------*/
void check_button()
{
  PLAY_PAUSE.read();               // read the button
  if (PLAY_PAUSE.wasPressed())    // if the button was released, change the LED state
  {
    myDFPlayer.pause();
    Serial.println("Play / Pause gedrückt");
  }
  VOLUME_UP.read();               // read the button
  if (VOLUME_UP.wasPressed()) 
  {
    increase_volume();
    Serial.println("Lautstärke PLUS gedrückt");
  }
  VOLUME_DN.read();               // read the button
  if (VOLUME_DN.wasPressed()) 
  {
    decrease_volume();
    Serial.println("Lautstärke MINUS gedrückt");
  }
}
/*---------------------------------------------------------------------------*/
void play_rfid()
{
  if (RFID_UID == "74153C2D")
    {
      Serial.println(RFID_UID + " gelesen / Spiele MP3 - 1");
      myDFPlayer.playMp3Folder(1);
    }
  else if (RFID_UID == "B0259335")
    {
      Serial.println(RFID_UID + " gelesen / Spiele MP3 - 2");
      myDFPlayer.playMp3Folder(2);
    }
  else if (RFID_UID == "64B2832D")
    {
      Serial.println(RFID_UID + " gelesen / Spiele MP3 - 3");
      myDFPlayer.playMp3Folder(3);
    }
  else if (RFID_UID == "A0C27E35")
    {
      Serial.println(RFID_UID + " gelesen / Spiele MP3 - 4");
      myDFPlayer.playMp3Folder(4);
    }
    else if (RFID_UID == "B01F0135")
    {
      Serial.println(RFID_UID + " gelesen / Spiele MP3 - 5");
      myDFPlayer.playMp3Folder(5);
    }
    else if (RFID_UID == "7444B02D")
    {
      Serial.println(RFID_UID + " gelesen / Spiele MP3 - 6");
      myDFPlayer.playMp3Folder(6);
    }
    else if (RFID_UID == "F2CC0335")
    {
      Serial.println(RFID_UID + " gelesen / Spiele MP3 - 7");
      myDFPlayer.playMp3Folder(7);
    }
    else if (RFID_UID == "023C0636")
    {
      Serial.println(RFID_UID + " gelesen / Spiele MP3 - 8");
      myDFPlayer.playMp3Folder(8);
    }
    else if (RFID_UID == "F2FCC635")
    {
      Serial.println(RFID_UID + " gelesen / Spiele MP3 - 9");
      myDFPlayer.playMp3Folder(9);
    }
    else if (RFID_UID == "F28DAF35")
    {
      Serial.println(RFID_UID + " gelesen / Spiele MP3 - 10");
      myDFPlayer.playMp3Folder(10);
    }
   else if (RFID_UID == "F2F82335")
    {
      Serial.println(RFID_UID + " gelesen / Spiele MP3 - 11");
      myDFPlayer.playMp3Folder(11);
    }
  else if (RFID_UID == "022F5836")
    {
      Serial.println(RFID_UID + " gelesen / Spiele MP3 - 12");
      myDFPlayer.playMp3Folder(12);
    }
  else if (RFID_UID == "2243C035")
    {
      Serial.println(RFID_UID + " gelesen / Spiele MP3 - 13");
      myDFPlayer.playMp3Folder(13);
    }
  else if (RFID_UID == "02099636")
    {
      Serial.println(RFID_UID + " gelesen / Spiele MP3 - 14");
      myDFPlayer.playMp3Folder(14);
    }
    else if (RFID_UID == "A0AE7635")
    {
      Serial.println(RFID_UID + " gelesen / Spiele MP3 - 15");
      myDFPlayer.playMp3Folder(15);
    }
    else if (RFID_UID == "34EB832E")
    {
      Serial.println(RFID_UID + " gelesen / Spiele MP3 - 16");
      myDFPlayer.playMp3Folder(16);
    }
    else if (RFID_UID == "209CE62F")
    {
      Serial.println(RFID_UID + " gelesen / Spiele MP3 - 17");
      myDFPlayer.playMp3Folder(17);
    }
    else if (RFID_UID == "20DB792F")
    {
      Serial.println(RFID_UID + " gelesen / Spiele MP3 - 18");
      myDFPlayer.playMp3Folder(18);
    }
    else if (RFID_UID == "2035D82F")
    {
      Serial.println(RFID_UID + " gelesen / Spiele MP3 - 19");
      myDFPlayer.playMp3Folder(19);
    }
    else if (RFID_UID == "C0E86535")
    {
      Serial.println(RFID_UID + " gelesen / Spiele MP3 - 20");
      myDFPlayer.playMp3Folder(20);
    }
  else
    {
     Serial.println(RFID_UID + " gelesen / unbekannt"); 
    }
}
/*---------------------------------------------------------------------------*/
void loop()
{
  if (millis() - timer > 5000) 
  {
    timer = millis();
    RFID_UID_alt = "";
  }
  check_button();
  if ( ! rfid.PICC_IsNewCardPresent())
  {
    return;
  }
  if ( ! rfid.PICC_ReadCardSerial()) 
  {
    return;
  }
  RFID_UID="";
  for (byte i = 0; i < rfid.uid.size; i++) 
  {
     RFID_UID.concat(String(rfid.uid.uidByte[i] < 0x10 ? "0" : ""));
     RFID_UID.concat(String(rfid.uid.uidByte[i], HEX));
  }
  RFID_UID.toUpperCase();
  if(RFID_UID != RFID_UID_alt)
  {
    RFID_UID_alt = RFID_UID;
    play_rfid();
  }
  else
  {
    //Nothing to do here ......
  }
}

...