Monthly Archive for November, 2011

The Road to ACRIS

Finally. After months of inactivity, I finally have ACRIS ready enough to show the world. This post is more or less an account of what I’ve done so far. The main project page has links to all the technical information, plus a ton of photos, especially on the page about the lights I designed. I’m going to summarize what I did in this post.

It all began in January 2011 when I was working on the Next House Party Lighting System (which had some pretty awesome results). As one of the project leads, I designed the electronics that powered the lights. The idea was simple: get output from a computer to a board, which would then control a set of high-powered LEDs.

Fast forward into February. We had a lot of problems with the boards I designed, but eventually got through them. I learned a great deal from the mistakes I made, and, armed with this information, I designed totally new boards. Over
the summer, I then got those boards printed, built them, and installed them into two lights. Now, I’m working on making more lights, writing software to make them flash to music and respond to other environmental inputs. What do they look like so far? See for yourself:

The LED controllers I designed are highly generic. They can be used for other projects! I want to make these boards highly available because I think they will help a designer focus more on the creative process when designing a light and less on the tedious engineering aspects. There’s a lot of potential for growth!

The big attraction for the boards that I designed is that they drive high-power LEDs, especially RGB LEDs. They’re notoriously difficult to easily drive, so this board does all the hard parts for the designer.

The Lights

I bought some lights at the hardware store and modified them to use my LED controller and 3 of these LEDs. IMO, they look quite classy.

I wrote up some documentation on how I modified these lights. There are a bunch of photos here.

The LED Controller

These boards are the fundamental part of the project. What do they look like? Like this:

Well, what do they do?

  • Take input from a computer or other source over RS-485 serial (on CAT-5 cable)
  • Drive up to 15 channels at 360mA each(!!!) with that data
  • They’ve got a custom bootloader (with some interface software), so you can easily reprogram and reconfigure the boards
  • You can power them in several ways
  • You can string them together to create a network of devices

I want to make these boards generic so that anyone can use them to make their own LED lights. They work best with high-power RGB LEDs (since there are 15 channels per board, that’s equivalent to being able to drive 5 RGB LEDs).

I also made this cute mini version. I haven’t tested it out, but it should be able to drive 5 channels. It’s like 1.2×0.8″ or something.


I’ve just finished designing this USB dongle that converts serial over USB to RS-485 to communicate with all of the lights. It plugs right into the computer’s USB port. Unfortunately, I haven’t built any yet, but assuming they work, they’ll be awesome. Right now, I’m just using a breadboard.


It’s modular! Basically, the designer specifies the types of lights he created as controllers. Then, he writes plugins that instantiate these controllers and modify them. So, you can specify complex environments very easily.

My implementation just controls the two lights I have so far. Right now, I just have some basic hue-cycling plugins, but I’m working on more complicated ones that will draw from inputs like music or the current time.

What’s Next

I have a little more work to do on the LED boards. I want to make the outputs screw terminals, clean them up, etc. I’m also starting to look into where I could potentially sell these boards as kits for people who want to make their own lights. I know a lot of people who are interested in using these boards in their own projects.

USB RS232 – RS485 Converter

So for ACRIS, I designed a board that would take serial over USB and convert it to RS485 to send to all of the instruments.

Unfortunately, as it turns out, I made a crapload of mistakes on that board and my first attempt at soldering it did not turn out so well. I fixed the mistakes on the board (the worst being that the USB connector was actually freaking backwards), but I then began thinking a little more carefully about what I was trying to do.

It occured to me that the best way to design a USB -> RS485 converter would be to make it an actual dongle, like a flash drive or wireless dongle. The result is 2 inches long by .6 inches wide and has spots for 2 RJ-45 ports. It also uses the TXDEN signal to determine whether to send or receive data instead of just always placing the RS485 chip in transmit mode.

I’ll be sending an array of these out for ordering soon. I have to replace a few parts from the other board I designed, but other than that, it’s roughly the same as the previous ports.

One of my friends, Marcel, is a fantastic mechanical engineer. Perhaps he’ll be able to give me some guidance on building enclosures for these boards.

And we’re (more or less) back…

Wow. My last post was in late July. I’m not really sure what happened in August, but this semester has been hitting me repeatedly with a bag of bricks. Every time I think that I can spend a few hours working on personal projects, it turns out that I just forgot about something else that I had to do. I thought senior year was supposed to be easy. 🙁

Anyways, this post is a general update on what’s been going on and where some of my projects are headed.

LED Controllers

I’m so sad that I’ve essentially left ACRIS untouched since the beginning of the semester. Also, I haven’t even come close to finishing documentation for it yet. SADNESS

‘sokay though because I’m finally getting back to working on it, even if I should be doing other things. I found a couple of bugs in the first boards that I made, but they should be fixed for the next revision. I’m hoping to start selling them as kits at some point, but I need to work out a few details before I’m ready to do that. In particular, the parts are expensive. I really wish I could make the board modular somehow so that you could add any number of LED controllers onto the board. Also, I’m tying the outputs of the LED driver together in groups of 3, but that may not be what a user wants. What’s the best solution for that? IDK yet.

To whet your appetite:

At any rate, I’m hoping the project will be good enough for Hackaday. I’ve been working hard on it, but I never really know if the work I do is good enough for others to find interesting.

Tor for Microcontrollers

For the computer security class I’m taking, I’ve decided on a kind of weird (and probably a bit stupid) final project: Tor for AVRs. The idea is that if you have a mesh network of devices, you may want one device to securely communicate with another without knowing who the source really is. To demonstrate this, I need an array of AVRs… I was hoping to get some funding, but it looks like I’ll need to buy everything myself. I’ll be documenting this over the next few weeks. (I also need an entertaining name.)


Two of the classes I’m taking this term are particularly interesting. 6.828 is an operating systems engineering class. It’s basically a lot of C, but I particularly like it because it balances classroom instruction with a lot of coding. The labs in the class have you implement core aspects of an exokernel-like operating system. The most entertaining part is that when you run into a bug, it’s usually because you implemented something wrong 3 labs ago. It makes for fun times.

Proficiency with gdb is pretty much essential. A while ago, a coworker pointed me to this article on how to pimp your gdb with a few features that allow you to see how your code is running.

Also, I’ve recently added cscope support to my vim configuration. My productivity has skyrocketed when coding in C (ctags is still useful for other languages).

6.858 is a computer security class. I’m also enjoying the labs in this class, which are approximately split evenly between teaching methods for attacking systems and defending them. The first lab, for example, taught a few buffer overflow attack techniques.

Other Stuff

I’ve updated my blogroll a bit. I also plan to recategorize a lot of my older posts to make searching and so forth easier.