LED signs and displays are fairly common place, from advertising products or services to keeping people entertained they can be a very useful tool. Having recently written a Flowcode component library around some of the new intelligent RGB LEDs I felt I needed to make something to test out the new functionality. To my surprise the display came together so quickly I thought I would share it with you all.
Step 1: Materials Required
Here are the materials I used to build my display.
- 2 x Acrylic Sheets 3mm (Large enough for the Front and Back of the display)
- 1 x Milky White WH10 Acrylic Sheets 3mm (Large enough for the Front of the display)
- 10 x WS2812B LED Strips x 51 LEDs (16mm Pitch)
- 2 x Thick high current wire (Red and Black)
- 1 x Thinner signal wire (Not Red or Black)
- ECIO40P16 Micro-controller board (An Arduino would also work)
- 12 x M5 bolts (25mm Thread, Button Head)
- 36 x M5 nuts
- DC Power Supply (Ideally 5V @ 20Amps) I used the 5V output of an old PC power supply
Here are the tools I used to build my display
- Laser Cutter
- Glue Gun
- Side Cutters
- Flowcode 7 - 30 Day Trial or IO Component Pack
Step 2: CAD Drawings and Laser Cutting
I began by drawing up the CAD for the plastic in 2D using SketchUp.
I drew up a panel the size of the display and added slots for the LED strips to be attached. I spaced the slots 16mm apart to maintain the 16mm pitch of the LEDs on the strip so that the LEDs are equidistant horizontally and vertically. I then added holes around the edge of the panel to attach the front panel to the back panel.
The back panel is a copy of the front panel with the LED slits removed and extra screw hanging holes inserted to allow us to mount the display on a wall.
The diffuser panel is a copy of the back panel with the screw holes removed.
I also created three spacer pieces which help to strengthen the LED strips and keep them in place.
I then took the SketchUp drawings and exported as a .DXF file which my laser cutter can accept and laser cut out the parts from the 3mm Acrylic.
During the lasering I noticed that the slotted piece was warping up off the knife edge laser bed. The slots in the piece are quite close together and long so it could be some kind of heat building up in the thin remaining section causing the warping. To get a good cut I had to keep pausing the machine to re-stick down the sheet with masking tape when the warping started to happen.
Step 3: Assembling the Display
I began by cutting my LED strips to size. I then soldered the thick power cables to each of the strips alternating the side of the strip I fixed the cable to. This allows all the power cables to be down a single side of the display when the LED strips are placed in an alternating pattern.
Once all the power cables were attached I began by adding thin wires to act as the data wire to the start and end of the first strip. Once this was done I laid the strip face down on the piece of plastic with slots and used my glue gun to fix the strip in place at several key points.
I then cut to size the data wire from the end of the first strip and soldered it to the start of the second strip before gluing the second strip in place.
I repeated this process for all ten LED strips.
Once all the strips were in place I cut all the power wires to length and connected them all together by twisting together the wire, soldering and then covering with a piece of heat shrink tubing. Before adding the heat shrink I added two extra wires to each of the power rail wires, one long wire to go to the power supply and a shorter low current wire to go to our controller board.
With all the wires neatened up I added some cable ties to hold everything in place.
Step 4: Adding the Controller
I cut all the legs off the ECIO40P16 controller to make it a bit less deep and then glued the board to the back of the LEDs so that it was firmly held in place and so that the USB connector was just missing the rear plastic.
I then soldered the power supply rails to the VDD IN and Ground Pins and soldered the data wire from the first LED strip to the B0 I/O pin.
I drilled a hole for the reset/program push switch on the ECIO and large enough for my finger as I had forgotten to add this to the laser cut CAD files.
With the controller fitted I decided to add my support pieces and glue them in place as well as making sure the LED strips were all well glued down with no gaps and well supported.
Step 5: Testing and Firmware
Before I fitted the back panel it was time to power everything up and make sure everything is working as expected. Using Flowcode 7 I created a quick test program to switch all LED's on in Red, Green and Blue in sequence to test if all the individual colour channels in the LEDs are working. I then create a white outline and a cross cross of green and red to test the addressing and 2D draw modes are working as expected.
Everything seems to be working well, note the display is a bit hard to see clearly without the diffuser sheet in place.
Step 6: Adding the Back Piece
After popping in all 12 of the bolts from the front through the diffuser sheet and the slitted spacer sheet I added a nut onto each bolt to keep the two plastic sheets firmly together. This nut was glued down to keep it secure against the plastic.
I then added a second nut onto each bolt and threaded it down so there was about 6mm of thread showing above the nut. The back panel then went on checking for the correct orientation (which way up does it need to hang? which side should the wires be on? Where is the ECIO program/reset hole?). The final 12 nuts then go on to hold the back plastic piece on.
With the back fitted the whole display now feels pretty strong and solid. The build is complete, now for the firmware.
Step 7: The Firmware
Again using Flowcode 7 I quickly created some simple animations and used the bitmap drawer component to store bitmap images into the microcontroller's ROM ready to be drawn to the LEDs.
Having the ability to simulate the display before downloading to the hardware was a big advantage to getting some nice animations going quickly.
Some animations I though up were fire, rain with lightning and by downloading some pixel art I could also show some well known sprites.