There is simply not enough blinking LEDs in this world.

Similar projects worth following
This projects goal is to create a universal POV display device with integrated gyro, accelerometer and Bluetooth.


- 21 high brightness RGB LEDs.

- 6 DOF Accelerometer and Gyro for speed and position detection.

- 72MHz ARM M0 processor with 20kB of ram and 68kB of flash.

- USB interface with Lithium battery charging circuit.

- Bluetooth LE radio for remote control.

- General Purpose Digital and analog IO for interfacing sensors and whatever other circuits you may dream up.

- uSD memory card interface for storing animations and effects.

- Daisy chain-able to enable construction of arbitrarily sized POV display.

- Open source

Future improvements:

-Arduino compatible

Here's a professionally produced back of the envelope block diagram:

Schematic and PCB prints:

This is a very crude first software release. Mostly a jumble of test routines. It estimates the z axis angle based on gyro and accelerometer data and displays a bitmap one line per degree.

  • hey hey

    Peter G08/18/2014 at 00:16 0 comments

    It's kinda sorta working. Still needs some fine tuning but it is displaying an image as I sweep it in a circular motion. It's somewhat hard to capture on camera.

    Smiley face

  • It works!

    Peter G07/27/2014 at 01:11 0 comments

    At least the processor and LED drivers work.

  • Protip

    Peter G07/27/2014 at 00:56 0 comments

    Never ever ground pins underneath a chip! When you discover that you really do need the pin that you just grounded, reworking the PCB becomes a major pain in the keister. 

    As you might have guessed, I didn't read the datasheet for the LED drivers carefully enough. Apparently they operate in a oneshot mode and the PWM counter has to be manually reset with a pulse on the blank pin every 4096 cycles.

    I'm not the only one discovering this the hard way:

     Oh well, I de-soldered all the drivers, cut the gnd traces, re-soldered the drivers and added the jumpers to one of the processors spare PWM outputs. It was not an easy task on QFN packages with 0.5mm pitch, I don't think I could have done it without the high power stereo microscope at work.

  • Back from vacation

    Peter G07/11/2014 at 06:18 1 comment

    Before I went on vacation if finished stuffing and soldering three PCBs. I had to use my daughters lego to build a fixture to hold the board while applying the paste to the second side.

    I was a bit careless with the squeegee and ended up with far too much paste on the pads. It wasn't much of an issue except on the 0.5mm pitch TQFP processor.  It was solder short central but nothing some solder wick couldn't clean up. The processor also wouldn't recenter on it's own due to the weight and excessive paste; precise manually positioning was essential.

    The QFN packages were actually quite easy to solder. The huge thermal pad under the part caused them to almost snap into place when re-flowed. There were some solder shorts though.

    Finally, I powered up the boards. No smoke escaped and the LEDs turned on at random. Nice!

    I'm not quite sure why they turn on, I would have expected the drivers to default to off at power on. Maybe not.

     The rest is a simple matter of programming.

  • Oops

    Peter G06/06/2014 at 01:55 1 comment

    I did not know PLCC-6 packages also came in a 3mm version. Now I do.

    Luckily I happen to have a bunch of clear 5050 RGB LEDs laying around. They will have to do for initial testing while I wait for more diffused ones to arrive. 

    Clear LEDs are not really suitable for POV displays as the colors don't blend and you can see the individual component colors, especially when moving. There are ways of diffusing clear LEDs, nail polish, sand paper, hot glue, etc.

    The PCBs are 1mm thick, normally I would use PCB scraps to hold it in place while stenciling but I don't have any 1mm scraps. Business cards stacked two deep worked great as a substitute though, and I finally found a use for all those cards.


    Stuffed and soldered, one side anyway.

    The black-top LEDs made a discomforting popping sound when I re-flowed them. They may have been moisture contaminated, they were shipped in a regular paper envelope from China after all. They all still worked afterwards though.

  • Argh-duino compatibility

    Peter G05/31/2014 at 18:57 0 comments

    Arduino compatibility was always on the wishlist for this project. However, when I started designing there was no suitable Arduino compatible microcontroller with the required connectivity and speed. MSP430 was a possible contender due to the wiring based Energia IDE, but it was lacking a bit in the memory department. In the end I decided to give up on the whole Arduino compatibility and go with an ARM M0 processor from a company called Nuvoton. The GNU ARM tools are free and open source after all. I also had some positive experience with the Cocox IDE on a previous project.

    Just as I finished up the layout, Arduino announces the Arduino Zero, an ARM M0+ based board with all the connectivity I was looking for. Argh...

    At the moment, the Atmel SAMD21 that is used on the zero is made of unobtanium so I decided to stick with the Nuvoton part for the initial prototypes. I will likely change it as soon as the Atmel part becomes available. In preparation for the swap, I snagged one of the few available development boards for the SAM D21 line. 

    As far as I can tell it's functionally identical to the Zero, except that it's using the 64 pin part and has no header bringing out the debug interface for debugging target systems. I'm glad they fixed that major oversight on the Zero.

  • It's so tiny!

    Peter G05/31/2014 at 02:38 0 comments

    It looked much bigger on the screen!

    Beer for scale (Sorry, out of bananas).

    I'm gonna have to go full nerd to solder this.

    Unfortunately the components are on the slow boat from Minnesota and won't arrive until Tuesday. 

  • First mistake

    Peter G05/25/2014 at 00:33 1 comment

    Already a PCB mistake and the boards have not even been delivered yet. Luckily it's a purely cosmetic one but I'll mention it here to hopefully keep others from repeating it.

    I used PCB-pool for the first rev of the boards since they also throw in free stencils if you order 10 boards or less. If you order 11 you will be charged $90 for the stencils, I don't quite get that one...  Anyway, 10 boards was just fine with me so I placed the order. Normally I use gerbers for transfering the file but they charged extra to process standard gerbers so I used their Altium file option. Sending the PCB source file to a board-house has always made me a bit twitchy but this will be open sourced eventually anyway, so what the heck I though.

    Altium has no good way of putting artwork like logos on a PCB so the standard workaround is to stick your logo in a truetype font and print it as a character on the PCB. Well, the font was apparently not embedded in the source file and since the board-house does not have the same font it's obviously not going to print correctly. That is why I have a big lowercase "m" on the board. 

    Oh well, live and learn.

View all 8 project logs

Enjoy this project?



Esteban wrote 03/19/2021 at 02:13 point

very interesting, what gyroscope did you use for this?

  Are you sure? yes | no

Adam Fabio wrote 06/14/2014 at 06:26 point
Great project Peter! Thank you for submitting it to The Hackaday Prize! Don't forget to link in your schematics and code - the more open, the better your chance of winning!

  Are you sure? yes | no

Similar Projects

Does this project spark your interest?

Become a member to follow this project and never miss any updates