A fully menu-driven, standalone MP3 player with OLED display, physical buttons, and real-time volume controlโall powered by Arduino.
Features โข Quick Start โข Hardware โข Contributing
|
๐ถ MP3 Playback ๐ Folder Browser ๐ฅ๏ธ OLED Display ๐๏ธ Physical Controls |
๐ Real-Time Volume โญ๏ธ Auto-Advance ๐ Reset Function โก USB Powered |
In an era of streaming services and smartphone apps, there's something special about a physical music player you built yourself.
- ๐ง Tangible music experience - Physical buttons beat touchscreens for music control
- ๐ ๏ธ Learn by building - Perfect project for understanding Arduino, displays, and audio modules
- ๐ต Distraction-free listening - No notifications, no apps, just music
- ๐จ Customizable - Add your own features, design your own case
- ๐ฐ Affordable - Build a unique music player for under $30
This project brings back the joy of dedicated music players while teaching valuable electronics and programming skills. It's nostalgia meets modern DIY culture. ๐ป
Hardware:
- Arduino Uno
- DFPlayer Mini module
- 0.96" I2C OLED display (SSD1306)
- 4 push buttons
- 10kฮฉ potentiometer
- 8ฮฉ 3W speaker
- microSD card (formatted FAT32)
- Jumper wires & breadboard
Software:
- Arduino IDE
- Required libraries (see Installation)
1. Clone the repository
git clone https://github.com/HimC29/Arduino-Boombox.git
cd Arduino-Boombox2. Install Arduino libraries
Open Arduino IDE โ Tools โ Manage Libraries, then install:
Adafruit GFX LibraryAdafruit SSD1306DFRobotDFPlayerMini
3. Prepare your microSD card
# Format to FAT32
# Copy MP3 files to the root directory
# Files should be named: 001.mp3, 002.mp3, etc.
# Optional: Use the provided Python script to sort files
python sort_mp3_files.py /path/to/sd/card4. Wire the components
See the Hardware Connections section below
5. Upload the code
- Open
Arduino-Boombox.inoin Arduino IDE - Select Board: Arduino Uno
- Select your COM port
- Click Upload โฌ๏ธ
6. Power up and enjoy! ๐
| Component | Quantity | Notes |
|---|---|---|
| Arduino Uno | 1 | Or compatible board |
| DFPlayer Mini | 1 | MP3 decoder module |
| OLED Display | 1 | 0.96" I2C (SSD1306, 0x3C) |
| Push Buttons | 4 | Momentary tactile switches |
| Potentiometer | 1 | 10kฮฉ linear |
| Speaker | 1 | 8ฮฉ 3W |
| microSD Card | 1 | Any size, FAT32 format |
| Resistors | 4 | 10kฮฉ (optional, for buttons) |
Button โ Arduino Pin
โโโโโโโโโโโโโโโโโโโโโโโโโ
Back โ D2
Up โ D3
Down โ D4
Center โ D5
DFPlayer โ Arduino
โโโโโโโโโโโโโโโโโโโโโโโโโ
TX โ D10
RX โ D11
VCC โ 5V
GND โ GND
SPK+ โ Speaker +
SPK- โ Speaker -
OLED โ Arduino
โโโโโโโโโโโโโโโโโโโโโ
VCC โ 5V (or 3.3V)
GND โ GND
SDA โ A4
SCL โ A5
Potentiometer โ Arduino
โโโโโโโโโโโโโโโโโโโโโโโโโโ
Signal (middle) โ A0
VCC (side) โ 5V
GND (side) โ GND
| Button | Action |
|---|---|
| Up | Move up in menu / Previous song |
| Down | Move down in menu / Next song |
| Center | Enter folder / Play song / Pause/Resume |
| Back | Return to previous menu |
| Potentiometer | Adjust volume in real-time |
Hold Up + Down simultaneously for 1.5 seconds to access the reset menu:
- Use Up/Down to select Yes/No
- Press Center to confirm
- Resets Arduino via watchdog timer
Songs are organized into folders by genre:
- ๐ค POP
- ๐น Vocal Synth Songs
- ๐ฏ๐ต J-POP
- ๐ฐ๐ท K-POP
- ๐ง Phonk
- ๐ Memes
Each folder maps to a specific track range on your microSD card. Customize folder names and ranges in the code to match your music library!
001.mp3 โ First song
002.mp3
003.mp3
...
100.mp3
101.mp3
โ ๏ธ Important: DFPlayer reads files by upload order, not filename. Use the provided Python script to ensure correct ordering.
- PROGMEM optimization - Stores song/folder names in flash memory to save RAM
- State machine navigation - Clean menu system with folder/song browsing
- Waveform animation - Real-time visual feedback during playback
- Non-blocking volume control - Smooth analog reading without interrupting playback
- Auto-advance - Seamlessly plays next track when current song ends
Adafruit_GFX- Graphics primitives for OLEDAdafruit_SSD1306- OLED display driverDFRobotDFPlayerMini- DFPlayer communicationSoftwareSerial- Serial communication with DFPlayer
Contributions are what make the open-source community such an amazing place! Any contributions you make are greatly appreciated.
- Fork the Project
- Create your Feature Branch
git checkout -b feature/AmazingFeature
- Commit your Changes
git commit -m 'Add some AmazingFeature' - Push to the Branch
git push origin feature/AmazingFeature
- Open a Pull Request
- ๐จ Add custom case designs (3D printable STL files)
- ๐ Battery power support with charging circuit
- ๐ป FM radio module integration
- ๐๏ธ Equalizer controls
- ๐พ Playlist save/load functionality
- ๐ RGB LED visualizer
- ๐ฑ Bluetooth audio streaming
- ๐ Multi-language support
Thanks to everyone who has contributed to Arduino Boombox!
Want to see your name here? Check out the Contributing section!
- Check DFPlayer wiring (TX/RX might be swapped)
- Verify microSD card is formatted as FAT32
- Ensure MP3 files are in the root directory
- Verify I2C address is 0x3C (use I2C scanner sketch)
- Check SDA/SCL connections to A4/A5
- Use the provided Python script to sort files
- DFPlayer reads by upload order, not filename
- Check potentiometer wiring to A0
- Verify potentiometer is 10kฮฉ linear taper
Distributed under the MIT License. See LICENSE for more information.
TL;DR: You can use, modify, and distribute this project freely. Just keep the original license notice.
Built with amazing open-source tools and libraries:
- Arduino - The platform that powers this project
- Adafruit - For excellent display libraries
- DFRobot - DFPlayer Mini library
- All contributors who have helped improve this project
Made with โค๏ธ by HimC29
Report Bug โข Request Feature โข Show Your Build