Addressable LED Strands

I’m in the process of constructing/setting up my office in the house, and for lighting, I have decided that I want to use xmas light-style lighting.  Many years ago, I used to light my room with multicolored incandescent lights. I loved the warm indirect glow, and smooth light without a single light source.  This time, I’m going to take it a step further.

While there’s nothing about this project yet that is really innovative over what others have done, it is the first step to getting the office lighting done.  The real fun will come into play once I’m able to hang this up, and start programming effects, and tying those effects in to physical or time-based events.

A couple years back I picked up a strand of addressable LED lights, similar to this one, available at adafruit.com.  I got a strand of 50 lights, blew out one of them while being stupid, and used a few of them in Jasper’s Toy Box (posts to come about that eventually), so I’m left with 42 lights.  A nice number.

In any event, the plan is to hang them up around the upper perimeter of the room, and it will give a nice comfortable glow to illuminate the room.  I can also extend it by doing lighting effects with the color.  For example, in the evening I can have all of them dim blue, and randomly twinkle one to white, to simulate a star in the sky.  I could also tie them in to an automation system to glow a particular corner of the room red or yellow when i have email from a specific person.  I could also adjust their color based on the content of my monitor, or the light outisde, etc.

The basic design for the control circuitry is that there will be an Arduino-based AVR micro (actually one of the D-15 servo controllers I’ve appropriated), which is perfect, since the strands only need two lines to control them.  The host computer will send down codes to address the LEDs (set all to color X, set led Y to color X, etc) and this will pass on the content to the strand, and twiddle the data lines and all of that fun stuff.  I had considered putting more “smarts” into the micro, but the amount of space in there would severely limit the kind of content I could “display”, so I decided to put all of the grunt work back on the host computer.

To power it, I needed to get a 5 volt power supply. I snagged a power brick from an old external drive case, as well as a standard PC power connector, from a failed power supply, and spliced the two of them together.

Copious, yet appropriate amounts of heat shrink tubing and splicing some wires yielded a nice power supply.

Next, I built an interface board to tie it all together.  The ports on the board are (left to right) – 6 pin FTDI interface for serial IO, 2 pin jumper (power the D15 from the power supply rather than FTDI source), 3 pin power, 4 pin light strand connector.  You can also see in this picture, the process of crimping the terminals for the molex connector on the LED strand’s wires.

I kept the layout and pinout of the FTDI the same as I used for my serial node experiment.  This will help me plug that connector in correctly.  I still need to add visual cues (colored sharpie markings) to help me align the pins correctly.  The power connector has GND on pins 1 and 3, and +5V on pin 2.  Keeping it symmetrical will help me always plug it in correctly, reducing the chance that I will blow it all up.  The 4 pin connector is the same pinout as the wiring of the LEDs.  GND, Data, Clock, +5.

The jumper on the board (dis)connects the power header from the D15 and FTDI portion.  If I make standalone firmware for it, I can power everything from the power supply, if need be. The tiny green LED on the board just lights when the D15 has power.  A nice indicator in case everything else is not functioning.

The protocol I used for this is very simple.  There’s a command character sent through serial, then the data for that command.  If the firmware is expecting a command character but gets something it doesn’t understand, it just keeps checking the serial input for a command it knows.  The protocol is as follows:

p<index of LED><red value><green value><blue value>

Five bytes.  It sets the specified LED (0..42 in this case) with the specified RGB value (0..255 each).  Note that this is not an ascii string, it is data.  So no matter what, it is 5 bytes to change a single pixel.

f<red value><green value><blue value>

Force all of the lights to the specified color.  This is handy for clearing everything to black, or flashing/fading effects.

Here’s the Arduino firmware used to handle all of this:  (Note: it requires that the strand’s library be installed.)

For now, that’s it.  I made a simple interface on the desktop side in Processing, adapted from my previous controllable pixel software, to let me click and change the color of an LED. I also added some key commands to do simple effects with the lights. (all red/green/blue. flash, etc)

Eventually, I will write better desktop software which will use the LEDs for indication of events, as well as f.lux style color effects throughout the day, audio/visual synchronization to media being played, and other effects as well as time goes on

NOTE: All of the source/projects for this are available on github.

from on January 25th, 2013Comments0 Comments

Repairing an Arcade Monitor

I won’t lie to you.  Having an arcade machine is a lot of fun.  I used to have about 6 of them, but I’m down to two, due to space restrictions and general sanity.  The two that I still have are a TRON Mini/Cabaret, and a generic full-size cabinet into which I can put one of a few game motherboards that I have. (Dig Dug, Mortal Kombat, Klax, Rampart, and a few others.)  But one of the less glamorous sides of collecting machines is troubleshooting and repairing these 30 year old beasts.

I bought the Tron Mini in the late 90s as an empty cabinet.  I was having a difficult time back then finding an affordable Tron board/control set to install, so I instead put Satan’s Hollow into it.

Tron Cabaret cabinet with Satan’s Hollow – Note the red joystick and white “shield” button instead of the standard blue stick and spinner from Tron.

Over time, I found all of the parts needed including a few tricks to restore this.  When I put the Satan’s Hollow boardset in, I rewired/hacked/brutalized the wiring in the cabinet to accommodate SH.  Although SH used the same boardset, the controls were wired differently.  Once I got the Tron board, and realized how rare this machine really is, I re-wired it using a wire harness from a junked Tron machine.  I also found the correct power supply to install, repaired by a fellow collector.  The controls were also out of another junked machine.  Over time, I got the machine as restored as I could get it.

Tron uses a boardset, three boards connected together, from Bally/Midway called “MCR-2″.  It consists of a CPU/Program board, a Video/Graphics board, and a Sound/IO board.  Midway used this boardset for a few games, including Tron, Satan’s Hollow, Two Tigers, and a couple other ones.  If you have a ROM programmer (which I do), you can buy one of the cheaper boardsets to use as a replacement for one of the more desirable machines.  Tron boardsets, when I was last looking, sold for about $75-$150.  Two Tigers sold for about $40.  The boardset I have Tron running on right now is a Two Tigers boardset.

When restoring a game, there’s a line to walk with respect to what parts to put into it.  This machine has some vinyl veneer on the sides, which are somewhat damaged.  It also has a fair bit of wear on the front edge of the control panel.  I could have tracked down a replacement/reproduction for these parts, but I’d rather keep it factory original.  It’s not like the damage is too severe for either issue.  I’m actually very happy with the overall condition….  except for the monitor.

The cabaret/mini cabinet uses a 13″ monitor, compared with the full-size’s 19″ monitor.  The monitor on this one showed a wavy haze, distorting the image a little, and mucking with the brightness across the screen, which you can kinda see in this video.

I was given a solution about 11 years ago, involving modifying one of the boards in the monitor (the “neck board”, which connects directly to the back of the picture tube) but never did it, and lost the parts a few years ago.  I instead bought a “cap kit” from Amusements Plus around 3 years ago, and decided to install it.  The last time I did one of these was in 2001, so it’s been some time.

Love that desoldering iron!  The pump just clears out all of the solder super fast!

All of the caps in the cap kit have been replaced.  Shiny new caps on the board.  Old, dusty, puffy caps in the plastic bag.  I’m not entirely sure why I kept them…

Thanks to the awesome desoldering tool at Interlock, I was able to do this in about 45 minutes, rather than the 3 hours it took me years ago.

The board is mounted into the monitor framework, and reconnected to the picture tube.

Just about all of these knobs needed to be tweaked to get the picture looking its best!

After some calibration of adjusting all of the controls (focus and drive on the flyback transformer, and R/G/B Drive and Cutoffs on the neck board), the picture looked better than it has ever looked before! Which you can’t really tell from these pictures, but trust me, the picture is sharp, colors bright, and the imagery is stable. It’s like it’s a new monitor!

The boardset I had in it at first was the Satan’s Hollow with my ROM hack so that it will work as a drop-in for TRON arcade cabinets with no rewiring at all.

Yeah, a horrible high score, but just let me practice and remember my old strategies!

The above pictures were taken before I realized how much dust had accumulated on the picture tube and shroud.  I’ve since removed the artwork glass as well as the tinted plexi below that, and cleaned off those items as well as the picture tube itself.  That eliminated all of the haze, and improved the picture as well!

Hopefully, I’ll get 30 more years of life out of if!

from on January 16th, 2013Comments0 Comments

Scott’s Project Smörgåsbord 1

Some nights when I head to Interlock, rather than having one single project, or a part of a larger project to work on, I have a bunch of little things I want to get done.  They have the tools and materials I often need to do this.  This past Tuesday was one such night.  I had four things I wanted to work on, and I got all four done!

1: I like to put handles on things.  My favorite handles are from Lowes or Home Depot, and are called “wire drawer pulls” as seen in the image above.  They’re relatively inexpensive at about $2, and are simple to install.  Generally they would be put on drawers in a modern kitchen or a clinical-type setting, but I like to put them on everything.  If something is portable, it should have a handle.  I just drilled two small holes in the plastic parts bin seen above, shoved the screws in from behind with some washers, and done!  I’ve used these handles for portable drive carriers, and other now-more-portable things.

 

2: My son, Jasper sometimes breaks his toys.  I usually am the one who fixes them.  Above are two wood bolts from his workbench.  The threaded screws came out of the bolt heads.  I just scraped out the glue from the holes, and cleaned up both sides with a rasp and some other things that probably weren’t designed for such things.  I added some wood glue, threw them in these clamps, and returned the screws to Jasper in the morning.

 

3: I had tried to fix my DLP projector a few weeks back.  There was something in the light path making half of the image dim such that if you shook the projector, it would clear up a little. I tore it down, and right between the spinny color wheel and the mirrors in front of the DLP chip is this little mirror tube collimator. The glue holding the four front-surface mirrors to the rectangular metal box had failed, and the mirrors became loose.  A couple weeks back, I had tried gluing it back together with epoxy, and it seemed to work, but a new, harsher shadow was in the projected image.  I needed to get some dental tools, mainly the little mirror tool, to see what was going on.  Sure enough, this little guy was aligned incorrectly.  A bunch of futzing with it later, and it is now fully functional!

4: I have been building little breakout boards for my stepper motor controller-turned-arduino boards.  I decided that for the animatronic bird project, I wanted to have a way to input joystick data.  I made a small adapter to go from PC Gameport Joystick to the widget.  I followed this project here for the correct circuit — basically just some pullups on the digital button inputs, and some pulldowns for the analog axis inputs.  I only wired up the first X/Y pair as the widgets only have two analog inputs available.  It was relatively simple to build.  I had built the main breakout board the night before at home, and i made the orange-wire to Gameport connector cable at Interlock.  With help from Nick, providing the old joystick, before I left i had written an auto-scaling display of the current joystick state.  More about this to come in future posts.

All in all, it was a densely packed evening, with four mini-projects completed.  Huzzah!

from on December 18th, 2012Comments0 Comments