(Open Source) CubiX HDD Activity Monitor

lanternfish

Senior Member
The idea for this came from various questions regarding HDD indicators. Many of the projects I have seen use bar-type LED's; the more activity the more LED's lit. I though this was a bit boring. I then considered the Rubik Cube.

Now rather than solve a scrambled cube the CubiX HDD activity indicator (initially) starts with a solved cube and 'rotate' faces, rows or columns each time the HDD LED is active.

When the PC is powered down the current face data is stored and reloaded next time the PC is restarted.

HARDWARE

The six (6) cube faces are controlled by a 20X2 main board which is triggered by HDD activity (refer attached cct diagram). The 20X2 main board uses SPI to communicate with the face boards.

The cube faces are top, front, right, rear, left and bottom (refer attached diagram).

The cube faces, rows and columns don't physically rotate, instead each face consists of 9 RGB LEDs. These are controlled by five (5) 74xx595's (refer attched cct diagram).

As each 74xx595 outputs 8 bits and each RGB LED requires 3 bits, we can use one 74xx595's per two LED's. A total of five 74xx595's. This leaves 1/2 of one 74xx595 unused.

Each RGB LED is numbered 1-9,11-19,21-29,31-39,41-49,51-59 (refer attached diagram). These numbers refer to a memory location in the scratch pad. Locations 0,10,20,30,40,50 are always 0x00.

The original Rubik Cube had six colours: red, green, blue, yellow, amber (orange) and white. Using 3 bits and RGB will give the following six colours: red, green, blue, yellow (amber), magenta and white.

SOFTWARE

Currently I am rewriting the software to make it a little more intelligible and to correct a few changes to the hardware layout. I will post it when I have completed the corrections.

The general flow is:

1. Load stored face data from EEPROM to scratchpad.

2. Initialise interrupts

3. On interrupt choose a random rotation from:

Column (C1, C1 & C2, C2, C2 & C3, C3)
Row (R1, R1 & R2, R2, R2 & R3, R3)
Face (Top, Front, Right, Rear, Left, Bottom)

Some column and row rotations have to include a face rotation as well.

4. 'Rotate' LED data in scratchpad. This is hard coded

4. Compress 8 bit per LED scratchpad data to two LED's per byte

5. Use SPI to output LED data

6. Re-enable interrupt

The rotations can be instant or animated. Animation is a ripple of changing colour.

POWER SUPPLY CONSIDERATIONS

To keep the 74xx595's within their power dissipation limits the LED's are limited to 30mA each (10mA per colour) This requires 1.62A @ 5V. So a 2A supply should be sufficient to supply LED's and mainboard.

MECHANICAL/CONSTRUCTION

The cube consists of six face PCB's and a mainboard PCB. The mainboard could be placed in the cube supporting base.

The cube will need to be supported above the base. The support will also have to provide a means of routing power and SPI cabling.

NEEDED

A circuit is needed to keep power on the 20X2 (while disabling LED supply) when power from the PC is removed. This is to allow the program to the current state of the face data from scratch pad to EEPROM. The 20X2 would then power down.

If this is a backup battery then a suitable charging circuit would be needed.

Or the mainboard could be supplied from the PC 5V Standby supply.

OTHER USES

A single face board could be used as a dice. Maybe someone can write the program for a 3D dice?
 

Attachments

Last edited:

BeanieBots

Moderator
For your power supply, I would suggest running the PICAXE from a 5v regulator which itself is supplied from the 12v PSU output.
Diode from PSU into large cap (say 4700uF or greater) into regulator.
This will give several seconds of 5v after power down.
Monitor the 12v line and when it collapses, you've got a good few seconds to do whatever you need to before the PICAXE 5v lines dies.

rather than solve a scrambled cube the CubiX HDD activity indicator (initially) starts with a solved cube and 'rotate' faces, rows or columns each time the HDD LED is active.
:rolleyes:

Start with a random cube and each time there is activity make a move to solve it. Once solved, it's time for a defrag;)
 

lanternfish

Senior Member
For your power supply, I would suggest running the PICAXE from a 5v regulator which itself is supplied from the 12v PSU output.
Diode from PSU into large cap (say 4700uF or greater) into regulator.
This will give several seconds of 5v after power down.
Monitor the 12v line and when it collapses, you've got a good few seconds to do whatever you need to before the PICAXE 5v lines dies.
:eek: As easy as that. I knew someone would have a simple way of doing it.

Start with a random cube and each time there is activity make a move to solve it. Once solved, it's time for a defrag;)
Had thought of doing that but couldn't be bothered writing a routine to do it. Maybe someone else will while I tidy up what I have.
 

lanternfish

Senior Member
I have updated the files in post #1 to include BeanieBots power-down circuit idea.
I have updated the files in post #2 due to changes in the program (attached)

EDIT: Program has been updated 10 August 2010
 

Attachments

Last edited:
Top