LED Matrix Cylinder

14,537

163

28

This LED matrix uses standard WS2812b LED stripes to build a matrix with a cylindric shape and a nice wooden veneer finish.

Partlist:

  1. 790x384 cardboard 1.5 mm (other sizes are also possible, but CAD data has to be changed)
  2. 100 WS2812b LED from LED-stripes (30 LED/meter)
  3. Raspberry Pi or Arduino
  4. Microwood veneer or any type of flexible diffusion material
  5. Wires

Step 1: Design and Laser Cutting File

Main design parameter is the thickness of the used material. In this build, a 1.5 mm cardboard was used because it is easy to cut and quite cheap. 3D design (e.g. Fusion360) helps to avoid problems in the assembling process. For laser cutting, parts have to be arranged in a way that they fit to the laser cutting area of your machine, in this case 790x384 mm. Inkscape is a simple and powerful tool to handle this job. Attached SVG file contains all parts for the cylindric display with 1.5 mm material.

Step 2: Laser-cutting and Preassemble

After laser cutting, you will get the following parts:

- 12 C-shape horizontal segments

- 18 comb like vertical segments

- 2 vertical connection segments

- 20 led carrier segments

8 C-Shapes, 9 combs and 1 connection are combined to a display half. In this step, parts are only plugged together to check if all fits well. Don't use glue yet.

Step 3: Wiring of LEDs

LED stripes are cut in 5 LED segments and glued to the carrier segments with the backside adhesive tape. First the DI (data in) and DO (data out) pins of the stripes are wired together in a zig-zag manner, connecting DO of the first stripe with DI of the next stripe and so on. This is done for each half of the cylinder including 10 stripes. 5V and GND are connected only at one side from strip to strip. Length of the wires should be matching the strip distance of the array.

Before the LEDs are installed into the matrix, the segments of the matrix have to be glued together for each half of the cylinder.

Finally the 10 stripes are placed in each half of the matrix and fixated with hot glue. DO from one half is connected to DI of the second half. DI of the first half will be the input for the Raspberry Pi or Arduino.

Step 4: First Test

To ensure that everything works, a first test of the LEDs should be made. Using an Arduino and the Neopixel library should be the easiest way to do this.

Step 5: Wooden Veneer Diffusor

After measuring the diameter and hight of the matrix, the wooden veneer could be cut out and rolled around the matrix. For fixation, a transparent glue strip is sufficient.

Step 6: Raspberry Pi, Arduino and Power Supply

For easy coding in Python of nice matrix effects, a Raspberry Pi could be used. In this case, a Raspberry Pi Zero was used, which is connected to the matrix via GPIO pin 18 via a 74HCT245 level shifter to adapt the 3.3V from the Pi to the 5V of the WS2812. Also a large capacitor (2200 uF) and a series resistor (470 Ohm) are used like suggested when using larger Neopixel/WS2812 LED counts.

Power Supply

Maximum power for 100 WS2812b LEDs is 100x60mA = 6A. Of course, by reducing brightness, the power consumption could be reduces drastically. Please ensure, that your 5V power supply is able to drive the current for your desired brightness.

Arduino

This matrix directly works on Arduino devices with the NeoPixel and NeoMatrix library from Adafruit. You have to change the PIN and initialization if you want to use the examples:

Neomatrix:

Adafruit_NeoMatrix matrix = Adafruit_NeoMatrix(20, 5, PIN,NEO_MATRIX_TOP + NEO_MATRIX_LEFT + NEO_MATRIX_COLUMNS + NEO_MATRIX_ZIGZAG, NEO_GRB + NEO_KHZ800);

You also have to include Adafruit GFX library and load a different font with a height of 5 pixel. Please use the attached Arduino sketch as a starting point (uses PIN 4 for the matrix). It is an adapted version of the Neomatrix example sketch.

NeoPixel:

Adafruit_NeoPixel strip = Adafruit_NeoPixel(100, PIN, NEO_GRB + NEO_KHZ800);

Step 7: Simulation

Python source-code is available at Github

There are two modes for coding. If PI=False defined at the beginning of the cylinder.py, code is in the simulation mode. You can test all animations on any platform which is able to run python. Please install first all libraries which are used by the program (like pygame, numpy, etc.). In simulation mode, the cylinder is displayed as a 5x20 pixel matrix.

Step 8: Programming

The second software mode is PI=True (defined in cylinder.py) and started on the Pi. This drives the GPIO pin 18 of the Raspberry Pi. You are free to add additional effects and play around with the parameters.

Text is displayed with a 3x5 font, so not all letters are perfect due to the limited display height.

Enjoy!

Epilog X Contest

This is an entry in the
Epilog X Contest

Share

    Recommendations

    • Pocket Sized Contest

      Pocket Sized Contest
    • Pie Contest

      Pie Contest
    • Build a Tool Contest

      Build a Tool Contest

    28 Discussions

    0
    None
    germanf3

    3 days ago

    hi maketvee, its posible to have the fusion file for the frame? i am thinking in 3D printing the frame and also maybe editing it to enclose independent Ws2812b. great work!

    Kind regards

    1 reply
    0
    None
    maketveegermanf3

    Reply 7 hours ago

    Hi germanf3,
    as far as I know, sharing in fusion360 only works by publishing a link to the cloud file. I have to cleanup the model a bit before making it public. Should be available soon.

    0
    None
    Maker Design Lab

    11 days ago

    This is a great project! Motivates me to finally start learning electronics. Could the programming also be done on an Arduino?

    3 replies
    0
    None
    AnnetteH38

    11 days ago on Step 8

    Fabulous...can U purchase this as a working unit, if a person is unable to assemble? Eg present for teenager?

    1 reply
    0
    None
    maketveeAnnetteH38

    Reply 6 days ago

    I am sorry, it is just a private project for fun. Maybe you can contact a local fablab to help you with this.

    0
    None
    Didao

    10 days ago

    Very nice project ! I'm going to do it...
    Could you please share more on wiring ? (capacitor, resistor etc...)
    A schematic would be welcome ;)

    3 replies
    0
    None
    maketveeDidao

    Reply 9 days ago

    Yes, I will add this on the weekend.

    0
    None
    Iceflow

    10 days ago

    Very nice instructable!! can you share some more info about the 74, cap and resistor? maybe some schematic? maybe you could share also some ready made arduino sketches for people that dont know coding... :P maybe some in python also :)

    2 replies
    0
    None
    maketveeIceflow

    Reply 6 days ago

    I have now uploaded an example sketch (step 6). If you use a 5V Arduino, you do not need the 74HCT245, only a 470 Ohm resistor between the Arduino Pin and the LED strip DIN.
    Python code is on Github, you will find the link in step 7.

    0
    None
    maketveeIceflow

    Reply 9 days ago

    Yes, I will add this on the weekend.

    0
    None
    snorlaxprime

    8 days ago

    Good display of LED matrix

    0
    None
    MarekP29

    Tip 9 days ago on Step 8

    For my ws2812 3-wire strip projects I found the 1.27mm flat ribbon cable to work best to interconnect the strip segments. Like the one 7sed for PC disk drives and IDC connectors.The raster makes it easy to couple neighbor wires to make a 2-wire power and signal lines (6 wires wide ribbon per strip). That cable allows for gr8 flexibility and easy wires hiding. Cheers. Marek.

    0
    None
    grace_samuel

    Question 11 days ago on Step 1

    Thank you for sharing your project here. It is very nice and I would like to build one at home. How or where can I print this laser cutting parts? Thanks.

    2 answers
    0
    None
    maketveegrace_samuel

    Answer 10 days ago

    Maybe you can ask a Fablab with a laser cutting machine nearby. Also there are different online shops for laser cutting, what country are you from?