AN-010 · Fun · Finished
Started Sep 2025
Switcherooni: flicking the dorm lights from bed
1.0Abstract
I wanted to turn the dorm lights off from bed, so I built a Bluetooth-controlled servo that clamps onto the light switch using its existing screws. Three versions later, Mk3 runs about four days on three AA cells and doesn’t chatter the switch.
At a glance
| Parameter | Value |
|---|---|
| Status | Finished |
| When and where | Sep 2025, my dorm |
| Built with | Arduino Nano RP2040 Connect with BLE, an HS-311 servo on a boosted 6 V rail, 3 × AA rechargeable cells; Fusion 360, PETG on a Bambu Lab X1 Carbon |
| Mk1 → Mk3 | An ESP32-S2 and a micro servo on USB (torque-starved), then an HS-311 in a stiffer enclosure, then the RP2040 with BLE and batteries |
| Battery life | About four days, advertising every 3 s |
| Control | Two hex commands (0x01 / 0x00) over BLE select debounced servo pulse-width presets |
Mk1: baseline
Took inspiration from James Hobson’s build but refactored the arm geometry to keep torque inline with the toggle. An ESP32-S2 prototype drove an S51 micro servo straight from USB power, enough to prove the concept, but torque-starved. Fusion 360 CAD printed on a BambuLab X1 Carbon in PETG, with a quick-release mount so I could iterate overnight.
Mk2: refinements
Upgraded to an HS-311 for headroom and reworked the enclosure for rigidity and better clamp distribution. Learned the hard way that off-the-shelf servo CAD is rarely accurate. Shimmed with washers to recover clearance and captured those tolerances in the next revision. Separated the bracket from the electronics bay to isolate vibration and make servo swaps painless.
Mk3: battery and BLE
An Arduino Nano RP2040 Connect handles BLE, advertising on a three-second interval to stretch battery life to
about four days on three AA rechargeables. Hex commands (0x01 / 0x00) fire position presets; firmware maps
them to servo pulse widths with debounce logic so the switch never chatters. A boost converter gives the servo
a stable 6 V rail while the microcontroller stays happy at 3.3 V.
What broke
- Mk1 couldn’t throw the switch reliably: not enough torque from an S51 on USB power.
- The HS-311’s published CAD didn’t match the part; the clearance came back with washers and a note to never trust a servo model again.
- The clip above is a failed throw, kept in on purpose.
What I’d do differently
Design the PCB first. Power management and BLE on a perfboard is what makes Mk3 look like a science fair project instead of a product.
What’s next
Control is currently a bare-bones mobile BLE terminal; a proper UI, scheduling, and multi-device support are next. Then swapping the Nano for an nRF52 and a Li‑ion pack to push battery life into multi-week territory, and a PCB that consolidates power and BLE so the project can be packaged for other lazy light-switch aficionados.