While development on the cube reader continues, when it’s done, we’re going to need something for it to actually read. That’s why it’s time to concentrate on the cube itself.

After much deliberation and possible methods of reading the position and location of a cube, we decided to go for the “intelligent cube” approach.
This basically means that each cube will have a microcontroller inside it, and will broadcast a message to the tray reader when it is in place. One of the biggest problems with any form of portable microcontroller-based project is that of power – usually solved by including a battery. This isn’t suitable for our little cubes, because most of the time they won’t actually need to be broadcasting. We don’t want to be running down a battery unnecessarily while the device is idling because once a cube has been built, it will form a sealed unit (so replacing dead batteries will not be possible).

We don’t want to use portable power, but we do want to use a microcontroller inside each cube – so it makes sense to have each cube draw power from the tray/reader when it is in place (since it’s only when a cube is first introduced to a tray reader that we need it to broadcast its data: once a cube has identified itself, it can go back to sleep!)

As well as drawing power from the tray, the microcontroller will look at which of the six sets of power pins (there is one pair of power/ground pins on each face) was used to switch it on. From this, it knows which face is facing down in the tray (and by inference, which face is pointing upwards, being shown to the user). To achieve this, every ground pin goes directly to a digital input, and connects to the ground pin on the PIC, via a diode.