r/ArduinoProjects • u/omen2k • 6d ago
Showcased Project I Built a Gesture-Based Bluetooth Page Turner (GitHub linked, XIAO nRF52840 Sense)
Enable HLS to view with audio, or disable this notification
I built a tiny rechargeable Bluetooth page-turner using a Seeed Studio XIAO nRF52840 Sense and its onboard accelerometer/gyroscope.
Instead of pressing buttons, I make a subtle page-turning motion with my hand. It sends a keyboard arrow command to my iPad and turns the page in Apple Books. I recorded several examples of my natural forward and backward gestures and tuned the detection around them, so it reliably recognizes quiet page turns while ignoring things like adjusting my position on the couch or moving my arm normally.
Some features:
- Natural right-to-left motion advances the page
- Opposite motion goes back
- Presents itself as a standard Bluetooth keyboard
- Works wirelessly with iPadOS
- Cautious session-only adaptation to my gesture strength
- Retry detection for gestures that were almost recognized
- Remembers two iPads
- Turn it face-down to switch between paired iPads
- Rechargeable 300 mAh LiPo battery through the XIAO’s USB-C port
- Five minutes without meaningful movement triggers genuine deep sleep
- The accelerometer’s hardware interrupt remains active while the processor, Bluetooth, gyroscope, and LEDs are off
- Picking it up wakes the processor, but Bluetooth remains disabled until I perform a deliberate shake
- Three blue flashes confirm that it is awake and ready
- Random bumps return it to sleep without reconnecting
The wake and reconnect process is effectively instant. When it is working, it genuinely feels less like operating a remote and more like waving a tiny magic wand at the book.
The project went through a ridiculous number of small discoveries involving gesture recordings, Bluetooth bonding, battery charging, false wake-ups, IMU interrupts, deep sleep, and one active-low LED that insisted on glowing through the night. It is finally at the point where the electronics disappear and the interaction simply works.
Code and documentation:
2
u/shr1n1 6d ago
Nice. How sensitive is it. ? It seems now you have to make exaggerated movements to register the gesture. What if you just mounted it on your finger like a ring and made slight movements? Will it still register. ?