Build instructions for the 'Baby Interface Device' (BID), an ultra-simple USB Human Interface Device for Tiny Humans. Built to allow my kid to interact with the computer without destroying my keyboards. The BID is a DIY USB HID (Human Interface Device) that acts as a keyboard to trigger a single keypress (space bar in this case). The concept is to create a very large button that is baby-friendly to allow an infant to interact with computer games and educational software.
The project can be assembled in less than an hour for around $35 or less and requires very little knowledge of electronics or coding.
The BID is ideal for use with certain online baby game sites such as:
Kneebouncers - an awesome ad-free site supported by annual membership
Fisher-Price Online - some of these games will work with this thing too. They're free and not too bad.
Also this thing is very handy to play/pause media sites like Pandora and Youtube.
DISCLAIMER: Choking and Strangulation Hazard! This has a cable on it and small parts which could mark, maime or otherwise injure an unsupervised infant! Don't let your baby play with it unsupervised! I take no responsibility for injuries to your child!
There is a bug with the timeout function. I will provide updated code once I figure it out. Until then just disregard the commented section. This code froze the device after the device has been plugged in for a certain amount of time (a couple of weeks)Download the file as a .PDE
Baby Interface Device V1.0
Build a simple Button-style USB interface for infant learning development.
Build instructions for the device are available at http://matthewroy.com/bid/
Developed by: Matthew C. Roy 2011
License: Attribution-NonCommercial-ShareAlike 3.0 Unported (CC BY-NC-SA 3.0)
You may share this code and modify for any non-commercial purposes.
const int RGB_R=9;
const int RGB_G=14;
const int RGB_B=15;
const int PBTN=11;
int rgb_rval=255; //initial r val
int rgb_gval=255; //initial g val
int rgb_bval=255; //initial b val
int pbtn_state_cur=0; //cur value of push (for change)
int pbtn_state_prev=0; //prev value of push (for change)
long interval_off=30000; //milliseconds to wait before turning off light
long pbtn_last_press=0; //last time the btn was pressed.
long pbtn_state_timer=0; //milliseconds since push button change
// set all 3 pins to the desired intensity
pbtn_state_timer = millis();
Build this thing with 2 Pololu Wixels instead for wireless battery operated version.
Add an IR receiver for remote control version. This is good for the media playback/pause functionality
Add an SD card/reader on this and have a custom application that lets parent's put image/media slides on it for the baby to flip through
Wire in a reset button to reset teensy so you can upgrade the firmware without opening the tap light.