Skip to main content
Version: ACS CC

2000s Romanian Pop Music Player

A coin-operated music player that plays Romanian pop hits from the 2000s and displays track metadata on an OLED screen.

info

Author: Maria-Elena Tudor
GitHub Project Link: https://github.com/UPB-PMRust-Students/proiect-mariacthi

Description

This project combines the nostalgic feel of classic jukeboxes with a curated playlist of Romanian pop music from the 2000s. Users insert a coin to unlock playback; track information (title, artist, duration, release year) is shown on an OLED display. Physical buttons allow play/pause, previous/next, shuffle, and volume control.

Motivation

At every party I attend, Romanian hits from the 2000s always come on—and I love that era’s pop sound. I’ve also always been fascinated by the jukeboxes featured in movies. Merging these two ideas into a single device seemed like a fun, tangible way to share my favorite decade of music with friends.

Architecture

Schematic diagram

Microcontroller Raspberry Pi Pico 2W runs embedded Rust firmware, coordinating all peripherals.

  • Tasks:
    • Handles peripheral I/O (SPI, I²C, GPIO, PWM)
    • Manages shuffle queue and metadata parsing
    • Debounces buttons & validates coin input

OLED Display shows metadata over I2C (song title, artist name, duration).

Tactile Buttons read GPIO inputs for user controls.

Coin Validator Sensor detects insertion of a valid coin/token and signals the microcontroller to unlock playback for one track.

Audio Amplifier + Speaker decodes MP3 through I2S and drives speaker via PWM.

SD Card Module stores MP3 files; accessed over SPI.

Log

Week 5 - 11 May

Week 12 - 18 May

Week 19 - 25 May

Hardware

The entire system is built around a Raspberry Pi Pico 2 W running embedded Rust, which reads MP3 files off a microSD card, drives a compact SSD1306 OLED screen for track info, and monitors both tactile buttons and a coin‐validator sensor for user input. Audio is streamed digitally to an amplifier and speaker, while everything is powered from a single regulated 5 V source and prototyped on a breadboard for easy iteration.

Schematics

Kicad Schematic

Bill of Materials

DeviceUsagePrice
Raspberry Pi Pico 2WThe microcontroller39.66 RON
Raspberry Pi Pico 2WDebug39.66 RON
Display OLED 128x64 - 0.96" SPIUser interface display23.29 RON
MicroSD Card ModuleStorage for MP3 files7.14 RON
Card MicroSD 32Gb - clasa 10Memory Card42.89 RON
Amplificator 3W I2S - MAX98357AAudio output17.03 RON
Difuzor 50mm - 2W - 32ohmAudio output device4.82 RON
Modul senzor Ultrasonic - detector distanta HC-SR04Coin sensor9.75 RON
Electronic components: buttons, wires, pins and BreadboardElectronic Components80 RON

Software

LibraryDescriptionUsage
embassyAsync executor and HAL integration for embeddedProvides task scheduling, timers, and async support
embedded-halHardware Abstraction Layer for embedded RustUnifies SPI, I2C, GPIO and PWM drivers
display-interfaceGeneric display APIAbstracts over SSD1306 driver for easy text & graphics
ssd1306SSD1306 OLED display driverInitializes display, draws frames, and manages framebuffer
randRandom number generationImplements shuffle logic for playback queue
minimp3Pure-Rust MP3 decoderParses MP3 frames and outputs PCM samples