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