Not too long ago a friend of mine who makes guitars asked me for help with using LEDs to add even more blinky bling to his creations. So far, so good; if you give me the bloated corpse of a yak I can show you how to stuff LEDs into it. However he wanted the LEDs to be programmable so that he could incorporate them into the visual design of his guitars and, dammit Jim, he’s a guitar maker, not a programmer.
I needed an interface that he could use that would be user friendly enough for a non programmer but still give him a good degree of control of how the LEDs are sequenced. Not wanting to write any sort of GUI interface to sequence the lights I figured out that you can use the drawing/painting features of a program such as Photoshop to program the lights.
Recently I’ve been playing with something I think is somewhat of a holy grail in LED enthusiast circles: the addressable RGB LED strip.
Non-addressable RGB strip (meaning you can turn the whole strip a particular color but not any individual LED) is becoming easier to find in the market but a RGB strip where you can actually control each LED individually has only been the subject of geek fantasy. Every time I’ve done something public with common RGB strip, someone has come up to me and said “oh wow man, can you control those LED’s individually?”. No, sorry, with those strips you couldn’t — but with this strip you can!
So part of the reason that I’ve been so slack with the postings this year has been because I’ve been collaborating on this project as well. We’ve been sorta pseudo-hush about it as we’ve been developing it but, now that we’ve shown it in its full glory at Maker Faire, the cat’s outta the bag.
Since my last posting, Synoptic Labs has been transplanted to new, larger digs in Sacramento, CA. As a feature of the new location, we now find ourselves with a full garage which has substantially increased our storage and work area. However, this garage opens up onto a busy downtown street with a lot of foot-traffic and a bit of that traffic is from scavengers — people who routinely comb the neighborhood (usually early in the morning) looking for recyclables or, frankly, anything that isn’t nailed down.
The door is opened by remote control and, as we’ve found on numerous occasions already, it’s all too easy to inadvertently hit the remote and open the door without realizing or just forget to close it. More than once we’ve woken up and found that the door has been wide open all night long; the fact that we haven’t lost any tools or equipment because of this astounds me.
Knowing that our luck wasn’t going to hold out forever if we keep leaving the door open, I decided something had to be done. So I hacked together a internet/mobile-phone enabled garage door monitoring system which will notify us if the door is left open during the night.
Rob and I have recently been talking about doing some wireless projects. A friend loaned us a Cypress CYM6935 module which is an evaluation module for the CYWUSB6935 chip and today we attempted to hook it up. We chose an Arduino board simply for convenience though connecting the module to it actually took the bulk of our time today since the 2mm pitch pin headers on the module won’t fit into a breadboard. Also, the Arduino runs at 5V and the Cypress chip can’t tolerate voltages that high so we had to drop the 5V signals from the Arduino down to 3.3V. Fortunately I had a Futurlec 5V to 3.3V level shifter board on hand so that problem was easily solved.
Once we got the module wired into the Arduino we had to figure out how to communicate with it. Thankfully, that work has largely been done already and we borrowed code written by Lars Englund (available here) to test the communications with the chip. This code was written for an ATMega8 so a few of the port definitions needed to be changed to make it run on the Arduino’s ATMega168, but this was fairly painless.
It should be noted to avoid possible confusion that, while we used the Arduino board, we did not use the Arduino programming environment to compile and run Lars’s code. His code is not compatible with the Arduino framework and would require significant porting. (this is not a criticism of the code but rather a disclaimer intended for those who may find this post. It’s not commonly understood that the Arduino hardware is perfectly happy functioning without its development environment).
Anyways, once we got the code to compile and talk back to us via the USART and once we got the Cypress module wired up to the board, we were pretty much done. Much to our surprise the software found the chip and was able to talk to it on the first try. Honestly, we had expected to be chasing stupid wiring mistakes for another few hours so this was a pleasant shock.
That’s pretty much where we left it. We got the software to recognize the chip and talk to it and we called it a productive day. Now what’s left to do is get it to scan the wireless spectrum and send that data back to the host computer for analysis and display.
(Note: these photos were taken not by me but by my friend David Lindes, who has a ton of other amazing photos on Flickr)
It’s 3 a.m. and a phone rings in the White House…
Or actually, it was about 3 p.m. and a phone rang in my pocket. By luck the phone happened to be mine and on the other end of it was 3ric asking if I’d be able to help with a project that evening. Seems he had acquired about 10 liters of liquid nitrogen and among other things was hoping to use it to do some high-speed flash photography of frozen things shattering into a million pieces upon being shot with a pellet rifle.
All was well and good and according to plan, except for the flash trigger, which was stuck in the mail somewhere. Could I hack one together by evening? Thus is how I got my project for the day.
A flash trigger for high-speed photography is a really simple device. Basically all you need to do is take an audio signal and use that to trigger a flash if the signal exceeds a certain level. Rather than muck about with $10 worth of op-amps, transistors, voltage dividers and a bunch of so-called “electrical engineering”, I splurged for the $2 solution and threw the equivalent of a mid-1980’s personal computer at the problem… i.e. a microcontroller. Specifically, a AVR ATMega168 (mounted on a $30 Arduino).
Long story short and after overcoming two rather significant obstacles (#1 being not having a microphone, #2 being not having a flash) we were able to kludge together a workable flash trigger in just a couple hours. With the flash trigger in place and David at the camera, by the end of the evening we had walked away with some decent shots.
Today while cleaning up the lab I came across a little blue ball lamp thing which was my first ever LED project some many years ago. I had found the little guy at a garage sale and later swapped out the incandescent light bulb inside of him with a small array of 22 blue super-bright LED’s.
Not really knowing any better at the time, I had wired all 22 LED’s up in parallel with each other, all of them “sharing” one resistor. Ah how naive. No wonder the lamp got progressively dimmer and dimmer over the years as the LED’s fought each other over current, seeing which of them could burn itself out first.
For fun and nostalgia today I decided to revisit my little blue ball lamp and do it proper (or at least more proper). I yanked out the (now half-dead) 22-LED array and replaced it with a 5-watt blue power-LED.
I had always heard that when a piece of electronic equipment fails, the electrolytic capacitors are often a prime suspect. I got a much better sense of that today as I tried my hand at fixing an old digital projector I had gotten from a friend.
The unit wouldn’t even power on and while I suspected the power supply, I wasn’t able to figure out why it wasn’t working. That is, until I went online and found a post on Fixya.com where other people had run into a similar issue. One poster pointed out that there are four aluminum electrolytic capacitors on the power supply board which are rated at 85 degreesC and, because the board gets so hot in normal operation, these are often the first to fail.
I found the capacitors and they looked ok; their tops weren’t bulged nor did I find a short circuit across their terminals. I needed a way to test their capacitance (since I don’t have a multimeter with this function) and so I set up your typical 555 timer circuit where you use an unknown capacitor with two known resistors and you calculate the capacitance from the resultant frequency. When I did this, sure enough, I found the capacitors in question were significantly below their rated capacitance values and were in need of replacement.
One capacitor in particular, a little 100uF one, was particularly strange in the fact that it’s capacitance changed dramatically while I was watching it on the oscilloscope. I watched it start from around 40uF (still too small) and dwindle down to mere picofarads in the span of a minute or two. I thought it was so neat that I captured a video of it.
(a definition of the word “neat” you weren’t previously aware of, I bet)
I later found out that the whole shrinking thing was a function of it having being heated by the soldering iron and cooling down. Still, I thought it was cool.
Anyways, I replaced the capacitors and plugged the projector in and…. nope, still doesn’t work. However, the fans *do* spin up which is way more life than it had previously and also I’m seeing some stable voltages on the power supply for once. Looks like there’s some other issue at work as well.