blairfrandeen / momobox

Open-source music player & story reader for toddlers
MIT License
8 stars 0 forks source link

Put momobox to sleep when not being used #16

Open blairfrandeen opened 1 year ago

blairfrandeen commented 1 year ago

The firmware runs continuously when the batteries are connected. Goal is to have the pico go into sleep mode after some amount of idle time, and then awake upon a signal from the hall sensor.

A good starting point with resources is here: https://ghubcoder.github.io/posts/deep-sleeping-the-pico-micropython/

May be better to also read this post about dormant and sleep modes: https://ghubcoder.github.io/posts/awaking-the-pico/

This is micropython based (momobox currently uses circuit python), so may not be fully applicable.

A good thing to start with is to measure the current draw from the batteries during the following operations:

blairfrandeen commented 11 months ago

Some measurements made with a DMM:

Condition Current Draw [mA]
Standby 65.6
Playing 70-110
Paused 68.6
RFID Chip present without magnet 70.6
Magnet present, no RFID 69.5
RFID, no magnet, after magnet had been activated 74
Crashed 45

The 2X batteries I'm using have a capacity of 1500 mAh (3000 total). 3000 mAh / ~70 mA =~ 42 hours This operating time matches our experience with the momobox so far, although we typically get to about 24-30 hours before it turns off.

It may be promising to reduce power usage by rewriting the firmware in a lower level language that isn't constantly running an interpreter. For comparison, running "blinky" in Rust only takes 22-24 mA