blairfrandeen / momobox Goto Github PK
View Code? Open in Web Editor NEWOpen-source music player & story reader for toddlers
License: MIT License
Open-source music player & story reader for toddlers
License: MIT License
Good explanation and possible solution here: https://forums.adafruit.com/viewtopic.php?t=188012
And here:
https://forums.adafruit.com/viewtopic.php?f=8&t=187616#p909859
Need to order some 10nF and 100nF capacitors and check my resistor supply, then check on a breadboard
Current box design is monolithic. Looks nice, but I think there are advantages to a separate bottom:
Currently the only option for volume control is to turn the screw on the audio board. End user's key stakeholder requests easier adjustment.
Not sure how to implement this easily, may take some creative thought.
We're tired of having to swap the batteries every day. While it would be nice to reduce power consumption (see #16), it's also necessary that it can charge simply by plugging it in.
Some very preliminary research: https://www.circuitbasics.com/how-to-power-your-raspberry-pi-with-a-lithium-battery/
As I understand it I'll need three components, which I now have on order:
My hope is to use the above together so that the user can plug in directly to the charge controller, and still be able to use the box when it's plugged in. At the very least, not need to reconfigure anything while charging. If this fails, I bought a more expensive all-in-one board that I can use instead: https://www.digikey.com/en/products/detail/adafruit-industries-llc/2465/5356834
Also purchased another Pico with pre-soldered headers to try this with, as well as a second breadboard.
While I'm waiting for parts to arrive, I have some CAD work to do to figure out how I'm going to mount two additional boards and a new battery within the existing housing. I'll probably want to move the Pico back and put the charge port in its place, and 3D print a new battery clip.
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:
Speaker mount points are not easy to work with; no good tool access, not even worth trying to get the square nuts into the bottom mount points. Needs to be rethought.
Best idea so far: Passive slot at the bottom of the box that accepts the speaker flange. Maybe keep improved screw bosses near opening of top of box, but there is also an option to make a flexured post or latch to simply snap the speaker into place.
The "official" method of talking to the Raspberry Pi Pico is through the Thonny editor, which isn't my preferred development environment.
Check out this article and see if I can't get Raspberry Pi Pico to talk directly to VSCode, which is my editor of choice.
Start a basic bill of materials, either in markdown table or csv format. Should include the following columns:
Okay for this to be wrong / incomplete. Also okay for components to be identified as needed and not fully specified. Multiple options for components also okay.
Current system only has 1 MB of memory. Need to add the SD board and SD card.
Heat-set inserts are great, and also expensive. They cost about $17 on McMaster, and I'd like to offer users a cheaper solution.
Will probably go with some sort of press-in or slot-in hex or square nuts. Currently the heat-set inserts are used in the lid to box connection and the RFID board to lid connection.
The latter could be tapped M3 fasteners since the RFID board nominally only goes on once; the lid to box connection benefits greatly from being threaded.
I would like to replace all of the print statements with log statements, and I would like the momobox to keep track of some basic on-board logging. Some thoughts on the logger:
import board
import digitalio
import storage
switch = digitalio.DigitalInOut(board.GP22)
storage.remount(mount_path="/", readonly=not switch.value)
Currently GP22 is the pin that detects whether an SD card is inserted. What the code above would mean is that the file-system would be read-only (able to update the code) if the SD card was not present. Since the SD card is required to use the momobox, part of updating the onboard code would be to boot the momobox with the SD card removed.
Currently the red RFID board LED is on whenever the unit is powered. Nice to see that it's on, but the light is off-center and not there intentionally. One or more dedicated LEDs to communicate status would be better
Need to incorporate a battery so that momobox runs wirelessly.
Need to learn to program some fundamentals on the Pi. Issue is closed when I can do the following:
Current setup for board includes a hall effect sensor, that toggles when magnets are connected. It may be simpler to just keep querying the RFID board, and if the RFID chip has been removed, then stop playing.
Should be functionally the same, but may be worse for power consumption, which so far hasn't been modeled or thought about.
Input: momie left on top of box. Song completes. Same momie is removed and reattached.
Expected result: song starts from beginning
Observed behavior: song does not restart. Placing a different momie on top of box works as expected
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.