Glass Block LED Matrix
From Hive13 Wiki
|Glass Block LED Matrix|
This project had two 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.
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.
- Dave Menninger
- Halfelf ** No longer member
- Add yourself here if you have contributed to this project.
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
- 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?
- Determine why it reverts to random behavior after 3-4 hours of the 'Plasma' display.
- Ideas for what to put on the display.
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.
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.
- 56x RGB ShiftBrite modules
- 56x 11.25" 6-wire conductors from MaceTech
- 1x 9v 30W power supply from Mouser
- 1x Arduino w/ ShiftBrite breakout board
- Several lengths of wood
- A box of 144 binder clips
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: https://github.com/Hive13/windowmatrix
There are several different source code projects inside that one GitHub repository in various states of functionality.
Hodapp has done a good amount of work recently on the software side of this project.
TODO: Links to the code, information on the code, how the pins are being used, how to program, etc..
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:
- 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.
- 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.
- 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.
- 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.
- 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.
- 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.
|Frame||Home Depot||Purchased and Assembled||PVC Pipes, elbows, and T-connectors|
|Rainbowduino||http://www.nkcelectronics.com/rainbowduino-led-driver-platform.html||cjdavis has purchased and received. Thanks to Great customer service from NKC Electronics - http://www.nkcelectronics.com/)||LED matrix controller http://www.seeedstudio.com/depot/rainbowduino-led-driver-platform-plug-and-shine-p-371.html, 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)||http://www.adafruit.com and http://www.ebay.com||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 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.
|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.|
|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.|
|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.|
|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.|
|The hole saw leaves a rather nasty mess, this needs to be cleaned up with an exacto knife or other razer.|
|Ta-Da! Final result. You can remove the pipe from the jig now.|
- TODO: How stuff is wired together
- TODO: The soldering process
- Rainbowduino is Arduino-compatible
- Rainbowduino manual: http://www.seeedstudio.com/depot/images/product/Rainbowduino_Manualv1.1.pdf
- GUI image editor for Rainbowduino: http://www.rngtng.com/mtxcontrol/
- more tips on programming: http://www.rngtng.com/tag/rainbowduino/
Uploading to Rainbowduino
- TODO: PUT CURRENT METHOD HERE
- TODO: PUT FUTURE WIRELESS STUFF HERE
- Glediator - Java based local or network control of an LED matrix
- Led Tube
- MPlayer can output to Blinkenlights...
- 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.
- http://www.neophob.com/neorainbowduino/ has the Processing portion of Neorainbowduino (but, it appears, so does their Google Code repo)
Network based stuff
- TUIO is a protocol running atop OSC; it carries data from tangible multitouch displays.