Music! The rhythm of life, the sound of hundreds of discrete frequencies coming together in synchronous harmony to create beautiful sound that puts us in a trance. But that is just feast for our ears. LED Wall adds a whole new dimension, a visual dimension to your musical experience.
LED wall consists of a huge music equalizer, two side woofers and an amplitude controlled bulb array. The whole assembly is controlled using a TLC5916 array controlled by a MSP430 which receives serial data from a python based music processing library known as Phosphene developed by us.
The LED wall along with some soulful upbeat music is a truly psychedelic experience that one must surely not miss. Here’s a video of LED wall in working to simply blow your mind.
Step 1: Gather the Components Required
for the structure:
- Wooden planks: For equalizer frame Cross section approx. 5 cm x 3 cm; Length 25 m
- Wooden planks: For woofer frame Cross section approx. 1 cm x 2 cm; Length 1 m
- Hardboard: For equalizer backdrop 12 feet x 8 feet (366 cm x 244 cm)
- Plywood: For bulb array base 3.5 feet x 3.5 feet (100 cm x 100 cm)
- Electrical casing: For woofer frame 5cm width; Length 1 m
- Electrical casing: For woofer frame 2.5 cm width; Length 80 cm
- Thermocol cylinder: For woofer’s inner layer Diameter approx 15cm, Height 15 cm
- Thermocol pieces: For discretisation of segments in equaliser 5cm x 50 cm, 30 pieces
- Butter paper: For diffusion of light A3 size, 40 pieces
- Black chart paper: For covering woofer A3 size, 4 pieces
- Nails: 1 inch
- L-clamps: 16 pieces
- Super glue
- Glue gun
- Long screws and bolts: 16 pieces to for bulb holders
- Driller and 4mm drill bit: To make holes on plywood and hardboard
- Power cutter: To cut hardboard, Plywood and planks
- Adhesive: To stick butter paper and chart paper
- RED LED Strips: 24 pieces each 20 cm approx.
- GREEN LED Strips: 24 pieces each 20 cm approx.
- BLUE LED Strips: 24 pieces each 20 cm approx
- Bulb Holders: For the bulb array 8 nos.
- Bulbs: 8 nos.
- Ribbon cable: 30 m approx.
- 8 pin connectors: 4 nos.
- 4 pin connectors: 4 nos.
- Soldering iron
- Insulation tape
- Texas Instruments’ MSP-EXP430G2 Launchpad: TI’s MSP430 series microcontroller emulation board with UART capability to send/ receive music processed data from the computer and send the necessary data to the TLC5916 LED drivers.
- MSP430G2553 IC: (20 pin DIP) microcontroller IC used on the Launchpad.
- TLC5916 IC: 6 nos. (16 pin DIP) The TLC5916 Constant-Current LED Sink drivers are designed to work alone or cascaded. Since each output is independently controlled, they can be programmed to be on or off by the user. The data can be sent serially and is converted to parallel data by the IC.
- MOC3021: Optocouplers with zero-crossing on the output side; 9 nos. To be used as a triac driver here. Provides electrical isolation from the output side (220V AC) to the input side (3.3V DC).
- BT136: Triacs; 9 nos. TRIAC, from Triode for Alternating Current, is a generic tradename for an electronic component that can conduct current in either direction when it is triggered (turned on). The optocoupler-Triac pair is used to make Solid State Relay circuits (SSR) which make sure that the current flows from MT2 to MT1 (from line to load) when current flows into the 1st pin of the optocoupler.
- 1kΩ resistor (1/4 W): 9+6 = 15 nos.
- 220Ω resistor (1/4 W): 9 nos.
- 100Ω resistor (1/4W): 9 nos.
- 16 pin IC bases: 6 nos.
- 7805 voltage regulator: 4 nos.
- Berg strips (Break-away male headers): 60
- General Purpose Boards (GPB/ Perforated boards): 2
- Single strand wires: 1 roll
- AC multi-strand wires: 1 metre
- Female-Female jumper wires: 20 nos.
- 12V 2A adapter: 1
- Code Composer Studio: Code Composer Studio is an integrated development environment (IDE) that supports TI's Microcontroller and Embedded Processors portfolio. This is for programming and debugging the MSP430.
- TeraTerm: Terminal emulator and SSH module for testing.
- Python 2.x
- numpy, scipy and pygame python packages
Step 2: The Structure
The LED wall was made in three parts: The equalizer, the woofers and the bulb array.
The equalizer was 350 cm by 250 cm totally divided into 6 parts vertically such that each of them can display the amplitude of 6 different frequency components of the music being played. The frame was wooden with a hardwood backdrop with LED strips stuck on them in different levels. It is then covered with butter paper, with holes drilled on hardboard to take out connection out from the back.
To make the structure:
- Nail wooden planks together as shown in the picture below.
- Nail the hardboard to the frame. Make horizontal partitions by sticking pieces of thermocol so that each individual level looks discrete and the light from one level does not diffuse into the next.
- Stick LED strips of 20 cm each in two rows each placed 5 centimeters apart. The end columns are red in colour, then blue and the middle columns are green. All pieces of strips in one segment are in parallel. The anode and cathode lead wires are connected to the strip. The negatives of the strips will later be connected to the output of TLC5916.
- Holes are drilled in each segment and the leads are taken out through the back. The wires are glued to the back using glue gun for sturdiness.
- All positive leads in a row are shorted; these leads are further shorted to get a single positive lead.
- All negative leads from each segment are individually taken out. The wires taken out are colour coded (The BBROY colour coded ribbon cables) to ensure easier debugging later.
- The leads are then connected to eight pin connectors and one four pin connector for the last four segments. This would ensure there are 36 connections to the equalizer.
- The output channels are numbered in such a way that the bottom most row of the far right column makes output 1, the top most row of the right most column makes 6, the bottom most row of the second far right column is output 7 and so on.
The woofers are basically to display the beats in music. The have 4 levels of LED strips stuck in concentric circles, with wooden planks for support, a plywood base and Plastic casing, later covered by a black chart paper and butter paper for diffusion.
To make the structure:
- The inside most layer is a themocol cylinder with Red LED strips stuck to the bottom in the shape of a circle. Another layer is stuck on top of the cylinder.
- The intermediate layer of blue LED is stuck on wooden columns mounting a plastic circle made using the electrical casing.
- The outer layer is a bigger version of the intermediate layer, but with green LEDs.
- The leads are taken out of the holes drilled plywood base. All positives are again shorted and negatives are connected to four pin connectors.
- The sides are covered by chart paper and the top face is covered with butter paper.
The bulb array is for amplitude detection.
To make the structure:
- Screw bulb holders onto 100 cm x 100 cm plywood in the shape of a circle.
- All the neutral wires of the load are shorted and the live wires are taken out through holes drilled on the plywood to the back.
- The neutral wires are connected to the neutral of the line.
Step 3: Hardware and Control
How to send data to TLC5916:
The board and circuit are as shown above.
- The MSB of the data is sent first.
- The SIN pin is set high or low depending on the MSB of the data.
- The SCLK pin is pulsed (Sent high and sent low).
- The data is then shifted left once such that the second most significant bit becomes the MSB.
- Once all bits are transferred, the LATCH pin is pulsed once to send the data from the hold register to the output register.
- The output is then displayed when the Output Enable pin (Active low pin) is set to 0 on the pins O0 to O7.
- An external resistor is connected between R_EXT pin and GND to set the current in the output channel.
- To cascade two TLCs, the SDO pin of the first TLC is connected to the SIN pin of the next TLC with the SCLK, LATCH and OE’ pins of both shorted.
Control the bulb array:
To control the bulb array, a solid state relay (SSR) circuit is used using an optocoupler- triac pair. The board and circuit are as shown above.
- Solder nine of the SSR circuits as shown on a board where all MT2s are shorted and taken out (a pink wire). Each of the MT2s is taken out separately (orange wires).
- In the input side, all the resistors connected together and taken out as a single lead. All terminal 2 i.e. ground of the Optocoupler are taken out separately such that chaneel 1 and 5, 2 and 6, 3 and 7, 4 and 8 are shorted together to give 4 channels as the number of outputs that is connected to 4 pin connectors.
To control the total assembly where each segment/ layer is controlled individually (36 from equaliser + 4 from Woofers + 4 from bulb array = 44), we use six TLC5916 which are 8 channel constant current sink serial to parallel LED drivers that can be cascaded.
- Make the circuit as shown in the figure. The TLCs are cascaded such that the Serial Data output of one is connected to the Serial Input of the next.
- All clocks and all latches are shorted. The Output enable pin is always grounded. The external current limiting resistor is 1kΩ.
- The data to the TLC is sent by the MSP430 on the Launchpad.
- The MSP receives data through UART from the computer.
Integrating all parts:
- All outputs of the LED equaliser are connected to the first 36 channels of the TLC5916 output channels (The channels are named 1-48 starting from the TLC which receives data from the PC).
- The bulb array is then connected to the next 4 output channels of the TLC.
- The leads from the two woofers are connected to the last 8 output channels of the TLC in series.
- The P1.7 of MSP430 is connected to the SIN pin of the TLC array board.
- The P1.4 of MSP430 is connected to the SCLK pin of TLC array board.
- The P1.5 of MSP430 is connected to the LATCH pin of the TLC array board.
- The ground of the Launchpad and the ground of the TLC array board are shorted.
- The TLC board is powered by 12 V supply.
- All positive leads of the LED strips are shorted together and connected to 12V supply.
- All free ends of the 220Ω resistor connected to the Pin 1 of Optocoupler are shorted on the board and taken out as a single pin. This pin is connected to the header provided at the output end of the 7805 on the TLC array board.
- Similarly, all MT2s of the triacs are shorted on the board and the single resultant lead is connected to the live wire of the line.
- The other wires from the individual bulbs are connected in order to the MT1 of each individual triac.
- The MSP430 Launchpad is connected to the PC through the USB cable and is powered by the PC.
Step 4: Software
The firmware was written in Embedded C and then programmed on to the MSP430 using the Launchpad emulator by Code Composer studio.
The data to the Microcontroller array is sent serially as a block of 8 bytes by the PC. The start byte is when a character 'S', followed by 6 bytes of music processed data and an end byte 'K'.
The code found in basically receives 6 bytes of music-processed data from the PC through the UART pins and sends that data serially bit by bit to the TLC5916 array.
A python library was developed by us for music processing called Phosphene. It is modeled on the Elm Signal Library. With Phosphene, you can define signals whose values change based on the current sample.
For the LED Wall, a 6 channel average divided by the longer average is used for the equalizer. For the woofers and bulbs, a decaying beat signal is used which becomes 1 on detecting beat and decays until next beat.
The whole source code of phosphene can be found at www.github.com/rohitvarkey/phosphene. The script specific to the LED Wall can be found attached here.
Step 5: Gallery
The LED Wall project is an awesome way to truly experience music, where all your senses are synched to the rhythm, where your eyes detect the beats and your ears therefore anticipate them; where you not just listen but experience music. If this short video below can mesmerise you, imagine what the real deal would do when you make it.