Our mainboard is used to display animations, we receive data from USB wire and light on the cube. Our mainboard’s processor is a STM32F405.
In our processor, to manage the arriving of data and the sending of buffers without tear-effect we use double buffering with two mailboxes. Our software is based on ChibiOS, a free real time OS, having a real time OS permitted us to garantee the good display of animations but settled constraints.
Connection with the cube
With 1728 RGB LED, we can’t connect directly each lead to the drivers because it means 6912 wires, and quite a lot of drivers, so we use multiplexing. What does that mean? A LED is a diod, so it works only if the potential on the anod is high and the potential on the cathod is low, in all other cases the LED is lighted off. So if on all plates except one, we put the anod low, they can’t light on whatever we put on the cathod. So we light on each plate one by one, giving the right color, and we do it for each plate cyclically. If we do it fast enough, with the persistence of vision it lokks like all the cub is lighted on.
The selection of the floor is done with the transistors, managed by the decoder. The selection of colors is done with the drivers, connected by SPI directly to the STM32.
Connection with the BeagleBoard
Datas arrive through the USB port from the BeagleBoard.
We have two possibility of detection. The first is through capacity sensors, which are not functionnals. The second is through a Kinect, related to the BeagleBoard.