The thinking cap

Introducing: My prototype thinking cap! It’s a hat that scrolls a message in changing colors. You can change the message with your smartphone since the hat contains a  bluetooth radio. You can even change the colors and stuff. It runs on 8 AA batteries. I actually wore this at around for a day on campus!

I used the LPD8806 based RGB led strips I purchased earlier, cut into 5 equal length strips stacked one on top of the other to give me a vertical resolution of 5 pixels. I incorporated a basic character set that is 5 pixels high and up to 7 pixels wide to scroll the text across the hat. The text is very hard to make out unless you are at least 5 feet away, unfortunately. The farther you are, the easier it is to read the hat.

Materials and technical stuff:

  • Teensy 2.0 microcontroller
  • 2 x 744052 dual 4 channel multiplexors
  • 1 x 7400 series inverter
  • Sparkfun bluetooth mate gold
  • 8 x AA batteries
  • Diode (6A capable, to drop the voltage on the batteries)
  • Plenty of wires

The Teensy only contains a single SPI interface, which was used to control the led strips. I needed a way to multiplex the SPI between the strips since I didn’t feel like connecting the end of each strip to the beginning of the next strip, so I decided to use the multiplexors. I chose the 744052 since they were dual 4 channels, meaning they behaved like a double pole, single throw switch. This was necessary to switch the SPI data and clock lines between each strip. A problem arose however, because I had 5 strips but the multiplexors were for 4 channels, so I added an inverter and another multiplexor and came up with a cheap scheme to let me multiplex between the 5 using only 3 bits.

Enable Sel X Sel Y Enable Sel X Sel Y
0 0 0 1 0 0
0 0 1 0 0 0
0 1 0
0 1 1
1 Don’t Care Don’t care
B4 B3 B2 Mux 1 output # Mux 2 output # Strip #
0 0 0 1 -  1
0 0 1 2 - 2
0 1 0 3 - 3
0 1 1 4 - 4
1 0 0 - 1 5

The third bit of my output was used to control the enable (which is active low) of the first mux, and I tied the complement of it to the enable of the second mux. This ensured that for values 0 to 3 (000b to 011b) that the first mux was enabled and the second disabled, and when I output 100b, this disabled the first mux and enabled the first input of the second mux. The input select lines on the second mux were both tied to ground, as I only used it to select the 5th strip.

This allowed me to easily index my strips and switch between them when controlling the scrolling text. The text itself was achieved using a framebuffer and a bunch of shifts. The bluetooth radio used was the sparkfun bluetooth mate gold, which allowed me to easily change the text message using the serial port profile and a serial console app on my phone.

Video of hat in action: