Skip to main content
Version: FILS English

VibeBox

A Raspberry Pi Pico-based music mood controller with LEDs, LCD, buttons and a speaker

info

Author: Bulugea Miruna Elena
GitHub Project Link: https://github.com/UPB-PMRust-Students/project-mirunabulugea

Description​

A Raspberry Pi Pico project that uses four buttons, each representing a mood(happy,sad,energetic and chill). When a button is pressed, a corresponding playlist is played through a speaker via a DFP Player Mini MP3 module. The LCD displays the mood name, and four LEDs light up in sync with the music beat.

Motivation​

I chose this project because I wanted to build something that combines music, hardware interaction, and visual feedback.I’ve always wanted to have a small device on my wall where I could simply press a button based on how I’m feeling, and instantly have music I’ve selected start playing. Along with the music, I imagined a light show synced to the beat.

Architecture​

Diagram

The main components of the project are:

  • Raspberry Pi Pico W (controller)
  • Four push-buttons (for mood selection)
  • DFPPlayer Mini MP3 module (audio playback)
  • Speaker (audio output)
  • LCD 1602 I2C (displays the current mood)
  • Four LEDs (flash according to music beats)

Connections:

  • Each button connected to a GPIO pin
  • DFPPlayer Mini connected via UART
  • LCD connected via I2C
  • LEDs connected to GPIOs
  • Speaker connected to DFPPlayer Mini output

Log​

Week 5 - 11 May​

Week 12 - 18 May​

Week 19 - 25 May​

Hardware​

Raspberry Pi Pico W: A compact, Wi-Fi-enabled microcontroller board that serves as the core controller for the entire system. It handles button inputs, controls the LEDs, sends data to the LCD display, and communicates with the MP3 player module via UART.

4 Push Buttons: Physical input controls, each one assigned to a specific mood: Happy, Sad, Energetic, and Chill. When a button is pressed, it triggers the corresponding music playlist and lighting pattern.

4 LEDs: Visual feedback components that light up and blink in sync with the beat of the currently playing track.

1602 LCD Display with I2C Module: A simple character display used to show the current selected mood. The I2C module simplifies wiring by reducing the number of GPIO pins needed for connection.

DFPlayer Mini MP3 Module: A compact MP3 player module that can read audio files from a microSD card. It’s controlled via UART from the Raspberry Pi Pico W and outputs audio to a connected speaker.

Speaker: Outputs the audio from the DFPlayer Mini, playing the selected music track in real time based on the mood button pressed

Schematics​

Schematic

Bill of Materials​

DeviceUsagePrice
Raspberry Pi Pico 2WMicrocontroller board that controls the entire system39,66 LEI
Electronic Components Kit (LEDs, Buttons, Wires, Resistors, Breadboard)Interface elements and basic electronics for user input/output60,38 LEI
DFPlayer Mini MP3 ModulePlays audio files based on selected mood13,99 LEI
SpeakerOutputs audio from the MP3 module16,31 LEI
LCD with I2C Interface and Blue BacklightDisplays the current mood and track information16,34 LEI

Software​

Crate / LibraryDescriptionUsage
rp-halHardware Abstraction Layer (HAL) for Raspberry Pi RP2040 microcontrollersControls GPIO pins, delays, and peripherals like buttons, LEDs, and LCD
embedded-halHardware abstraction traits for embedded systemsProvides standard interfaces for digital output, delays, and other peripherals
embedded-graphics2D graphics library for embedded systemsDraws text and simple graphics on the LCD display
embassy (optional)Modern async framework for embedded systemsFor async task management (optional for your setup)
logLogging facade for Rust applicationsDebugging and logging events like button presses or errors
panic-haltMinimal panic handler for embedded systemsStops execution and halts the MCU on panic

1.Music Player using Raspberry Pi Pico and DFPPlayer 2. pmrust/2025 ...