Arduino Halloween MP3 Soundboard
|
Dit Arduino Halloween Soundboard is wederom een eenvoudig project gebouwd met onderdelen die ik al had liggen. Het soundboard werkt heel eenvoudig. Op de SD-kaart staan 16 MP3’s. Zodra één van de 16 toetsen van het keypad worden ingedrukt dan speelt de Arduino de bijbehorende MP3 over de luidspreker. Terwijl een MP3 aan het spelen is kun je een andere toets indrukken, het afspelen wordt afgebroken en het volgende geluid begin direkt.
Net zoals het vorige Halloween-project “Bliksem & onweer: Arduino Halloween project” maken we gebruik van de DFPlayer Mini. Daarnaast is deze keer ook een 4×4 keypad van de partij. Dit is geen kant-en-klaar project maar een beginpunt, je kunt het gebruiken om zelf iets leuks te maken. In deze blog gebruiken we het soundboard met Halloween-geluiden, maar je kunt het natuurlijk ook met andere samples gebruiken.


Arduino Halloween MP3 Soundboard
Voor dit project gebruik ik de onderstaande componenten. De speaker is gerecycled uit een oude PC.
- Arduino Uno (maar een Arduino Nano kan natuurlijk ook)
- DFPlayer Mini MP3 Player module
- MicroSD-kaart (max 32GB)
- Breadboard en jumper kabels
- Speaker (max. 3W) of versterker
- 1K Weerstand
- 4×4 Keypad
Als je alle onderdelen bij elkaar hebt dan sluit het het aan zoals op het onderstaande schema is aangegeven.


Het keypad sluit je volgens onderstaande tabel op de digitale pinnen van de Arduino aan. Pin 1 van het keypad is de linker pin op de connector (het keypad met de bedrukte kant naar boven, zoals op de afbeeldingen).
Keypad pin | Arduino digitale pin |
1 | 5 |
2 | 4 |
3 | 3 |
4 | 2 |
5 | 9 |
6 | 8 |
7 | 7 |
8 | 6 |
De DFPlayer Mini wordt op pin 10 en pin 11 (met 1K weerstand) aangesloten, alsmede 5V en GND:
DFPlayer Mini | Arduino digitale pin |
TX | 10 |
RX | 11 (via 1K weerstand) |
VCC | 5V |
GND | GND |
In het voorbeeld is de DFPlayer Mini op een speaker aangesloten, maar je kunt ook een versterker gebruiken. In onderstaande tabel staan beide mogelijkheden:
DFPlayer Mini | Speaker | Versterker |
SPK_1 | + | |
SPK_2 | – | |
DAC_L | L | |
DAC_R | R | |
GND | GND |


Meer informatie over het aansluiten van de DFPlayer Mini kun je vinden op de Wiki van DFRobot.
Halloweengeluiden, de MP3’s
Een kant-en-klare set van 16 Halloweengeluiden in MP3-formaat (320kbps) kun je vinden in de afdeling downloads of downloaden via onderstaande link. De bestanden (0001.mp3 tot 0016.mp3) moeten in een map met de naam ‘mp3’ op de SD-kaart worden geplaatst. De kaart mag FAT16 of FAT32 geformatteerd zijn. Deze geluiden zijn slechts willekeurig gekozen voorbeelden, het is natuurlijk leuker om zelf geluiden te zoeken.
De Arduino libraries installeren
Om het programmeren wat makkelijker te maken gebruiken we libraries voor het keypad en de DFPlayer Mini. De libraries kun je installeren in “Bibliotheek beheer” waar je kunt komen via het menu Hulpmiddelen > Bibliotheken beheren…
Als eerste de keypad-Library (https://playground.arduino.cc/Code/Keypad/). Zoek op ‘keypad’ en kies de library zoals aangegeven in onderstaande afbeelding.


Daarna installeren we de DFRobotDFPlayerMini-library (https://github.com/DFRobot/DFRobotDFPlayerMini). Zoek op “DFRobotDFPlayer” en kies de library met de naam “DFRobotDFPlayerMini”.


Wanneer deze twee libraries geïnstalleerd zijn dan kunnen we verder met de code voor het soundboard.
Arduino Halloween Soundboard Code
Ook de code is slechts een voorbeeld en een startpunt voor het maken van je eigen creaties. Onderstaande code is gebaseerd op de voorbeeldsketch “HelloKeypad”. Meer voorbeelden kun je vinden in de Arduino IDE onder het menu Bestand > Voorbeelden > Keypad.
#include "Keypad.h" #include "Arduino.h" #include "SoftwareSerial.h" #include "DFRobotDFPlayerMini.h" SoftwareSerial mySoftwareSerial(10, 11); // RX, TX DFRobotDFPlayerMini myDFPlayer; const byte ROWS = 4; //four rows const byte COLS = 4; //four columns char keys[ROWS][COLS] = { {'1','2','3','A'}, {'4','5','6','B'}, {'7','8','9','C'}, {'*','0','#','D'} }; byte rowPins[ROWS] = {5, 4, 3, 2}; //connect to the row pinouts of the keypad byte colPins[COLS] = {9, 8, 7, 6}; //connect to the column pinouts of the keypad Keypad keypad = Keypad( makeKeymap(keys), rowPins, colPins, ROWS, COLS ); String keypadKeys = "1234567890*#ABCD"; void setup(){ mySoftwareSerial.begin(9600); Serial.begin(9600); 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); } myDFPlayer.volume(25); //Set volume value. From 0 to 30 } void loop(){ char keyPressed = keypad.getKey(); if (keyPressed){ Serial.println(keyPressed); int sampleIndex = 1 + keypadKeys.indexOf(keyPressed); //Convert pressed key (1234567890*#ABCD) to sample index (1-16) Serial.println(sampleIndex); myDFPlayer.play(sampleIndex); //Play the chosen mp3 } }
Wordt vervolgd
Met een project als dit kun je zo veel kanten op dat we er ongetwijfeld nog een keer op terug zullen komen. Wat zouden we er zoal nog meer mee kunnen doen?
- Inbouwen in een grappige behuizing
- Een ander thema kiezen dan Halloween
- De toetsen A-B-C-D een “soundbank” laten selecteren zodat je meer geluiden kunt afspelen
- Een OLED– of LCD-display, LEDs etc. aansluiten
- een WiFi-versie maken met een ESP8266 of ESP32
- Etc. etc. etc.
Mogelijkheden genoeg! Heb je er zelf een leuk project mee gemaakt? Zet het in de commentaren hier onder!
Uit de code begrijp ik dat je maximaal 16 geluiden kunt afspelen.
Is de code zodanig aan te passen (ik ben geen programmeur, graag met voorbeeld) dat je géén gebruik maakt van de ABCD knoppen maar voor geluid 11 simpelweg 2x het cijfer 1 intoetst.
Dan zijn de mogelijkheden van de geluiden eindeloos lijkt me.