Inspired by the Revo aesthetic - that classic retro radio look - but with functionality that doesn’t suck in 2026. This is a split-flap radio alarm clock with AirPlay, Spotify Connect, and iPhone wake-time sync. Below is a running log of the decisions, the mistakes, and maybe decisions I’ll rethink in six months.

CAD renders

Iso view Rear view without back panel Side view without case Front view - no flaps in the splitflaps

Enclosure

Prototype: 3D printed PLA on an A1 Bambu Lab. Heat-set brass M3 inserts at every mounting point.

Final: Solid wood or veneered MDF carcass with CNC-routed apertures. The internal frame in printed PLA/ASA with M3 inserts for speakers and PCB standoffs.

Acoustic baffle: Printed panel that splits the electronics bay into two chambers. I’m still debating whether to add a slide-in baffle above the electronics to make the acoustic bay completely sealed. Might be overkill for a small beside table radio.

Display

  • 4x split-flap modules based on Morgan Manly’s open source design
  • 28BYJ-48 stepper motors, one per digit
  • HH:MM format, printed front plate for prototype
  • Warm white SK6812 RGBW LED strip for night illumination, PWM-dimmable via Pi GPIO

I might regret the flipping sound in the middle of the night, but it is a cool concept.

Audio

  • DAC: Raspberry Pi DAC+ HAT (Texas Instruments PCM5122), hardwired internally via solder pads — no RCA connectors used
  • Amplifier: MAX9744 stereo Class D, 20W per channel, 4.5–14V speaker rail
  • Drivers: 2x Dayton Audio DMA58-8 2" full-range, upward-firing
  • Volume control: Alps RS6011YA9A07 linear slider, wired directly to MAX9744 potentiometer input
  • Streaming: shairport-sync (AirPlay 2), librespot (Spotify Connect)
  • Acoustic volume: ~.5L sealed, divided per channel

Compute

  • Raspberry Pi 3A+
  • OS: Raspberry Pi OS Lite
  • Network setup: Captive portal on first boot via RaspAP for WiFi configuration

Electronics

  • Stepper control: 4x PCF8575 I2C GPIO expanders → ULN2003 driver arrays → stepper motors
  • LED control: SK6812 RGBW via rpi_ws281x, 3.3V→5V level shifted
  • Buttons: Snooze and illumination toggle wired directly to Pi GPIO with internal pull-up resistors, active-low
  • I2C bus: PCF8575s (address-configured via A0/A1/A2) + MAX9744 sharing single bus
  • Power: 12V barrel jack input; 5V buck converter (Pololu D24V25F5) for Pi and logic rails; 12V direct to MAX9744 speaker rail

Power Rails

Rail Consumers
12V MAX9744 speaker output
5V Raspberry Pi, PCF8575s, ULN2003s, SK6812 strip
3.3V I2C logic (supplied by Pi onboard regulator)

Controls

  • Volume: Alps RS6011YA9A07 linear slider (top panel)
  • Snooze: Large custom cap over Omron B3F or C&K PTS526, two-point stabiliser, walnut or brass face cap
  • Illumination toggle: Panel mount momentary button
  • Power: Latching panel mount switch (Apem/E-Switch 16–19mm)

iPhone Integration

  • Wake-time sync: iOS Shortcuts personal automation triggers on alarm, POSTs wake time to Pi HTTP endpoint
  • Home hub: Required for reliable automation execution without on-device confirmation
  • AirPlay: shairport-sync, appears as AirPlay 2 speaker in Control Centre
  • Spotify: librespot Spotify Connect client

Software Stack

  • shairport-sync — AirPlay 2 receiver
  • librespot — Spotify Connect
  • rpi_ws281x — SK6812 LED control
  • RPi.GPIO — button handling with software debounce
  • Flask or similar — lightweight HTTP server for alarm time endpoint and local settings UI
  • RaspAP — captive portal WiFi setup

Current status: Case & inner frame printed in PLA, tolerances checked. Reduced inner dimensions of case by .1 mm for a snug but still workable fit. Will update further when electronics arrive.