Home

Awesome

BabyPod

This repository is for the hardware and initial setup. For the CircuitPython code that runs on the hardware, see the babypod-software repository. This documentation assumes you're using the latest commit of main from the software repository.

What is it?

BabyPod

BabyPod is a remote control for Baby Buddy. It's named that because it connects to Baby Buddy and has a click wheel like an old iPod.

Why use BabyPod instead of just your phone or something else, or even Baby Buddy in general?

Because this is just a remote control, you need to install Baby Buddy somewhere beforehand, like to your computer if it's on 24/7, a home server, a Raspberry Pi, AWS/GCP/Digital Ocean/Clever Cloud, or something else. This guide assumes you've already got Baby Buddy running and now you want a remote control for it.

Hardware

To build a BabyPod, you 3D print some parts, stuff it with some electronics with easy soldering, and load the software.

Parts, tools, and supplies needed

Here's what you need to build a BabyPod. Prices are USD at the time of authoring and you can possibly find parts cheaper elsewhere, but this is to give you a nominal idea of how much the project costs.

Note that you can get most of these parts from the manufacturer directly like Adafruit and Sparkfun, and also resellers like Digikey, Mouser, and if you're lucky, Micro Center locally. The prices on Amazon are usually inflated.

Deviate from the parts list at your own risk, but do not get a different battery! Adafruit batteries have polarities that match their own boards, and using a battery off Amazon or elsewhere may not match and destroy your board or even start a fire!

PartQuantityPrice
Adafruit ESP32-S3 Feather with 4MB Flash 2MB PSRAM1$17.50
Sparkfun 20x4 SerLCD1$26.95
Adafruit ANO Rotary Navigation Encoder to I2C Stemma QT Adapter1$4.95
ANO Directional Navigation and Scroll Wheel Rotary Encoder1$8.95
Lithium Ion Polymer Battery - 3.7v 2500mAh1$14.95
STEMMA QT / Qwiic JST SH 4-pin Cable - 100mm Long2$0.95
STEMMA QT / Qwiic JST SH 4-pin Cable - 50mm Long1$0.95
Small Enclosed Piezo w/Wires1$0.95
Adafruit SPI Flash SD Card - XTSD 512 MB1$9.50
Adafruit PCF8523 Real Time Clock Breakout Board - STEMMA QT / Qwiic1$4.95
Total$91.55

You will also need the following supplies. The manufacturer doesn't matter but some examples are linked below:

And lastly, tools:

Printing the enclosure

You can print the enclosure in either one or two colors. Whichever you choose:

If you're editing BabyPod.scad, your system needs the font "SignPainter" installed.

One color

Print Case.stl upside-down and Baseplate.stl as-is.

Two colors

Printing in two colors requires a printer that supports multiple filaments or clever use of GCODE.

Print Case.stl and Faceplate inlays.stl as a multipart object upside-down (top of the faceplate and inlays facing the bed) and Bottom case.stl as-is.

Layout

Here is where everything fits in the enclosure. The perimeter of each part has holes for self-tapping countersunk M2x4 screws and line up once you press the two parts together. If they don't line up, something between the two parts is in the way, like a wire.

Case.stl

Case

Baseplate.stl

Baseplate

Assembly

You want to install CircuitPython and set up the software before assembling the hardware. Remember you also already need a running instance of Baby Buddy!

CircuitPython setup

Install the latest stable release of CircuitPython 9 onto the Feather, even though it was probably preinstalled. You want to get the right version and erase any unnecessary files.

  1. Download CircuitPython 9 for your specific board. Get the .bin version, not .uf2.
  2. Connect the Feather to your computer via USB C.
  3. Press and hold the Boot button, briefly press Reset, and then release the Boot button. This puts the board in a bootloader mode.
  4. In Google Chrome, go to Adafruit's ESPTool. Firefox and some other browsers don't work because the tool needs WebSerial support.
  5. Click "Connect" and select the Feather. The device's name will vary, but ultimately you should see a successful connection message.
  6. Click Erase and wait about 15 seconds until you get a success message.
  7. Click the first "Choose a file..." button and select the .bin CircuitPython image you downloaded, then click "Program."
  8. When prompted to do so, press the Reset button on the Feather. A few moments later, a drive named CIRCUITPY should show up on your computer.

Keep the Feather plugged in for the next steps.

Load the BabyPod software

  1. Download the latest release of the BabyPod software and extract the zip file to a new folder somewhere.
  2. In the extracted files, rename settings.toml.example to settings.toml. Make sure your OS doesn't sneak a .txt extension onto it.
  3. Create a free account on adafruit.io. You'll need your username and API key in the next step. You can get those when you're logged in by clicking the yellow key icon at the top-right of the page.
  4. Open settings.toml in a text editor and modify it as comments in the file show, then save it.
  5. Copy everything inside the new folder (not the folder itself) including your renamed settings.toml file to the CIRCUITPY drive. Overwrite anything already on the drive.

Even though there isn't much to copy, it might take a few minutes. At this point, all the software is ready to go, and once you've assembled the hardware, it should connect to your Wi-Fi, log into Baby Buddy, and run normally.

Soldering

Overview

Here is a logical diagram of how everything connects. This isn't physically how everything is laid out in the enclosure but just shows what pins go where. Don't start soldering yet!

Fritzing diagram

Before soldering, orient yourself to where everything mounts to the 3D printed parts. You want to use just enough wire to reach each connection point, but not too much excess or you won't be able to fit everything inside the enclosure. It may help to keep Adafruit's pinout documentation of the Feather open while you're soldering. Triple check which pin you're soldering to before you actually do it!

Many of the boards ship with a strip of headers included. You won't use them.

Soldering

Solder the rotary encoder dial to its breakout board. It only fits one way. Be careful not to skip any connections.

Then solder the following connections from the respective devices to their targets:

DevicePin/WireTo
PiezoBlack wireGND on the RTC
PiezoRed wireA3 on the Feather
Flash SD cardVIN3V on the Feather
Flash SD cardGNDGND on the Feather
Flash SD cardSCKSCK on the Feather
Flash SD cardMISOMI on the Feather
Flash SD cardMOSIMO on the Feather
Flash SD cardCS10 on the Feather
Rotary encoder boardINT11 on the Feather

The piezo wires are very thin, so be careful. Less solder is best.

Note that all the soldered wires are between the Feather and the Flash SD card with two exceptions:

Mount components

When screwing in components, use just enough force to keep things in place. Don't over-tighten the screws or you'll strip the non-existent threads in the 3D printed parts and need to print them again. Repeatedly screwing into the same standoff may also strip it, even if it's not over-tightened, and you'll need to reprint.

The plugs on STEMMA QT cables only fit one way. Don't use a lot of force or you can easily bend one of the thin pins in their ports.

If you need to, you can change the order of the steps below if shoving everything into the enclosure is finicky.

  1. Connect the LCD to the rotary encoder using one of the 100mm STEMMA QT cables. It doesn't matter which port on the rotary encoder you use. On the other STEMMA QT port on the rotary encoder, plug in another 100mm STEMMA QT cable. It'll later connect to other components, but not yet.
  2. Screw the rotary encoder into place with four M2.5x4 screws. The set of pins on it, including where you soldered the INT wire, should face towards the cutout for the LCD and the star with the Adafruit logo by the outer edge of the case with the STEMMA QT connectors pointing to the top and bottom of the case.
  3. Use four M2.5x6 screws to screw the LCD into place into the case. The "QWIIC" connector (what Adafruit calls "STEMMA QT") should point towards the rotary encoder and the LCD screen faces out towards the cutout for it.
  4. Set aside the case for now.
  5. Press the piezo into place in its circle on the baseplate with the hole facing down and the wire protruding through the cutout in the circle. You can keep the white bit of tape on.
  6. Screw the Flash SD board into place above the piezo with two M2.5x4 screws with the components facing up.
  7. Put the CR1220 battery into the RTC; note the polarity. Screw the RTC into place with four M3x4 screws with the battery facing up. The direction doesn't matter.
  8. Screw the Feather into place with the USB C port facing towards the cutout in the case and the board's components facing up. Use two M2.5x4 screws for the larger holes and two M2x4 screws for the smaller ones.
  9. Plug the 50mm STEMMA QT cable into the Feather's port and into the nearest port on the RTC, then connect the STEMMA QT cable from the assembled case with the rotary encoder into the other port on the RTC.
  10. Press the battery into its retainer with the cable by the bottom-left, assuming the Feather's USB C port is facing you. Don't plug in the battery's cable into the Feather yet.

Testing before final assembly

At this point, you should have all the connections made except the battery. You can test the BabyPod by plugging in the USB C cable and seeing if it starts up. If you hear a beep and the main menu shows up then your connections are likely good.

If you don't hear a beep but everything else seems to work, make sure the piezo is soldered properly per the connections above and that the RTC's STEMMA QT connections are solid.

Final assembly

If the test passed, continue on:

  1. Unplug the USB C cable from the Feather.
  2. Plug the battery into the Feather. The BabyPod will boot up.
  3. Carefully press together the two 3D printed parts, being sure to align the USB C hole to the Feather. Make sure the reset hole guide is unobstructed and there are no wires stuck underneath it.
  4. Screw the backplate and the enclosure together with the countersunk self-tapping M2 screws. Be especially careful not to over-tighten!
  5. Shove the little bit of transparent 1.75mm filament into the hole next to the USB C connector until it is flush with the outside of the case. It acts as a light pipe for the Feather's charge LED. You might want to use pliers. If you want, carefully apply a tiny drop of superglue to hold it in place, but friction alone is probably sufficient.

Basic usage

Head over to the babypod-software repository for how to use the BabyPod.

Troubleshooting

Shove a paperclip in the hole under the rotary encoder to press the Feather's reset button. This is a hardware reset that will always work as long as the Feather has power. Additionally you can reset the BabyPod by pressing and holding the Down button, but this only works if the BabyPod is ready and waiting for user input.

Hint: to take apart the BabyPod, there are tiny divots on the left and right of the enclosure. You can hook your fingernails in there for leverage.

Power and wiring-related

Software-related

Other things to check