Why: Keeps AI agents from getting stuck when the Mac locks or sleeps from idle. The Atom shows up as a normal Bluetooth mouse and quietly moves the cursor.
M5Stack ATOM Lite · ESP32 · BLE HID · one-button
- 🖱️ Emulates a Bluetooth mouse named Atom Mouse
- 🔀 6 movement patterns
- 🔘 Single face button controls everything
- 💾 Remembers speed, pattern, and on/off across restarts
- 💡 RGB status LED
| Action | Does | |
|---|---|---|
| 👆 | Single press | Start / stop |
| 👆👆 | Double press | Cycle speed |
| 👇 | Long press (~0.7s) | Cycle pattern |
| State | Look |
|---|---|
| 🔵 Pairing | Breathing blue |
| 🔴 Stopped | Solid red (very dim) |
| 🎨 Running | Solid pattern color · brighter = faster |
| Pattern | Color |
|---|---|
| Jiggle | 🩵 Cyan |
| Circle | 🟢 Green |
| Square | 🟡 Yellow |
| Sine | 🩷 Magenta |
| Squarewave | 🟠 Orange |
| Random | ⚪ White |
Pulled automatically by the sketch profile:
| Library | Role |
|---|---|
| HijelHID_BLEMouse | BLE mouse |
| NimBLE-Arduino | BLE stack |
| Adafruit NeoPixel | RGB LED |
# compile
arduino-cli compile --profile m5stack_atom
# find port (plug Atom in first)
arduino-cli board list
# upload
arduino-cli upload -p /dev/cu.usbserial-XXXX --profile m5stack_atom
# serial status (optional)
arduino-cli monitor -p /dev/cu.usbserial-XXXX -c baudrate=115200- Unplug →
arduino-cli board list - Plug in (data USB-C) →
arduino-cli board listagain - Use the new
/dev/cu.*port, e.g.usbserial-*,wchusbserial*,SLAB_USBtoUART
Skip Bluetooth-* and debug-console.
- Power on → LED breathes 🔵
- Pair Atom Mouse in Bluetooth settings
- Running → pattern color · Stopped → dim 🔴