DIY : “BabyPi” Step-by-Step Building Guide and Parts List
This is a step-by-step guide to build your own BabyPi computer for a toy to teach basic typing, letters and numbers.
(You can read more about the “why” behind making the BabyPi here in Part 1: “BabyPi,” a simple Raspberry Pi powered toy computer for kids.)
Or continue on below for simple instructions to make your own.
This takes about 2 hours and supplies cost at least $65 to $350 and up depending on how much you use existing peripherals like a keyboard and screen, or splurge on new components.
List of Parts
Depending on what parts you might have lying around, you make a BabyPi for as little as $65 if you use an existing keyboard and monitor. If you want an all-in-one touch-screen case or other goodies it will cost you a bit more. Here are 3 configurations:
- $64.67 Basic: Raspberry Pi and basics including case (BYO USB Keyboard and HDMI Screen)
- $165.69 Fancy: Touchpad screen all-in-one Pi case (BYO USB keyboard)
- $345.68 Ultra fancy: Touchpad all-in-one with fancy RGB gaming keyboard (All new parts)
Basic Parts List
Raspberry Pi minimum needed to operate and case. No screen, no keyboard, bring your own USB Keyboard and HDMI Screen.
$34.74 Raspberry Pi 3 Model B Motherboard:
$9.99 CanaKit 5V 2.5A Raspberry Pi 3 Power Supply / Adapter / Charger
$12.99 Samsung 32GB 95MB/s (U1) MicroSD EVO Select Memory Card with Adapter (MB-ME32GA/AM)
$6.95 Basic Case (KuGi Raspberry Pi 3 Model B case)
Fancy Parts List
For the all-in-one-touch Pi computer. Purchase all the above (but skip the case) and add these below to your shopping cart:
$69.99 Raspberry Pi 7″ Touchscreen Display:
$27.99 Case for the Official Raspberry Pi 7″ Touchscreen Display: This is an all-in-one case for both the Raspberry Pi and the touch screen display from above. No need to order the standalone Pi case if you choose this option.
$9.99 SmartiPi Touch back HAT cover — 37mm deep (You can get a more shallow back cover, but this deeper 3.7cm version is big enough to mount a USB battery inside the case for cord-free computing or hide the ferrite core from the power cable.)
$179.99 Optional, but recommended, an RGB keyboard with individually programmable keys helps both guide the user through the desired “safe” keys and sometimes offers interactive feedback through a fading effect from the pressed keys. For this project I used a worn Steel Series gaming keyboard with a few keys missing.
We’ll start with (1) Hardware, then (2) OS, (3) Kiosk Mode and (4) Application.
Step 1. Hardware (15–30 minutes)
The best instructions for the case and screen assembly are this YouTube video. Make sure subtitles are turned on so you can see the instructions. https://www.youtube.com/watch?v=XKVd5638T_8
Here my build is almost complete, just a final step to tidy the power cords:
In the parts list I recommended a larger back cover (you can see it in the background of the picture above). You can use this back cover to insert the power splitter to make it more difficult for young hands to remove the power plugs.
Step 2. Software — OS (30–45 mins)
This guide written for NOOBS 3.0 (Release 2018–11–16). Most of it is taken from following this great getting started guide from Raspberry Pi themselves.
- First, download the newest version of noobs and start fresh install from raspberrypi.org/downloads. I chose to download “Offline and network install.”
- Install the OS onto SD Card, detailed instructions here: raspberrypi.org/learning/software-guide/quickstart
- Put the SD card into Raspberry Pi and boot
- Select “Raspbian Full” > Install
- Choose keyboard and language settings
- Set a new password
- Choose your WiFi settings and login to wifi
- Check for updates
- Try loading the browser from the desktop after booting, navigate to “babypi.glitch.me”
- Congrats, now you have a self-contained, all-in-one networked Raspberry Pi with touch screen! You can use it as-is now, or you can continue for how to configure the Raspberry Pi to auto-boot into BabyPi.
Step 3. Software — Booting into Kiosk Mode (15–30 mins)
- First, you’re going to need remote access. True Kiosk mode means we’ll try to make it difficult if not impossible to access the device configuration physically from the device itself.
- Enable remote SSH access by clicking on the Raspberry Pi logo in the upper-left hand corner, then Preferences > Raspberry Pi Configuration > Interfaces > SSH > Enabled (more info: https://www.raspberrypi.org/documentation/remote-access/ssh/unix.md)
- You’ll connect via SSH from your Mac or PC, and there are two options to connect:
(a) The “old fashioned” way to connect remotely to your Pi is through the Raspberry Pi’s IP (V4) address, one set automatically through DHCP or statically through manual configuration.
(b) Or, you can use a local hostname. This is cool, and it’s enabled by default on Mac OS devices. To enable it on Windows PCs you’ll need to enable support for “zeroconf” / Avahi. The easiest way to do this is to simply install Apple’s Bonjour Printer services for Windows or iTunes (yucky). See this documentation for more information.
- By default the local hostname is
raspberrypiso you can connect from a Mac OS terminal on the same network by simply typing:
- Next we want to setup “Kiosk Mode” so that the Raspberry Pi auto boots into Chromium running the BabyPi website app.
- First, we’ll need to copy the autostart default script from the root user into the “pi” user that is used to login by default. (Per this Stackoverflow ticket.)
- While you’re connected remotely through ssh per above instructions, or using the local terminal on the Pi, type:
mkdir -p "/home/pi/.config/lxsession/LXDE-pi/"
- Then type (all one command, despite Medium’s dumb code formatting)
cp /etc/xdg/lxsession/LXDE-pi/autostart /home/pi/.config/lxsession/LXDE-pi/autostart
- Use your favorite text editor to edit the file, such as
vi /home/pi/.config/lxsession/LXDE-pi/autostartand add the line:
@chromium-browser --incognito --kiosk https://babypi.glitch.me
- The modified
autostartfile should now read:
Now when you plugin the Pi it should autoboot into the BabyPi app. Here’s what it looks like from boot to app in about 45 seconds:
Step 4. Software — BabyPi App (0 minutes)
You don’t need to do anything here as the above boot sequence launches the app, but you can feel free to modify the actual BabyPi app in any way you want, from simple changes like a new color scheme to more advanced features. The source code is available here: https://glitch.com/~babypi. A more detailed writeup of the app can be found in Part 1 of this writeup.
Using the BabyPi
Here are some “BabyPi” games I’ve played together with my daughter:
- Find the Letter — Say a letter and she finds and presses it on the keyboard.
- Out Loud — whatever letter she presses I say out loud.
- Draw Picture — Draw something related to the letter! Show your artistic flair by drawing an Apple, Bear or Cat.
- Draw Letter — Practice drawing the letter by hand, start with uppercase and then add lowercase.
- Alphabet — Sing the alphabet song together and I type each letter as we go through the song. Same with numbers, sans the song.
- Pwn the Pi — advanced users only, break out of kiosk mode.
Improving the BabyPi
This app just scratches the surface of what I think is possible for (tiny) human-oriented design with the Raspberry Pi. Here are some more advanced things you can do and suggestions for future features:
- Reactive Keys: With the SteelSeries keyboard I used it has a nice feature for highlighting the key that was recently pressed. Although awful for security when entering passwords, it is fun for this use case. If these keyboard makers made more open APIs for modifying the lighting settings you could imagine cool things like highlighting one key at a time or reacting more clearly to “correct” key presses.
- Advanced Kiosk Mode: You can go deep down the rabbit hole of creating a locked down Pi Kiosk, such as disabling function keys, disabling power management (preventing screen shut off), restricting accessible sites via DNS, etc. This is a nice writeup of more advanced Pi Kiosk configurations: https://gist.github.com/jongrover/6831346. If you want to get really crazy you can dive deep into Linux internals to customize the boot logo, hide boot console output, etc. to make it a really smooth boot sequence a la Apple.
- Fix the drawing container sizing: The green drawing feature is sized for the RaspberryPi touch screen but doesn’t allow drawing on the full page for larger sized displays. Please feel free to help fix that if you’re handy at CSS. (Simply “remix” the Glitch project here.)
- Offline: There’s really no reason to have the BabyPi connected to the Internet, it was simply helpful during development to quickly prototype. You could easily make an offline version.
- More “games”: The possibilities are endless — counting, teaching basic addition, a screensaver that goes through the alphabet, guidelines for learning handwriting, etc. My brother suggested the ability to start typing longer words after pressing enter. What suggestions do you have?
- Battery: There are a number of battery options for the Pi, from integrated “hats” like the PiJuice to simply using a USB battery pack hidden inside the large case recommended above.
- Cases: A friend came up with an idea to create a custom wooden case with an embedded keyboard. With an integrated battery this could a super cool truly self-contained version.
Reception: Did the baby like it?
I finished this project about a year ago when my daughter turned 1, and it has been sitting in the toy corner in the same place since then, always plugged in. (I kept the default power settings on, so the screen turns off after a few minutes but the keyboard still glows a beckoning purple all the time.)
My daughter plays with it about once a week on average, similar to other toys strewn about. Sometimes for just a minute, sometimes longer. Sometimes on her own, sometimes prompted by me.
It’s no more special than the record player, blocks or toy cars, and that’s the point — my goal with the BabyPi was to create a “toy” that could sit right next to other baby and toddler toys.
Now that she’s 2 she is advancing surprisingly well with the alphabet. When we play the “Find the Letter” game she can quickly find a handful of her favorite letters (A for her name, B for bus, D for Dadda, M for Mamma, etc.). I can’t say that BabyPi was any sort of genius-making device, but it definitely contributed toward her having fun learning letters and the QWERTY layout at the same time. Yay!
Share Your Build!
I’d love to see how people use these instructions to make their own BabyPi. Please share your Raspberry Pi build on Twitter (@kfarr) and your ideas for improvements!