Monday 31 December 2012

KiddiePi: It's childs play!

Actually, strike out the word "play" from above.

By watching my own kids, and now my grand-children, I've come to the conclusion that very young children are pre-programmed to EXPLORE the world via touch, taste, smell and hearing, while play and learning are just by-products.


Children, especially under 3 year olds, just soak up information like a dry sponge in a shower.

This post presents some of my ideas on creating a simple computer based "toy" to engage very young children, which will hopefully develop as they do.

Its true that children develop at different rates, but by the time many are 18-24 months old, they are able to experiment with "cause & effect" type toys like this one.

Being able to use a toy like this demonstrates that they have the dexterity to press a button and the intellect to know that an animal pops up as a result of their actions. If they can do this, they may be ready to explore a computer based machine.

Design Considerations

How could a child interact with a computer based machine?
Well, I considered 3 possibilities:-

Touch Screen

There is a pretty strong argument for this. Currently, many devices we come into contact with in our every day lives have touch screen displays. So you could argue that we should use this for our child's computer, if only to prepare them for the real world. However, touch screens are not tactile, and not all machines have touch screens. Most TV have regular screens and a remote!

Dance Mat

I think this could be a very good choice, at least as a starting point for the very young. Ideally, the mat would need coloured pads or suitable symbols which relate to the screen layout. There are also mini-exercise mats available for desktop use by lazy executives. I'd like to revisit this idea at some point (when time permits or maybe when grand-child number 2 is 14-16 months old).


Despite the alternatives, I decided to go with a keyboard. Keyboards are tactile and continue the theme of the pop-up toy, where pressing a button "here" results in an action "there". Its also a lot cheaper to replace than a touch screen!

There are a number of low cost keyboards available, which have been designed for use by children. The one I purchased via Amazon looks like this.
You can see that each key is one of 5 colours (red, pink, green, yellow or blue). This allows me to link the screen actions to colours, and gradually introduce the idea that specific keys do certain things.

What about a mouse?

It won't be too long before your child is ready to use a mouse. But initially I'm not going to include one, so navigation will be via the keyboard. Let's use the gaming terminology "levels" and say that the first few levels will be keyboard driven.

The Computer

This is just a machine used as a toy template, so I could use almost anything. However, my chosen development environment is Linux based, and I don't want a huge box cluttering up my lounge.

I've settled on a Raspberry Pi single board computer, which was chosen because:-
  1. its cheap to buy: the model B cost £22 + tax + shipping + SD card + power supply (£45 approx)
  2. power consumption is low: so not a problem if left on for hours or even days at a time
  3. it has a solid state drive (SD card): powering off/on/off won't cause any electro-mechanical hard drive problems...
  4. ...and if the software gets trashed, I can just copy the original image to an SD card (again, 4GB SD cards are cheap)
  5. its very small: easy to mount to the back of a screen
  6. it can be used with a monitor or TV: a DVI monitor, an old analogue TV, or a digital TV with HDMI
  7. Operating System: there is a Debian Linux distribution available and...
  8. ...program languages: Python and Gambas are supported

So, since I'm going to use a Raspberry Pi, the project name has to be: "KiddiePi"

Application Design

KiddiePi needs to boot and autostart, displaying a "level 1" main screen from which your child can start to explore.

At this level, it needs to be as simple as possible to reach other screens, and also to return to the main screen.

The approach I've settled on is like this:-
  • provide 4 features/activities from the main screen
  • each of the 4 features is selected by a coloured key (e.g. any red key selects the first activity, any pink key the second, and so on for yellow and green keys)
  • any blue key will return to the main screen, except the following arrow keys:-
    • right     go to next sub-screen
    • left        go to previous sub-screen
    • down    go to next level (its a top-down structure)

Here is a "main screen" example:-

Now you may be wondering why I've put text on this screen, given that the average 2 year old can't read.
Well its because KiddiePi also has to be operated by adults, and I'm afraid us grown-ups are not as bright as young children. Also, at some point your child will start recognising letters and words, but in the meantime they will quickly link key colours and activities.


One point to underline here is that young children go into/through/out of phases very quickly. So we need to be prepared to modify, change and create new screens & activities as the child progresses.

Here is my initial feature list:-
  • Songs: this can be used by adults long before the child is ready to explore KiddiePi. Its basically an mp3 player for nursery rhymes and other childrens music. As soon as a child can stand, they can be encouraged to dance to music and mime the actions.
  • Colours: this presents a number of screens based upon common colours (e.g. red, yellow, green, blue, black & white). Each screen is displayed for 10 seconds (unless a blue key is pressed) before automatically moving on to the next screen. These screens feature "cartoon" type graphics with simple animations and sound clips.
  • Animals: this presents a number of screens, each including an animal that the child can be encourage to identify. I'm not using real animal pictures or real animal sounds at this stage, just cartoon characters and friendly animal sounds. Another idea would be to use photos of the child's toy animals.
  • Family: the idea is to get each member of the family to record themselves using a webcam. As above, these recordings will run for about 10 seconds before switching to the next person.


More details of the software will be discussed in future posts, but a key design principle is to create a program where additional material (e.g. screens, sounds, video & so on) can be easily added without changing the program itself.

At the moment I'm using a text file to list the graphics, sounds & video clips. So adding or removing material simply involves copying media files and modifying the text list.

Getting Your Family Involved

As mentioned above, its a great idea to get your family involved in providing material for this program.  So if family members can create or edit graphics, sing songs or just make funny noises, they can play a part in contributing to this project.

The end result will be unique, containing material which is highly relevant to your child.

Other Sources of Material

You need to respect copyright, but you will find many sources of free children's music and graphics on the internet.

If you have other open source applications installed on your computer (e.g. Tux Paint, Potato Guy, ChildsPlay & so on) do a search for graphics and sound clips.

Current Status

At the time of writing, KiddiePi has just been used for the first time by my 21 month old grand-daughter. She had a lot of fun with it, although only 3 features were running at level 1: Songs, Colours and Animals.

The next step is to add more material and include the "Family" video feature.

No comments:

Post a Comment