PiGlowTune
PiglowTune is a Rust-powered project that syncs LED light patterns with music in real time.
Author: Stoean Miruna-Teodora
GitHub Project Link: [https://github.com/UPB-PMRust-Students/project-mirunastoean]
Description
This project features a music-reactive LED system powered by a Raspberry Pi Pico W 2, which lights up 5 RGB LEDs in real time based on sound intensity. Using 2 shift registers (74HC595), the Pico controls each LED’s color and brightness through pulse and fade effects. A web app connected over Wi-Fi allows you to remotely select different LED effects, making it easy to switch between vibrant color modes and create an interactive light-and-sound experience.
Motivation
My motivation for this project comes from my passion for both music and visual aesthetics. I've always been fascinated by how sound can be transformed into something you can see and feel, not just hear. This project gave me the perfect opportunity to blend those interests by creating a system where music drives a visual experience in real time. I wanted to explore how technology could bridge the gap between auditory and visual art, and building a music-reactive LED setup felt like a natural and exciting challenge—especially with the added control and customization through a web interface.
Architecture

The sound sensor picks up music and sends audio intensity data to the Raspberry Pi Pico W 2, which also connects via Wi-Fi to a mobile web app for remote control. The Pico processes the analog sound input and controls 5 RGB LEDs (common cathode) using 2× 74HC595 shift registers, with each RGB channel driven through current-limiting resistors. The entire LED system is powered by an external 5V power supply. The LEDs respond to music with synchronized light effects, including pulsing and dynamic color changes.
Log
Week 5 - 11 May
After purchasing all the necessary materials for my project, I began assembling the components, connected everything using jumper wires, performed debugging, and verified that my Raspberry Pi was functioning correctly.
Week 12 - 18 May


This week, I began by individually testing all my RGB LEDs to ensure they were functioning properly. I then carefully connected them using two shift registers, which required a lot of patience and precision. After setting up the hardware, I created three distinct lighting effects: Rainbow, Pulse White, and Strobe Party—each selectable by the user. Finally, I made the effects respond to sound by connecting the LEDs to a sound sensor, allowing the lights to react dynamically to audio input.
Week 19 - 25 May
This week, I successfully configured the Wi-Fi on my Raspberry Pi Pico 2W, turning it into an access point. Additionally, I created a simple HTML page where the user can select their desired LED effect. The project's software is finished and I also worked on the design of the project.
Video of the Project working
Hardware

1. Raspberry Pi Pico 2W – Controls the LEDs, processes sound input, and connects to Wi-Fi for command input.
2. Microphone Sound Sensor – Detects sound intensity from music and sends analog signal to the Pico.
3. 5× RGB LEDs (Common Cathode) – Light up based on sound input, creating pulse and color effects.
4. 2× 74HC595 Shift Registers – Control the 15 LED channels (R, G, B for 5 LEDs) using only 3 GPIO pins.
5. 15× Resistors (220Ω–330Ω) – Current-limiting resistors for each RGB channel.
6. Power Supply (5V) – External power source to provide enough current for the LEDs.
7. Breadboard & Jumper Wires – For assembling and wiring the circuit easily.
The project uses several hardware components working together to create light effects synchronized with music. The Raspberry Pi Pico 2W acts as the brain: it receives the audio signal from the microphone sensor, processes it, and controls the RGB LEDs based on the sound intensity. The 5 common-cathode RGB LEDs light up in different colors and pulse according to the music rhythm.
To control all 15 RGB channels (3 colors × 5 LEDs) using only a few GPIO pins from the Pico, two 74HC595 shift registers are used. Each color channel has a resistor to limit current and protect the LEDs.
The LEDs are powered separately by an external 5V power supply to ensure enough current and stable operation. All components are connected on a breadboard, with jumper wires used for easy wiring between them.
Schematics
Bill of Materials
| Device | Usage | Price |
|---|---|---|
| Raspberry Pi Pico 2W | The microcontroller | 39 RON |
| Sound Sensor Module | The sound sensor | 5 RON |
| 2 x Breadboard | The breadboards used | 15 RON |
| 40 x Male-Male Wires | Male to Male Jumpers Wires | 5,99 RON |
| 10 x Female-Male Wires | Female to Male Jumper Wires | 5,99 RON |
| Power Supply Module | Alimentation Source for Breadboard | 4,69 RON |
| 5 x RGB LEDS - common cathode | RGB Leds | 10 RON |
| 2 x Shift Registers sn74hc595n | Shift Registers | [3,99 RON] |
| 15 x Resistors 220 ohms | Resistors for Leds | [0,20 RON] |
Software
| Library | Description | Usage |
|---|---|---|
| embassy-rp | Hardware abstraction layer for RP2040 | Enables async interaction with the microcontroller hardware |
| embassy-net | Networking stack for embedded systems | Manages Wi-Fi connectivity and enables web server features |
| cyw43 | Wi-Fi driver for CYW43439 chip | Supports wireless communication for Raspberry Pi Pico W |
| defmt | Lightweight logging framework | Used for efficient embedded debugging |
| panic-probe | Panic handler for embedded Rust apps | Helps capture crash reports in no-std environments |