Skip to content

A boombox made using the Arduino microcontroller board. Using components such as DFPlayer Mini and speakers to make all of this work. Check README for more info.

License

Notifications You must be signed in to change notification settings

HimC29/Arduino-Boombox

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 

History

9 Commits
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

๐ŸŽต Arduino Boombox

A Retro-Inspired Portable MP3 Player Built with Arduino

License: MIT Arduino Made with Love PRs Welcome

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


โœจ Features

๐ŸŽถ MP3 Playback
Play music from microSD card via DFPlayer Mini

๐Ÿ“ Folder Browser
Organize songs by genre or playlist

๐Ÿ–ฅ๏ธ OLED Display
0.96" screen with animated waveform

๐ŸŽ›๏ธ Physical Controls
4 navigation buttons + volume knob

๐Ÿ”Š Real-Time Volume
Analog potentiometer control

โญ๏ธ Auto-Advance
Automatically plays next track

๐Ÿ”„ Reset Function
Button combo for quick restart

โšก USB Powered
Portable with power bank support


๐Ÿค” Why Arduino Boombox?

In an era of streaming services and smartphone apps, there's something special about a physical music player you built yourself.

The Motivation

  • ๐ŸŽง 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. ๐Ÿ“ป


๐Ÿš€ Quick Start

Prerequisites

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:

Installation

1. Clone the repository

git clone https://github.com/HimC29/Arduino-Boombox.git
cd Arduino-Boombox

2. Install Arduino libraries

Open Arduino IDE โ†’ Tools โ†’ Manage Libraries, then install:

  • Adafruit GFX Library
  • Adafruit SSD1306
  • DFRobotDFPlayerMini

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/card

4. Wire the components

See the Hardware Connections section below

5. Upload the code

  • Open Arduino-Boombox.ino in Arduino IDE
  • Select Board: Arduino Uno
  • Select your COM port
  • Click Upload โฌ†๏ธ

6. Power up and enjoy! ๐ŸŽ‰


๐Ÿ”ง Hardware

Components List

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)

๐Ÿ”Œ Hardware Connections

Buttons (INPUT_PULLUP)

Button   โ†’  Arduino Pin
โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
Back     โ†’  D2
Up       โ†’  D3
Down     โ†’  D4
Center   โ†’  D5

DFPlayer Mini

DFPlayer  โ†’  Arduino
โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
TX        โ†’  D10
RX        โ†’  D11
VCC       โ†’  5V
GND       โ†’  GND
SPK+      โ†’  Speaker +
SPK-      โ†’  Speaker -

OLED Display (I2C)

OLED  โ†’  Arduino
โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
VCC   โ†’  5V (or 3.3V)
GND   โ†’  GND
SDA   โ†’  A4
SCL   โ†’  A5

Potentiometer

Potentiometer  โ†’  Arduino
โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
Signal (middle) โ†’  A0
VCC (side)      โ†’  5V
GND (side)      โ†’  GND

๐ŸŽฎ How to Use

Navigation Controls

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

Reset Function

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

๐Ÿ“‚ Music Organization

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!

File Naming Convention

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.


๐Ÿ’ป Software Architecture

Key Features

  • 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

Libraries Used

  • Adafruit_GFX - Graphics primitives for OLED
  • Adafruit_SSD1306 - OLED display driver
  • DFRobotDFPlayerMini - DFPlayer communication
  • SoftwareSerial - Serial communication with DFPlayer

๐Ÿค Contributing

Contributions are what make the open-source community such an amazing place! Any contributions you make are greatly appreciated.

How to Contribute

  1. Fork the Project
  2. Create your Feature Branch
    git checkout -b feature/AmazingFeature
  3. Commit your Changes
    git commit -m 'Add some AmazingFeature'
  4. Push to the Branch
    git push origin feature/AmazingFeature
  5. Open a Pull Request

Ideas for Contributions

  • ๐ŸŽจ 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

๐ŸŒŸ Contributors

Thanks to everyone who has contributed to Arduino Boombox!

Want to see your name here? Check out the Contributing section!


๐Ÿ› Troubleshooting

No sound from speaker

  • Check DFPlayer wiring (TX/RX might be swapped)
  • Verify microSD card is formatted as FAT32
  • Ensure MP3 files are in the root directory

OLED display not working

  • Verify I2C address is 0x3C (use I2C scanner sketch)
  • Check SDA/SCL connections to A4/A5

Songs play in wrong order

  • Use the provided Python script to sort files
  • DFPlayer reads by upload order, not filename

Volume control not working

  • Check potentiometer wiring to A0
  • Verify potentiometer is 10kฮฉ linear taper

๐Ÿ“„ License

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.


๐Ÿ™ Acknowledgments

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

โญ Star this repo if you build one!

Made with โค๏ธ by HimC29

Report Bug โ€ข Request Feature โ€ข Show Your Build

About

A boombox made using the Arduino microcontroller board. Using components such as DFPlayer Mini and speakers to make all of this work. Check README for more info.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published