Skip to main content
Version: FILS English

Theremin Sound Station

A touchless audio station that equalizes and controls music tracks using hand gestures and distance sensing.

info

Author: Mitrea Briana-Ștefania
GitHub Project Link: https://github.com/UPB-PMRust-Students/fils-project-2026-briana1012

Description

The Theremin Sound Station is an embedded audio system that allows users modify the basic audio equiliser parameters without touching it. By combining Time-of-Flight (ToF) distance sensing and gesture recognition, the device acts as a digital equaliser and controller. The right hand selects which part of the frequency spectrum to modify via gestures (left, right etc.), while the left hand's height (distance) determines the intensity of the change.

The system reads .wav files from a microSD card, decodes them via an I2S DAC, and provides visual feedback through an LCD display and a 16-LED Neopixel ring. It also transmites the signal changes through a usb to a computer in order to display the wave.

Motivation

As a 2nd-year student passionate about music and sound engineering, I wanted to combine my interest in unique musical instruments (like the Theremin) with embedded systems. I also want to be a sound engineer or design sound systems once I finish university, because I'm extreamly passionate about signal processing and sounds.

Architecture

The project is built on the STM32 Nucleo U545RE-Q using the Embassy asynchronous framework.

Log

Week 30 March - 5 April

  • Initial project proposal and research into Rust embedded ecosystem.
  • Acquired the STM32 Nucleo U545RE-Q board.
  • Set up the Rust toolchain (probe-rs, thumbv8m.main-none-eabihf).
  • Bought required hardware.

Week 13 - 19 April

  • Soldered extension pins to the sensors.
  • Reseached SAI pins.

Hardware

The project uses a modular design with three "Sound Cubes" to separate sensors from the main control unit, preventing interference.

Schematics

The project was designed in Altium Designer.

Bill of Materials

DeviceUsageApprox. Price
STM32 Nucleo U545RE-QMain Microcontroller (Cortex-M33)120 RON
UDA1334A DACI2S Audio Decoder27 RON
VL53L0X SensorTime-of-Flight Distance Sensing45 RON
APDS-9960 SensorGesture and Proximity Detection14 RON
ST7735 tft128x160 Track Information Display and storage for music tracks48 RON
16 Neopixel RingVisual feedback/Equalizer levels20 RON
JBL GoFinal audio output (AUX)-

Software

The project is written entirely in Rust using the no_std environment for maximum performance and memory safety.

LibraryDescriptionUsage
embassy-stm32Async HAL for STM32Main framework for task management
vl53l0xToF DriverReading hand height for EQ
apds9960Gesture DriverTrack and menu control
embedded-sdmmcFAT/SDMMC stackReading .wav files from SD
smart-ledsWS2812B DriverControlling the Neopixel ring
  1. Embassy Documentation
  2. STM32U5 Reference Manual
  3. Audio equilizer reference