Recently a small package arrived on my desk. It was about the size of an Altoids tin and contained a Raspberry Pi. (For anyone who doesn’t know what that is, it’s a small and very cheap computer which can be used as the basis for all sorts of projects ranging from a low cost media player to a home automation system and beyond.)
One of the reasons I had purchased a board was because I wanted to help my daughter, and to a lesser extent my son, understand why I find computers so fascinating. My daughter was moderately interested when I showed her the printed circuit board, exclaiming with glee “Ewwww! Computer guts!”
The first step, is deciding what we will build with it. I want the first project to be simple enough that (once I’ve got hold of all the prerequisites) it can be completed in a weekend. I would also like it to be something that my daughter can take into school and share with her classmates if she wants to (assuming her teacher agrees).
One of the options for school is, of course, to create a simple program using something like Scratch, although apparently there are some concerns with performance on the Pi. If you’re unfamiliar with Scratch (as I was), it is basically a kid-friendly programming “language” where you assemble blocks to describe what should happen – typically animating sprites (images) onscreen in response to events such as mouse-clicks, keyboard activity and scenarios where one sprite collides with another. The blocks fit together a little like a jigsaw puzzle so you get visual feedback showing what can (and cannot) be combined.
While that might be a first step, one of the reasons for buying the Pi was the ability to take it further – specifically to add hardware components and interact with the world in ways that most people wouldn’t be comfortable doing with their $250+ computer. At a cost of $30, or thereabouts, if something bad were to happen to the Pi it wouldn’t be too big a problem.
Even though I want to play with hardware, I need to keep the costs under control. I also need any of the hardware part of the project to be as foolproof as possible. While I have created computer circuits from scratch, that was two decades ago. Since then, my hardware experience has been limited to assembling boards designed by others.
These are the possibilities I’ve come up with so far:
A simple “Boolean logic” demonstration. 2 or 3 switches as input, an LED for output. It would be possible to turn the conditions into plain text – “If you clean your room, and you had a smooth sailing day, you can go to the movies”. Set the switches to the correct value (yes / no), and press a “show me the answer” button to illuminate the LED if the output evaluates to true.
A math game, where the screen will show a simple math question. The player then uses a couple of switches to set what they think is the answer on a display, and hit a button which will show them if they are correct, and highlight the incorrect digit(s) if they are not. My original thought was that I would use a couple of seven segment LED’s for the display, but then I realized that – assuming I’m reading the schematic correctly – there are only 17 IO pins available… and if I’m using 14 for the display of the digits that would leave just 3 for everything else. (Yes, I know I could use a 7 segment display driver, but that would add additional complexity that doesn’t seem appropriate for a first project.)
As my daughter has been having some challenges converting analog time to digital (and vice versa) I also wondered about the possibility of using something like Martin Atelier’s "Nixie Clock". Again, I was thinking there would be some sort of game component where an analog clock is displayed and the player is asked to set the numbers shown on the clock (or vice versa).
After some consideration, I think I’ll probably be going with option 1 – mostly for reasons of cost… but I’m also open to other suggestions. Do you have any good ideas?