I was inspired by a large bag of red ‘tombstone’ LEDs to make a larson scanner. These LEDs are exactly 0.1″ across which makes them perfect to stack side by side on perf board to get an arbitrarily long bargraph (but in a nicer form factor). This was to be put in a box that originally held the receiver for an aftermarket wireless video game controller. I designed and actually fitted the circuitry in there first. The plan was to make that take serial commands (or serial over USB) and have it be an ROS peripheral for an AI, or natural language processor, or just a roomba with some attitude. Following this build I was watching an episode of Futurama called ‘The Honking’ which featured this distinguished gentleman:
The quote goes:
That painting, the eyes are watching me!
[Farnsworth walks towards a portrait of Commodore LXIV.]
Hmm. It has motor eye sensors attached to motion detectors.
So does my butt, but I don’t frame it and put it on the wall! Although…
Then he got an idea. An awful idea. The Grinch got a wonderful, Awful idea… What if one of those paintings could follow you and was of a regal looking Cylon. I commissioned a friend at i3detroit to mane the painting (a replica of a famous painting, but with a modified head/helmet) and got to work on getting someone else to help with the motion detection. Yeah, I farmed out the work but that’s because I like it here in embeded-land.
The openCV code to detect faces wasn’t hard, it came from a certain mustache example some of you may be familiar with. The painting turned out beautifully, and went to makerfaire. The problem was that the raspberry pi is not the fastest computer for video processing and the pi camera does not deal with changes in exposure well. The face tracking was a failure, but I hope to try that again in the future with a more powerful board.
The hardware is just shift registers, LEDs, and a pro mini. The code is simple, but it’s a good thing I put in an auto-scanner routine for operation without a computer. The manual control can set any LED position on, and then resume scrolling on command.
The code is here.
The pictures are here.