Glass Block LED Matrix: Difference between revisions

From Hive13 Wiki
Jump to navigation Jump to search
m (Fixing Broken Link)
 
(52 intermediate revisions by 12 users not shown)
Line 1: Line 1:
{{Infobox Project
{{Infobox Project 2
|ProjectTitle=Glass Block LED Matrix
|ProjectTitle=Glass Block LED Matrix
|ProjectImage=<flickr>4036597204|m</flickr>
|ProjectImage=File:5350518161.jpg
|ProjectStatus=Active
|ProjectStatus=Completed
|StartDate=10/21/2009
|StartDate=10/21/2009
}}
}}


== Overview ==
= Overview =
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.


Turn the glass block wall in the bathroom at the Hive into a giant LED matrix.
Revision three is using the Shiftbrite modules driven by a WeMos module.


== Plan ==
=== Summary ===
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.


=== TODO List ===
A subgoal of the project for this display to be mobile, allowing for it to be taken to hacker cons and other Hive13 events.
* Clean up this page.
* Measure out and mark holes on the PVC pipes
* Drill out holes in the PVC Pipes
* Wire up the RGB LEDs
* Punchdown the RGB LED leads
* create "plug-in" PCB out of perfboard to plug into Rainbowduino


=== Parts ===
=== Project Manager ===
N/A
=== Contributors ===
* [[User:DaveMenninger|Dave Menninger]]
* [[User:Cjdavis|CJDavis]]
* [[User:Paul|Paul]]
* [[User:Halfelf|Halfelf]] ** No longer member
* [[User:Reportingsjr|Jon]]
* [[ User: Greg J Arnold | Greg ]]
* [[ User: Ry13 | Ryan ]]
* Add yourself here if you have contributed to this project.


= 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 =
# 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.
= 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 [http://macetech.com/blog/node/54 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 [http://macetech.com/blog/node/54 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
* [https://www.wemos.cc  WeMos] Module
=== Construction ===
[[File:5351129152.jpg|240px]]
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.
=== Code ===
A quick summary of the current status of the code:
Our code is hosted on GitHub: https://github.com/Hive13/hive13_rfid_controller/led_wall
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:
# 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.
=== Parts List ===
{| class="wikitable" style="font-size: 85%; width: auto;" border=1
{| class="wikitable" style="font-size: 85%; width: auto;" border=1
|-
|-
Line 28: Line 102:
! Status
! Status
! Description
! Description
|-
| Frame
| Home Depot
| Purchased and Assembled
| PVC Pipes, elbows, and T-connectors
|-
|-
| Rainbowduino  
| Rainbowduino  
Line 34: Line 113:
| 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
| 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
|-
|-
| 56 X RGB LEDs
| USB to TTL Programmer board
| Many
|
| 7 purchased from NKC Electronics and received, and Dave ordered and received 70 of these here: http://www.adafruit.com/index.php?main_page=product_info&products_id=159
| Purchased, received, tested
| shiny; (rainbowduino needs common anode type!)
| This also has a mount for a XBee wireless device so we can program the matrix wirelessly.
|-
|-
| Connector board
| 56x RGB LEDs (Common Anode)
| DIY (http://www.sparkfun.com/commerce/product_info.php?products_id=716, http://www.winfordeng.com/products/cat_pbc.php)
| http://www.adafruit.com and http://www.ebay.com
| We have a piece of perfboard, and some headerNeed terminal strips or similar.
| The 70x adafruit ones have arrived, ebay ones are in transit
| <strike>Daughter board to plug into the rainbowduino headers and hold connectors for the LED wire harness. Turns out this is not going to be particularly complicated, just tedious. We simply need to wire up a breadboard with 4 RJ45 connectors, one each for red, green, blue, and power. This will require: perfboard, 4 RJ45 connectors, 32 header pins, a whole bunch of jumpers, and some patience with the soldering iron.  Alternate possibility: one 25-pin d-sub connector to the 24 RGB lines, plus one RJ45 connector to the 8 anode lines.</strike>  Build the connector board right into the frame without detachable connections. Plug the Rainbowduino directly into the big board.
| [[User:DaveMenninger|Dave]] bought 70x RGB's from [http://www.adafruit.com/index.php?main_page=product_info&products_id=159 Adafruit] however we have been having issues with these and might not have enough[[User:Paul|Paul]] has 100x RGB LEDs on order from China, they are in transit now with an ETA of ~ Jan. 15. 2010.
|-
|-
| Wire harness
| Wiring Harness
| Misc
| Misc
| TBD
| Need more Cat-3
| Ethernet cabling and connectors - also turns out to be pretty simple. Anode lines will be connected down each column, and the RGB lines will be connected across each row. Everything will terminate in 4 RJ45 sockets, which can simply be connected to the daughterboard with cat-5 Ethernet cables.
| 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
| Power Supply
|  
|
| '''Not sure if we have a good power supply yet?'''
|
| Rainbowduino will take anywhere between 5.5v and 9v, but is highly recommended to stay with 6-6.5v
| Rainbowduino will take anywhere between 5.5v and 9v, but is highly recommended to stay with 6-6.5v
|}
|}


=== Construction ===
=== PVC Pipe Framework ===
<flickr>4167041854|m|right|thumb</flickr>
 
* Information
==== Framework Information ====
** Each glass block is 7.5" square with an average of 0.56" of grout on either side.
* Framework is made of 1" white PVC pipe, right angle joints and T-joints.
** The window is 7 blocks wide, and 8 blocks tall.
* The individual upright columns are 60" long.
** There is no grout on the sides of the window or the top // bottom
* The frame consists of two major assemblies of 4 columns that are then hinged together by a piece of white pine wood.
* We have decided to use PVC pipe in a framework to hold the LEDs, the wireing will run through the pipes to a punchdown board which will then go to a PCB daughterboard plugged into the Rainbowduino.
* 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.
 
'''Process'''
{| border=1
! Image
! Instruction
|-
| [[File:4229341203.jpg|240px]]
| 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.
|-
| [[File:4229341355.jpg|240px]]
| 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.
|-
| [[File:4229341503.jpg|240px]]
| 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.
|-
| [[File:4230109572.jpg|240px]]
| [[File:4229341763.jpg|240px]] 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.
|-
| [[File:4230109822.jpg|240px]]
| 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.
|-
| [[File:4230109918.jpg|240px]]
| The hole saw leaves a rather nasty mess, this needs to be cleaned up with an exacto knife or other razer.
|-
| [[File:4230110006.jpg|240px]]
| Ta-Da! Final result.  You can remove the pipe from the jig now.
|}


== Programming ==
=== Wiring Diagram ===
* TODO: How stuff is wired together
* TODO: The soldering process


=== Rainbowduino Programming ===
* Rainbowduino is Arduino-compatible
* Rainbowduino is Arduino-compatible
* Rainbowduino manual: http://www.seeedstudio.com/depot/images/product/Rainbowduino_Manualv1.1.pdf
* Rainbowduino manual: http://www.seeedstudio.com/depot/images/product/Rainbowduino_Manualv1.1.pdf
Line 71: Line 184:
* more tips on programming: http://www.rngtng.com/tag/rainbowduino/
* more tips on programming: http://www.rngtng.com/tag/rainbowduino/
* http://milesburton.com/wiki/index.php?title=RainbowDuino_Via_Serial
* http://milesburton.com/wiki/index.php?title=RainbowDuino_Via_Serial
==== Uploading to Rainbowduino ====
* TODO: PUT CURRENT METHOD HERE
* TODO: PUT FUTURE WIRELESS STUFF HERE


=== Uploading to RainbowDuino ===
= Gallery =
 
== Pictures ==
* to get a sketch to upload to RanbowDuino, we used the method described at these links:
=== Revision B ===
** http://milesburton.com/wiki/index.php?title=RainbowDuino_Via_Serial
{| class="wikitable"
** http://www.rngtng.com/2009/06/25/rainbowduino-here-it-is-and-how-to-program-it/
* our method was:
*# remove the atmega chip from an Arduino Duemilanove (we're using it simply as the USB-TTL interface)
*# connect the pins in the table below from the arduino to the rainbowduino
*# choose the "Diecimila or Duemilanove with Atmega168" as your board in the Arduino IDE
*# compile and upload in the Arduino IDE
*#* for the compile to work you will probably need to drop the Rainbowduino libraries in the appropriate folder ( I tried dropping them everywhere until it worked, I think they go somewhere under /hardware/ but will have to double check)
 
{| class="wikitable" style="font-size: 85%; width: auto;" border=1
! RainbowDuino Pin
! Arduino Pin
|-
|-
| GND [pin 5 or 1]
| [[File:5164897576.jpg|240px]]
| GND
| [[File:5164292619.jpg|240px]]
| [[File:5164292855.jpg|240px]]
|-
|-
| VCC [pin 4]
| [[File:5351129152.jpg|240px]]
| 5V
| [[File:5351130308.jpg|240px]]
| [[File:5350518161.jpg|240px]]
|-
|-
| TXD [pin 3]
| [[File:5350519935.jpg|240px]]
| TX [digital pin 1]
| [[File:5351134040.jpg|240px]]
| [[File:5350521503.jpg|240px]]
|-
|-
| RXD [pin 2]
| [[File:5368998388.jpg|240px]]
| RX [digital pin 0]
| [[File:5368405835.jpg|240px]]
| [[File:5369016300.jpg|240px]]
|-
|-
| DTR [pin 0]
| [[File:5369017460.jpg|240px]]
| RESET
| [[File:5369019016.jpg|240px]]
|}
|}
 
=== Revision A ===
=== Alternate Method to Upload to Rainbowduino - using USB->TTL cable instead of inline arduino ===
 
<flickr>4123105119|m|center</flickr>
<flickr>4123886152|m|center</flickr>
 
We got it to work this way using a "[[MakerBot]]" USB->TTL cable.  Yes, I know the pictures are bad and there are two white wires.  Will detail the pinout later...
 
== Pictures ==
{| class="wikitable"
{| class="wikitable"
|-
|-
| <flickr>4031410668|m|thumb</flickr>
| [[File:4036597204.jpg|240px]]
| <flickr>4036597204|m|thumb</flickr>
| [[File:4035851449.jpg|240px]]
| <flickr>4035851449|m|thumb</flickr>
| [[File:4207554363.jpg|240px]]
|-
|-
| <flickr>4046674364|m|thumb</flickr>
| [[File:4046674364.jpg|240px]]
| <flickr>4046674468|m|thumb</flickr>
| [[File:4046674468.jpg|240px]]
| <flickr>4045931577|m|thumb</flickr>
| [[File:4045931577.jpg|240px]]
|-
|-
| [[Image:RGB LED Fade.PNG|300px|thumb|[http://www.youtube.com/watch?v=FPr2DQLBD6Y YouTube Video of test rig]]]
| [[File:4208318286.jpg|240px]]
| <flickr>4035403284|m|thumb</flickr>
| [[File:4035403284.jpg|240px]]
| <flickr>4037000453|m|thumb</flickr>
| [[File:4037000453.jpg|240px]]
|-
|-
| <flickr>4066121797|m|thumb</flickr>
| [[File:4066121797.jpg|240px]]
| <flickr>4126390713|m|thumb</flickr>
| [[File:4126390713.jpg|240px]]
| <flickr>4126389535|m|thumb</flickr>
| [[File:4126389535.jpg|240px]]
|-
|-
| <flickr>4127159576|m|thumb</flickr>
| [[File:4127159576.jpg|240px]]
| <flickr>4161672314|m|thumb</flickr>
| [[File:4161672314.jpg|240px]]
| <flickr>4167041854|m|thumb</flickr>
| [[File:4167041854.jpg|240px]]
|-
|-
| <flickr>4177814200|m|thumb</flickr>
| [[File:4177814200.jpg|240px]]
| <flickr>4177815340|m|thumb</flickr>
| [[File:4177815340.jpg|240px]]
| <flickr>4177816608|m|thumb</flickr>
| [[File:4177816608.jpg|240px]]
|-
|-
| <flickr>4207553815|m|thumb</flickr>
| [[File:4207553815.jpg|240px]]
| <flickr>4207554051|m|thumb</flickr>
| [[File:4207554051.jpg|240px]]
| <flickr>4207554159|m|thumb</flickr>
| [[File:4207554159.jpg|240px]]
|-
|-
| <flickr>4208318286|m|thumb</flickr>
!colspan=2| [[Image:RGB LED Fade.PNG|300px|thumb|[http://www.youtube.com/watch?v=FPr2DQLBD6Y YouTube Video of test rig]]]
| <flickr>4207554363|m|thumb</flickr>
|}
|}


Line 156: Line 256:


== Videos ==
== Videos ==
=== Revision B ===
{{#widget:YouTube|id=DzMqo8Cu8HE}}


=== Revision A ===
{{#widget:YouTube|id=FPr2DQLBD6Y}}
{{#widget:YouTube|id=FPr2DQLBD6Y}}
{{#widget:YouTube|id=Gx1knElfqqk}}
{{#widget:YouTube|id=Gx1knElfqqk}}
{{#widget:YouTube|id=s9YZwFUnB-s}}
{{#widget:YouTube|id=s9YZwFUnB-s}}


[[Category:Projects]]
= Links =
[[Category:ActiveProjects]]
* [https://sites.google.com/site/arduinodiyprojects/software-projects/glediator---software Glediator] - Java based local or network control of an LED matrix
* [http://www.ledmodulechina.com Led Tube]
* https://github.com/wimleers/flexitimer2
* [http://www.mplayerhq.hu/DOCS/HTML/en/blinkenlights.html MPlayer can output to Blinkenlights...]
 
== Arduino libraries ==
* [http://code.google.com/p/shiftbritehughesyarduino/ shiftbritehughesyarduino] is a premade library for interfacing with the Shiftbrite
* [http://code.google.com/p/neorainbowduino/ 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 [http://pixelinvaders.ch/ PixelInvaders] (commercial product?) replaced it.
* [https://github.com/neophob/PixelController PixelController] is the controlling software (still open source) for the [http://pixelinvaders.ch/ 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 [http://puredata.info/ Pure Data]; while it may also have Processing support, there is also [http://gitorious.org/pdlib/pages/Libpd Libpd].
** That firmware relies on the [http://www.adafruit.com/datasheets/LPD6803.pdf 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.
 
== Processing ==
* http://www.neophob.com/neorainbowduino/ has the Processing portion of Neorainbowduino (but, it appears, so does their Google Code repo)
* http://code.google.com/p/processing-blinkenlights/
* http://wish.seeedstudio.com/?p=271
* http://processing.org/discourse/yabb2/YaBB.pl?num=1222461979
* http://robinsenior.com/blinkenlights/
 
== Network based stuff ==
=== Blinkenlights ===
* http://blinkenlights.net/
* http://blinkenmini.schuermans.info/software.en.html
* http://blinkenlights.net/project/developer-tools
* http://code.google.com/p/processing-blinkenlights/
* http://www.neophob.com/2010/06/processing-blinkenlights-library/
* https://wiki.blinkenarea.org/index.php/Blinkenlights_Markup_Language_English
* http://freshmeat.net/projects/blib/
* http://blinkenlights.net/arcade/arcadepaint
* http://pkgsrc.se/graphics/blinkentools
 
=== Other protocols ===
* [http://www.tuio.org/ TUIO] is a protocol running atop OSC; it carries data from tangible multitouch displays.

Latest revision as of 19:38, 15 May 2018



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


Overview

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.

Summary

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

N/A

Contributors

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

Construction

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.

Code

A quick summary of the current status of the code:

Our code is hosted on GitHub: https://github.com/Hive13/hive13_rfid_controller/led_wall 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 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 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.

Process

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

  • TODO: PUT CURRENT METHOD HERE
  • TODO: PUT FUTURE WIRELESS STUFF HERE

Gallery

Pictures

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

Videos

Revision B

Revision A

Links

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.

Processing

Network based stuff

Blinkenlights

Other protocols

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