Skip to main content
Version: FILS English

Smart Station

An ambient-aware music controller built on Raspberry Pi Pico W using embedded Rust.

info

Author: Daria Gladkykh
GitHub Project Link: Smart Station on GitHub

Description

Smart Station is an IoT music controller that adjusts playback based on ambient light, offers a touchscreen interface, and includes clock and alarm features.

Motivation

This project was chosen to explore embedded Rust for IoT applications, combining sensor-driven automation with an interactive user interface to create a practical, engaging device.

Architecture

The Smart Station consists of the following main components:

  • Sensor Processing: Handles input from the light sensor (LDR) to detect ambient brightness and trigger playback.
  • User Interface: Manages the OLED touchscreen for music controls, clock display, and alarm settings.
  • Playback Control: Coordinates music playback logic, integrating sensor data and user inputs.
  • Visual Feedback: Drives the RGB LED to indicate system status and provide music-synced visuals.
  • Time Management: Uses the RTC module for clock display and alarm scheduling.

Connections:

  • The Sensor Processing component feeds brightness data to the Playback Control.
  • The User Interface sends user commands (play, pause, etc.) to the Playback Control and queries the Time Management for clock/alarm data.
  • The Playback Control updates the Visual Feedback component to reflect playback status.
  • The Time Management component triggers the Playback Control for scheduled alarms.

System Architecture

Log

Week 5 - 11 May

What was already done:

  • Set up Raspberry Pi Pico W with Rust toolchain.
  • Configured GPIO for light sensor and RGB LED.
  • Initial testing of LDR sensor for ambient light detection.

Week 12 - 18 May

What I plan to do :

  • Integrated SSD1306 OLED touchscreen with embedded-graphics for UI rendering.
  • Implemented basic music controls (play, pause, next, previous).
  • Added RTC module (DS3231) for timekeeping and tested clock display.

Week 19 - 25 May

What I plan to do :

  • Finalized playback logic based on light thresholds.
  • Added alarm functionality with RTC scheduling.
  • Optimized RGB LED pulsing for music feedback and completed system testing.

Hardware

The Smart Station uses a Raspberry Pi Pico W, OLED touchscreen, light sensor, RGB LED, and RTC module for a responsive music control system.

Schematics

KiCAD schematics

Bill of Materials

DeviceQuantityPrice (RON)
Raspberry Pi Pico W3120
TFT SPI Display ST7789V170
Light sensor (LDR)110
Kit with LEDs, buttons, etc.160
RGB LED15
Jumper wires (various sets)140
Breadboards335
Total340 RON

Software

LibraryDescriptionUsage
embedded-halHardware abstraction layerInterfaces for GPIO, ADC, I2C, SPI
rp2040-halRP2040-specific HALLow-level Pico W peripheral access
ssd1306OLED display driverRenders UI on SSD1306 OLED
ds3231RTC module driverTimekeeping and alarm functionality
fugitTime-keeping utilityPrecise timing for RTC and alarms
embedded-graphics2D graphics libraryDraws UI elements on OLED
rppalRaspberry Pi Peripheral AccessGPIO and sensor communication
cortex-m-rtARM Cortex-M runtimeInterrupt handling and scheduling
  1. Rust Embedded Book - Guide for embedded Rust development.
  2. Raspberry Pi Pico W Documentation - Official Pico W reference.
  3. Embedded Graphics Documentation - Resource for UI rendering.
  4. Probe-rs - Tooling for flashing and debugging Rust firmware.