K. I’m done with the all-caps post titles ;).

As I mentioned at the end of my last post, I am working on a fairly large project involving LEDs and a Teensy 3.1. Well, here are the details. Last year, I bought two meters of Adafruit’s Neopixel LED strip and put it up on the wall in our dorm room. People (and me) seemed to like it, so I decided to go all-out for this upcoming year and do a full circle around the ceiling. Mind you, our room does not have a perimeter of 12 meters (although it doesn’t seem a whole lot bigger), but I don’t want to spend too much money and do the entire room. The ceiling is divided into two sections by a metal box around the fire sprinkler pipe, so I’m only doing half.

Two meters was easy enough to control with just an Arduino, which is what I used. Twelve metersĀ probably would also work, but I would not have enough resources left over to do additional things with the Arduino. That’s where the Teensy 3.1 comes in. These guys are so cool, with a 32-bit ARM processor running at 72 MHz (overclockable to 96!), 256K of flash memory, 64K of RAM, DMA, and full-speed USB support for only 20 bucks!. You can still use the familiar Arduino IDE for programming, and many of the standard libraries are supported. For LED control, I’m using the OctoWS2811 library, which uses highly efficient DMA data transfer within the ARM for updating up to eight individual strips with minimal CPU usage.

The Teensy runs at 3.3V, but the LED strips want a 5V signal. To solve this, you can use a buffer IC such as the 74HC245, which is what I’m doing. The data for the LEDs is running at a fairly high-speed 800KHz, so you can’t just run any length wire you want to your strips without getting undesired results. CAT5/6 ethernet cable is designed for much higher bandwidth signals, and has four twisted pairs for data and ground to four separate LED strips. 100 ohm resistors are used on the outputs of the 74HC245 for impedance-matching to the cable, and two separate cables are used in my installation to fully utilize the OctoWS2811’s capabilities to drive eight strips. I designed a custom circuit board (as I do with everything is seems) to host the Teensy, the buffer chip, resistors, and ethernet jacks. It also just happens to be the same shape as an Arduino, to accommodate the ethernet shield I have.

Neopixel Control Board

Neopixel Control Board

Oh, an ethernet shield? Are you planning on putting this contraption on a network? Yes. I want an easy way to manage the LEDs once everything is put together, and I want my roommates to have control over the LEDs as well. I may even make it publicly accessible for a short time so anyone can play around with the lights in our room! I can also use this for getting the current time or weather (like it would be anything but snow) and somehow display that data on the LEDs for an actually useful purpose.

Some time ago, I decided I wanted a piece of carbon fiber laminate, so I bought some from McMaster. Well, it sat around without a purpose (besides looking awesome) until I needed to make a nice platform to mount a terminal block for power distribution, a big-ass capacitor, and my new control board for this project. I could have just used a piece of plywood like I did for my LED cube, but I wanted this to look nice. Plus, this is lightweight, because weight saving on something like this isĀ very important. Yeah… OK.

Neopixel Control and Power

Neopixel Control and Power

Mhmmmm… Carbon fiber. Actually, the red power wire looks really awesome against it.

I started to make the data cables by cannibalizing a 50? foot ethernet cable I had. I probably should have just bought a hundred feet or so of CAT5 cable, connectors, and a crimper to make my own cables, but ah well. I have one cable done, so I hooked it up to the LED strip and fired it up.


AHH! Its bright! Well, this was before I ran 12 gauge wire every three meters to better power everything, so the LEDs at the end are dimmer and shifted red a bit.

That’s all I’ve got right now, as I had to order more power cable because 50 feet wasn’t enough for how I’m running power to everything. I also had to order some additional hardware to attach the terminal block to the carbon fiber mounting plate (I had screws holding it for the picture, but there were no nuts on the other side) and a buttload of 3M mini command strip hooks for putting everything up in the fall.