Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
project:ledbar [2012/11/16 18:41]
pasky [Short-term TODO]
project:ledbar [2014/07/13 14:27] (current)
pasky [TODO / Roadmap]
Line 32: Line 32:
 ===== Status ===== ===== Status =====
  
-As of 20.8.2012, we have 20 LEDs hooked up and working, connected to blinkenlight ​computer, with good prospects of getting ​the rest working tooYou can control ​these LEDs over the LANsee roadmap for details for now.+We have a row of 23 LEDs hooked up and working, connected to the sargon ​computer, ​where Python control software (rainbow or audio spectrum) runs in a dedicated screen. 
 + 
 +Our current plan is to switch to smaller control boards ​with better LED interconnect,​ and build a second ledbar row so that we can finally move the current one to the ceilingAs of June 2014, it was set in motion again. (All these changes should be hardware-onlyfirmware + software compatible.)
  
 Some media: Some media:
Line 42: Line 44:
                                
 {{:​project:​ledbar-10.jpg?​400|}} {{:​project:​ledbar.jpg?​400|}} {{:​project:​ledbar-10.jpg?​400|}} {{:​project:​ledbar.jpg?​400|}}
- 
-===== Short-term TODO ===== 
- 
-  * [HW] In all LED boxes, replace 4ohm resistor by 8ohm resistor on LED channel 
-    * Resistors already bought 
-    * Just 30-60 minutes of desoldering + soldering required 
-  * [SW] Port remaining C animations to Python 
-  * [SW] Improve Python ledbar class to reduce redundancy in animation scripts 
  
 ===== Technical Specs ===== ===== Technical Specs =====
  
-Each glass block will be illuminated by a single RGB LED node; 23 nodes shall +Each glass block is illuminated by a single RGB LED node; 23 nodes are 
-be chained together with possibility of individual control.+chained together with possibility of individual control.
  
 Each node consists of three LEDs (R, G, B) with sufficient Each node consists of three LEDs (R, G, B) with sufficient
Line 65: Line 59:
 required. We need to PWM-control 23*3 = 69 individual outputs. required. We need to PWM-control 23*3 = 69 individual outputs.
  
-The microcontroller ​will be connected to a computer (e.g. sargon) and some +The microcontroller ​is connected to a computer (e.g. sargon) and simple control software.
-simple control software.+
  
 {{:​project:​ledbar-rearwall.jpg?​220|}} {{:​project:​ledbar-rearwall.jpg?​220|}}
Line 73: Line 66:
 {{:​project:​ledbar-shields.jpg?​220|}} {{:​project:​ledbar-shields.jpg?​220|}}
  
-===== LED Circuit ​=====+===== Hardware ​=====
  
-Version 2 is based on [[http://​www.ti.com/​product/​tlc59116|TLC59116]] constant-current sink LED driver with I<​sup>​2</​sup>​C interface. TLC59116F could be also used, but circuit must be slightly modified (PNP -> NPN + base pull-up resistors). ​Power distribution design is not ideal, current combination (RJ-45 + UTP cable) is not designed for high-current (up to 5 A) applications. In the next version, proper cables and connectors should be used.+Version 2 is based on [[http://​www.ti.com/​product/​tlc59116|TLC59116]] constant-current sink LED driver with I<​sup>​2</​sup>​C interface. TLC59116F could be also used, but circuit must be slightly modified (PNP -> NPN + base pull-up resistors). ​TLC59116 allows ​up to 15 boards on one I<​sup>​2</​sup>​C bus.
  
-TLC59116 allows ​up to 15 boards on one I<​sup>​2</​sup>​C bus.+In v2.0 (deployed), power distribution design is not ideal, current combination (RJ-45 + UTP cable) is not designed for high-current (up to 5 A) applications. 
 + 
 +In v2.(in progress), more appropriate cables and connectors are used, and PCBs have lower form factor.
  
 Schematics and boards are to be found in [[https://​github.com/​brmlab/​ledbar/​tree/​master/​eagle|Git repository]]. Schematics and boards are to be found in [[https://​github.com/​brmlab/​ledbar/​tree/​master/​eagle|Git repository]].
Line 84: Line 79:
 {{ :​project:​schemav2.png?​200|}} {{ :​project:​schemav2.png?​200|}}
  
 +==== TODO / Roadmap ====
 +
 +Current row, to be moved to the ceiling:
 +  * [DONE] In all current LED boxes, replaced 4ohm resistor by 8ohm resistor on LED channel
 +  * [DONE] Populating v2.2 boards
 +  * [TODO] Překrimpovat the LED cables for v2.2 boards, other cabling
 +  * [TODO] Build power distribution board for the v2.2 interconnect
 +  * [TODO] Check shield compatibility with the v2.2 interconnect
 +  * [TODO] Test the new v2.2 boards
 +  * [TODO] Fix the current row on the ceiling
 +
 +New row that will point inside the room:
 +  * [IN PROGRESS] Prepare the LEDs
 +    * LEDs plus breakouts bought, we will need to solder them on, measure resistances and build+attach some coolers
 +  * [TODO] Buy components for another set of v2.2 boards (PCBs are already manufactured)
 +  * [TODO] Build new LED boxes for the in-room row
 +  * [TODO] Another Arduino? Or use one Arduino and put all LEDs on a single I2C bus?
 +
 +==== Driver board v2.2 part list====
 +
 +^ part ^ # per board ^ url ^
 +| BD140 | 15 | http://​www.gme.cz/​bd140-16-p211-012 |
 +| ARK210/3EX | 1 | http://​www.gme.cz/​svorkovnice-do-dps/​ark210-2ex-p821-083/​ |
 +| resistor 10k SMD 1206 | 6 | http://​www.gme.cz/​r1206-10k-1-p900-179 |
 +| resistor 2k7 SMD 1206 | 1 | http://​www.gme.cz/​r1206-2k7-1-p900-182 |
 +| resistor 4k7 SMD 1206 | 1 | http://​www.gme.cz/​r1206-4k7-1-p900-248 |
 +| resistor 220R SMD 1206 | 1 | http://​www.gme.cz/​r1206-220r-1-p900-295 |
 +| SMD LED 1206 | 1 | http://​www.gme.cz/​led-1206-green-42-120-p960-285 |
 +| pin header 2x4 | 1 | http://​www.gme.cz/​oboustranny-kolik-xinya-s1g40-2-54mm-p832-021 |
 +| TLC59116 | 1 | http://​cz.rs-online.com/​web/​p/​ovladace-led-displeje/​7098880/​ |
 +| RJ11 connector | 2 | http://​www.gme.cz/​rj-konektor-webp-6-4-lp-p833-045 |
 +| ceramic capacitor 100n SMD 1206 | 1 | http://​www.gme.cz/​cks1206-100n-50v-x7r-yag-10-p905-081 |
 +| ceramic capacitor 1u SMD 1206 | 1 | http://​www.gme.cz/​cks1206-1u-16v-x7r-yag-10-p905-136 |
 +| electrolytic capacitor 22u E2.5-5 | 1 | http://​www.gme.cz/​ce-22u-25v-jam-sk-5x11-rm2-bulk-p123-069 |
 +| 4-pin molex connector + cable | 5 | http://​www.gme.cz/​kontakt-xinya-pff02-01fg-p800-162 + \\ http://​www.gme.cz/​konektor-se-zamkem-xinya-psh02-04pg-p800-170 + \\ http://​www.gme.cz/​konektor-se-zamkem-xinya-pfh02-04p-p800-086 |
 +
 +Total: cca 220 CZK per board + shipping
  
  
-===== Lessons Learned ​=====+==== Lessons Learned ====
  
   * Verify your wiring. In twisted pair, if you have the wrong wire connected, for a single TLC it will work because the signal will induce to the other wire in the pair. For anything further a single TLC, the rest of the other wire will work as antenna and a lot of other mess will induce on it too.   * Verify your wiring. In twisted pair, if you have the wrong wire connected, for a single TLC it will work because the signal will induce to the other wire in the pair. For anything further a single TLC, the rest of the other wire will work as antenna and a lot of other mess will induce on it too.
Line 99: Line 131:
  
 The control software can either just show pixels on the display, or when given a device name (/​dev/​ttyUSB0),​ it will also send pixel values to the Arduino. The control software can either just show pixels on the display, or when given a device name (/​dev/​ttyUSB0),​ it will also send pixel values to the Arduino.
 +
 +==== TODO / Roadmap ====
 +
 +  * [TODO] We need to tune the pixel brightness and color profiles. (depends on 4R -> 8R red resistor change)
 +    * http://​www.jjoseph.org/​misc_projects/​rgb_led_color_calibration
 +    * http://​neuroelec.com/​2011/​04/​led-brightness-to-your-eye-gamma-correction-no/​
 +  * [TODO] Port remaining C animations to Python
 +  * [TODO] Improve the Python ledbar class to reduce redundancy in animation scripts
 +  * [TODO] Make some fancy web UI
 +  * [IN PROGRESS] Write and continue improving the computer control software
 +    * [DONE] Basic control software: http://​github.com/​brmlab/​ledbar
 +    * [WIP] Network-based animation dispatcher.
 +      * [SCRAPED] brmlab@blinkenlight screen runs network -> arduino link, listening for 23*3 R,G,B byte sequences on UDP port 17740
 +      * brmlab@blinkenlight screen runs ledbar control software
 +      * Default: audio spectrogram of our main mixer speaker output; you can use alsamixer to switch it to microphone (brmlab ambient noise), but you will want to recalibrate the spectrogram to frequencies 100..2000.
 +      * TODO: Proper multiplexing of default animation and network traffic, perhaps also status-based and noise-level based? (Show sound spectrum in case music is playing.)
  
 ==== GitHub, last commits ==== ==== GitHub, last commits ====
Line 104: Line 152:
 {{rss>​https://​github.com/​brmlab/​ledbar/​commits/​master.atom 5 author date 1h }} {{rss>​https://​github.com/​brmlab/​ledbar/​commits/​master.atom 5 author date 1h }}
  
-===== Roadmap ​=====+===== Further Expansions ​===== 
 + 
 +Later, we can extend the display also to the storage room (extra 9-pixel 
 +row, and half of the second row visible too). 
 + 
 +We might also try to split a single glass block to 2x2 pixel matrix, maybe cooperating with MoodyLight. 
 + 
 +But let's start simple! 
 + 
 +===== References ===== 
 + 
 +  * http://​waitingforfriday.com/​index.php/​USB_RGB_LED_VU_Meter 
 +  * http://​www.arduino.cc/​en/​Tutorial/​ShiftOut 
 +  * [[http://​www.dealextreme.com/​details.dx/​sku.14965|Possible source of cheap RGB LEDs]] 
 + 
 +===== Historical Approaches ===== 
 + 
 +==== Version 2.0 ====
  
   * [DONE] Try out various kinds of LEDs for a single node   * [DONE] Try out various kinds of LEDs for a single node
Line 110: Line 175:
     * We have a power RGB LED from DealExtreme,​ but we do not trust DealExtreme enough for 23 LEDs operated non-stop, heavy duty, for at least few years.     * We have a power RGB LED from DealExtreme,​ but we do not trust DealExtreme enough for 23 LEDs operated non-stop, heavy duty, for at least few years.
     * We have decided on http://​www.gme.cz/​cz/​l-lxhl-hprgb-p511-558.html;​ we are capable of driving them by 250-400mA per channel, green is the one most difficult to feed with enough current. However, it seems there is minimal difference in brightness between 250mA and 350mA for any channel, so we will drive with reduced PWM now (and be prepared to increase it in case of too high resistance in wires etc.).     * We have decided on http://​www.gme.cz/​cz/​l-lxhl-hprgb-p511-558.html;​ we are capable of driving them by 250-400mA per channel, green is the one most difficult to feed with enough current. However, it seems there is minimal difference in brightness between 250mA and 350mA for any channel, so we will drive with reduced PWM now (and be prepared to increase it in case of too high resistance in wires etc.).
-  * [DONE] Try out various node construction designs, build all 23 node boxes 
-    * [DONE] First two prototypes of pixel nodes. Clubmate-based cardboard, with white spray / A4 sheets inside. We just need to change the connect cable to Cat5 + RJ45. 
-    * [DONE] Built the rest 
-  * [DONE] Get final amount of LEDs 
-    * [DONE] We have two test LEDs, plus one from TomSuch that may be the same kind 
-    * [DONE] All LEDs are bought, resistor values tuned. (2.7ohm for each channel) 
-    * [DONE] One of the pixels is broken, we need new LED for it (and reuse / rebuild casing) 
-  * [IN PROGRESS] Design and build the control circuit 
-    * [SCRAPED] We used TLC5940 and built all control boards too, but it was impossible to drive five TLC5940 using few meters of cable - too high signal distortion, also the circuits are very fragile. 
-    * [DONE] Arduino shield for TLC connectivity. 
-    * [DONE] Power distribution board, hooked up to strong 5V current source (ATX PSU). 
-    * [WIP] New TLC59116 boards. 
-      * Four boards built, one to go. 
-  * [DONE] Implement the control firmware for the microcontroller 
-    * [DONE] Autonomous LED control (Arduino-standalone without computer control) [[/​project/​ledbar/​sketch-autonomous]] 
-      * Can do rainbow rotation, random colorspace walk, white "​breathing"​ and constant white. 
-    * [DONE] Computer-driven animation, incoming data on serial port. 
-  * [TODO] We need to tune the pixel brightness and color profiles. 
-  * [TODO] Figure out how to solidly mount the pixels on the wall. 
-  * [IN PROGRESS] Write and continue improving the computer control software 
-    * [DONE] Basic control software: http://​github.com/​brmlab/​ledbar 
-    * [WIP] Network-based animation dispatcher. 
-      * [SCRAPED] brmlab@blinkenlight screen runs network -> arduino link, listening for 23*3 R,G,B byte sequences on UDP port 17740 
-      * brmlab@blinkenlight screen runs ledbar control software 
-      * Default: audio spectrogram of our main mixer speaker output; you can use alsamixer to switch it to microphone (brmlab ambient noise), but you will want to recalibrate the spectrogram to frequencies 100..2000. 
-      * TODO: Proper multiplexing of default animation and network traffic, perhaps also status-based and noise-level based? (Show sound spectrum in case music is playing.) 
-    * [TODO] Interface for creating animations. 
-    * [TODO] Web user interface for controlling animations. 
  
  
-===== Material Needed ​=====+=== Material Needed ===
  
   * (DONE) 24 RGB LEDs - 23 pixels, one spare. [[http://​www.gme.cz/​cz/​l-lxhl-hprgb-p511-558.html|L-LXHL-HPRGB]],​ 159CZK/​piece.   * (DONE) 24 RGB LEDs - 23 pixels, one spare. [[http://​www.gme.cz/​cz/​l-lxhl-hprgb-p511-558.html|L-LXHL-HPRGB]],​ 159CZK/​piece.
   * (DONE) LED holders - something sturdy and wide enough; we are cutting and gluing them from Club Mate boxes.   * (DONE) LED holders - something sturdy and wide enough; we are cutting and gluing them from Club Mate boxes.
-  * (IN PROGRESS) Wiring, transistors,​ resistors, etc.+  * (DONE) Wiring, transistors,​ resistors, etc.
   * (DONE) PWM drivers   * (DONE) PWM drivers
   * (DONE) Arduino hooked up to a PC that controls the animation   * (DONE) Arduino hooked up to a PC that controls the animation
Line 173: Line 210:
 LEDs to go: 0 LEDs to go: 0
  
-Sargon ​will donate ​brmduino + FTDI to replace current pasky'​s arduino to drive the circuit! +Sargon ​donated ​brmduino + FTDI.
- +
- +
-===== Further Expansions ===== +
- +
-Later, we can extend the display also to the storage room (extra 9-pixel +
-row, and half of the second row visible too). +
- +
-We might also try to split a single glass block to 2x2 pixel matrix. +
- +
-But let's start simple! +
- +
-===== References ===== +
- +
-  * http://​waitingforfriday.com/​index.php/​USB_RGB_LED_VU_Meter +
-  * http://​www.arduino.cc/​en/​Tutorial/​ShiftOut +
-  * [[http://​www.dealextreme.com/​details.dx/​sku.14965|Possible source of cheap RGB LEDs]] +
- +
-===== Historical Approaches =====+
  
 ==== Version 1 ==== ==== Version 1 ====
 
Except where otherwise noted, content on this wiki is licensed under the following license: CC Attribution-Noncommercial-Share Alike 3.0 Unported
Recent changes RSS feed Donate Powered by PHP Valid XHTML 1.0 Valid CSS Driven by DokuWiki