Skip to content

Accelerometer-driven low-power mode (hardware, PCB only) - #47

Draft
thePunderWoman wants to merge 1 commit into
mainfrom
accel-lowpower-mode
Draft

Accelerometer-driven low-power mode (hardware, PCB only)#47
thePunderWoman wants to merge 1 commit into
mainfrom
accel-lowpower-mode

Conversation

@thePunderWoman

Copy link
Copy Markdown
Owner

Summary

  • Adds a QMA6100P accelerometer (I2C, shares the OLED bus) with a hardware motion/no-motion interrupt on GPIO46, so the MCU can eventually light-sleep instead of polling for wake conditions.
  • Moves the XBee's DTR line off its permanent GND tie onto GPIO42, enabling host-commanded pin-sleep instead of forcing the radio awake at all times.
  • Hand-authored the QMA6100P symbol + footprint (no existing library part) — pad geometry pulled from JLCPCB/LCSC's own EasyEDA component data (LCSC C2887190) rather than estimated from the datasheet's low-resolution drawing.
  • Placed, routed, DRC- and ERC-clean.

Part selection rationale, full pin wiring, and decoupling details are documented in PCB/GPIO_table.md's new Accelerometer section.

Status / what's NOT in this PR

This is hardware/schematic only, opened as a draft to checkpoint progress. Still to come as follow-up work:

  • Physical continuity check of the QMA6100P footprint against a real part before fab (same outstanding step as the GuliKit hallstick footprint).
  • Firmware: accelerometer driver, XBee sleep AT-command sequencing, and the actual low-power state machine (idle timers, OLED-off, XBee-sleep, longer auto-power-off tier).
  • Production file generation (BOM/gerbers/JLCPCB export).

Test plan

  • kicad-cli sch erc — 0 violations
  • DRC clean (user-verified in KiCad)
  • Placed and routed (user-verified in KiCad)
  • Physical continuity check against real QMA6100P part
  • Firmware implementation + native unit tests (separate PR)

🤖 Generated with Claude Code

Adds a QMA6100P accelerometer (I2C, shared OLED bus) and enables
host-commanded XBee pin-sleep, laying the hardware groundwork for a
low-power mode: OLED off + XBee sleep after a short idle timeout (no
buttons, no motion), full soft-latch power-off after a longer one.

- QMA6100P chosen after checking JLCPCB's actual parts library: no
  candidate accelerometer is Basic-library, so it won on price, size,
  and standby current (500nA), which matters since it has to watch for
  motion through the whole low-power period.
- Hand-authored symbol + footprint (no existing library part) — pad
  geometry pulled from JLCPCB/LCSC's own EasyEDA component data
  (LCSC C2887190), not estimated from the datasheet's low-res drawing.
- New Accelerometer sheet, wired into the existing I2C bus and into a
  new GPIO46 (INT1) interrupt line so the MCU can light-sleep instead
  of polling for wake conditions.
- XBee DTR moved off its permanent GND tie onto GPIO42 (SLEEP_RQ), so
  firmware can actually request/cancel pin-sleep instead of the radio
  being forced awake at all times.
- Placed, routed, DRC- and ERC-clean.

Firmware (driver, low-power state machine) and production file
generation are follow-up work — this PR is hardware/schematic only.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant