Glass Block LED Matrix

From Hive13 Wiki
Jump to navigation Jump to search

Hive13 Project
Glass Block LED Matrix
Status: Completed
Start Date: 10/21/2009


This project has three main design revisions. In the initial design we used a Rainbowduino as the brains of the project, PVC pipes as the framework, and standard 5mm RGB LEDs to provide the light source. This design proved to be incredibly time intensive and we ran into a long series of roadblocks detailed below. In the second design revision (B) we decided to go with ShiftBrite LED modules from Macetech and a much more modular and lightweight construction. The cost upfront was significantly higher, however the reduction in labor more than made up for the additional cost.

Revision three is using the Shiftbrite modules driven by a WeMos module.


The goal of this project is to build an RGB LED Display that will sit behind the glass block window in the Hive13 bathroom effectively turning the 7x8 glass block window into a 7x8 pixel RGB display.

A subgoal of the project for this display to be mobile, allowing for it to be taken to hacker cons and other Hive13 events.

Project Manager



Project Status

Complete! (Mostly) The display has been designed, built, tested, and programs have been run to update the display. There is still quite a bit of coding work left to be done and some minor bugs to be worked out though. We would like for this display to be able to be updated on the fly with a simple computer user interface, and that also still needs to be done. The current issue we are hammering on is that the display will start acting oddly after running for about 3-4 hours. By 'oddly' I mean it starts to flash different colors and it seems to revert to a rather random pattern.

What Needs to be Done

  1. Coding, Coding, Coding
    • Write an Arduino Library
    • Perhaps make it cross platform? So that we could have a Rainbowduino & Shiftbrite display library that uses common sketch code?
  2. Determine why it reverts to random behavior after 3-4 hours of the 'Plasma' display.

Project Needs

  • Ideas for what to put on the display.

Project Information

Glass Block Window

  • The window is 7 blocks wide, and 8 blocks tall.
  • The window is 56 inches wide and 63 inches tall.
  • The window is recessed:
    • 4.5" on the left
    • 3.375" on top
    • flush w/ right wall
    • 6.375" on bottom w/ a downward slope towards the window. The wood is raised 0.5" from the floor on the outside then slopes down towards the window.
  • Each block is 7.5" square with an average of 0.56" of grout on either side.
  • There is no grout on the left, right, top, or bottom sides of the window.

Revision B

After taking a couple months break from working on this project we decided to take another look at our end goals and to reboot the design process. We decided that we wanted to make a display that was brighter, easier to control, easier to build, and easier to maintain. From our initial research for Revision A we had found a module called the ShiftBrite made by MaceTech. We had initially discounted it due to the cost, however after reviewing the cost and time we put into Revision A, it was deemed acceptable.

By choosing to go with ShiftBrites we pretty much achieved all of our goals. ShiftBrites are 8000 mcd per color, our previous RGB LEDs were only 4000 mcd. They can be daisy chained together and then operated by shifting in the values for each individual LED. This allows for an entire window of LED modules to be wired up with only 6 wires. Initially we were concerned with the form factor and how we might go about mounting each LED, however one of our members came upon a simple solution for that as well.

Revision C

Greg and Ryan decided to get the thing working again on Friday, 16 Sept 2016. We had all just purchased some WeMos modules and were looking for projects for them. Greg decided to write a library that can shift pixels out to the displays all rows at the same time.

Parts List

  • 56x RGB ShiftBrite modules
  • 56x 11.25" 6-wire conductors from MaceTech
  • 1x 9v 30W power supply from Mouser
  • Several lengths of wood
  • A box of 144 binder clips
  • WeMos Module


5351129152.jpg TODO: Fill in current build process with pictures and information.

This section needs:

  • Dimensions for wooden sticks
    • Original dimensions, final dimensions after cutting them
  • How we cut the wooden supports w/ pics
  • Information on the binder clips
  • Pics and information on how the binder clips are holding up the supports.


A quick summary of the current status of the code:

Our code is hosted on GitHub: It's custom, because no SPI library supports multiple data lines sharing a single clock line.

Revision A

After dozens of hours of work and quite a bit of monetary investment by our members we decided to abandon this revision. After an endless series of roadblocks and technical issues we decided that while this project could be completed with this design, we could achieve better results more quickly with a new design. Here is a non-comprehensive list of the reasons we changed the design:

  1. Our initial design called for using Cat-5 cable to route power to each of the LEDs. Unfortunately due to the nature of Cat-5 with its twisted pairs we ran into cross talk on the LEDs.
  2. After figuring out that we had cross talk, we then discovered that the LEDs we had purchased were allowing current to travel backward through them, causing a drop in voltage on the common lines which then caused other LEDs to turn on when they should be off. This meant we could never have a blank display.
  3. Each LED required 11 solder joints. We planned for 64 LEDs. In itself, I was willing to do the work, however when added to the other problems this became a hassle.
  4. Due to our design choice of putting the LED's inside the PVC pipes, the distance between LED's had to be precise, if the distance was too short, the LEDs obviously could not reach their holes, if they were too long, the stiffness of the wires meant added work trying to get the LEDs to stay in their holes. This greatly slowed down the soldering operation as each LED strand had to be fitted to its own specific PVC pipe.
  5. The wiring of the display became a nightmare when we considered punching down everything onto the phone block with a tool that was designed to cut the wire after it punched the wire down.
  6. The brightness in the window was a bit disappointing. This was primarily because of the LEDs we were using and we could probably found brighter ones, and we did, the issue then was that we had already soldered almost half design with the other LEDs.

Parts List

Part Source Status Description
Frame Home Depot Purchased and Assembled PVC Pipes, elbows, and T-connectors
Rainbowduino cjdavis has purchased and received. Thanks to Great customer service from NKC Electronics - LED matrix controller, can be daisy chained together, or used singly
USB to TTL Programmer board Purchased, received, tested This also has a mount for a XBee wireless device so we can program the matrix wirelessly.
56x RGB LEDs (Common Anode) and The 70x adafruit ones have arrived, ebay ones are in transit Dave bought 70x RGB's from Adafruit however we have been having issues with these and might not have enough. Paul has 100x RGB LEDs on order from China, they are in transit now with an ETA of ~ Jan. 15. 2010.
Wiring Harness Misc Need more Cat-3 This was originally going to be done with Cat-3 connecting the RGB LED's cathodes and Cat-5 being used for each anode, however due to cross talk issues we will be using only Cat-3.
Power Supply Rainbowduino will take anywhere between 5.5v and 9v, but is highly recommended to stay with 6-6.5v

PVC Pipe Framework

Framework Information

  • Framework is made of 1" white PVC pipe, right angle joints and T-joints.
  • The individual upright columns are 60" long.
  • The frame consists of two major assemblies of 4 columns that are then hinged together by a piece of white pine wood.
  • The plank of wood will hold the electronic brains of the display.

Hole Drilling Process

  • The LED's poke through 13/64" holes in the front of the pipe. The LED's are 5 mm, 13/64 is the closest bit we could find to 5mm @ 5.15 mm.
  • The LED's can be positioned in place by a 3/4" hole in the back of the pipe. The 3/4" hole is immediately behind the 13/64" holes.


Image Instruction
4229341203.jpg Attach the pipe to be drilled to the jig to hold it steady. The Jig is simply a long piece of wood with a V cut into it with a table saw. The pipe is held down with screws and washers on either end of the pipe.
4229341355.jpg Using a pencil,draw a line down the side of the pipe, using the jig as a kind of ruler. Then rotate the pipe in the jig so that the line is down the center of the pipe.
4229341503.jpg First measure out 3.5 inches from the bottom of the pipe, mark it on the center line. Then using measuring tape, mark out a point every 8 inches on the pipe. These are the points where we are going to drill pipe.
4230109572.jpg 4229341763.jpg Using the marks made in the previous step and a 13/64 drill bit, drill through both sides of the pipe. Be careful to not drill into the jig.
4230109822.jpg After drilling the 13/64" holes through both sides, swap the drill bit for the 3/4" hole saw. Adjust the drill press table so that the hole saw will cut through only one side of the pipe. Then use the 13/64" holes as a pilot to ensure that the new holes are centered. The cut out slug will probably be stuck inside the hole saw, you can cut 3 holes before you need to disassemble the it and remove the built up slugs.
4230109918.jpg The hole saw leaves a rather nasty mess, this needs to be cleaned up with an exacto knife or other razer.
4230110006.jpg Ta-Da! Final result. You can remove the pipe from the jig now.

Wiring Diagram

  • TODO: How stuff is wired together
  • TODO: The soldering process

Rainbowduino Programming

Uploading to Rainbowduino




Revision B

5164897576.jpg 5164292619.jpg 5164292855.jpg
5351129152.jpg 5351130308.jpg 5350518161.jpg
5350519935.jpg 5351134040.jpg 5350521503.jpg
5368998388.jpg 5368405835.jpg 5369016300.jpg
5369017460.jpg 5369019016.jpg

Revision A

4036597204.jpg 4035851449.jpg 4207554363.jpg
4046674364.jpg 4046674468.jpg 4045931577.jpg
4208318286.jpg 4035403284.jpg 4037000453.jpg
4066121797.jpg 4126390713.jpg 4126389535.jpg
4127159576.jpg 4161672314.jpg 4167041854.jpg
4177814200.jpg 4177815340.jpg 4177816608.jpg
4207553815.jpg 4207554051.jpg 4207554159.jpg


Revision B

Revision A


Arduino libraries

  • shiftbritehughesyarduino is a premade library for interfacing with the Shiftbrite
  • neorainbowduino @ Google Code
    • This includes both Arduino firmware to interface with the Rainbowduino and a Processing library to control it.
    • It is no longer updated since PixelInvaders (commercial product?) replaced it.
  • PixelController is the controlling software (still open source) for the PixelInvaders panel. The data/ArduinoFw directory of the git repo here has some Arduino firmware that is derived from Neorainbowduino's.
    • PixelController runs off of Pure Data; while it may also have Processing support, there is also Libpd.
    • That firmware relies on the LPD6803 which appears to be fairly similar to the Shiftbrite. They've gotten rid of the Rainbowduino support completely, as far as I can tell.


Network based stuff


Other protocols

  • TUIO is a protocol running atop OSC; it carries data from tangible multitouch displays.