Addressable LED curtains have become prevalent over the past year or two.
Some use custom two-wire protocols, and some use standard WS281x protocols and can be controlled with WLED. Almost all of them use a sparse 10cm spacing between lights and come in fixed 1m x 1x, 2m x 2m or 3m x 3m sizes. They typically have sub-controllers at each drop that strips off a fixed number of bytes to pass down the strand and passes the remaining data to the next sub-controller.
NotEnoughLights and I worked with Chinese manufacturer KnowShine to develop seed pixel lights that have a built-in data return wire and a system to easily assemble them into custom sized curtains, circles (spokes), semi-circles or tree shaped cones.
Each strand is assembled by attaching an RJ9 4P4C connector (4 position, 4 contact) to the top and soldering the data and data return lines together at the bottom.
The strands are plugged in to female 4P4C connectors attached to a spine of either straight or curved PCBs. And KnowShine is giving us a phenomenal price. You can get the lights for a massive 44x44 matrix for under $100 shipped.
I will be using 5cm pitch lights here. But KnowShine can build data return lights from 10cm to 2.5cm.
I developed the Modular Matrix system to make it easier to build custom matrixes
without the pain that comes with splicing numerous power injections into very short, very thin wires. It is still going to take several hours to build a large matrix. But it will take significantly less time than building a serpentine matrix. And the end result is cleaner, and easier to transport and store. Lets get building!
Tools:
RJ11 Crimper with 4P4C
Small guage wire stripper - Your 20AWG strippers will not work well on 24AWG or 26AWG wire.
Soldering iron and hot air gun
X-acto knife or small razor blade
Hot glue gun (optional)
Router table or table saw (optional)
Materials:
Seed pixels 5cm pitch with data return ~$96/2000 LED
PCB “Curtain Rod” 25cm spine or “BeSpoke Hub” (semi-circle) - Will be available at KnowShine’s store soon.
RJ9 4P4C female 10pcs - $2
RJ9 4P4C male 100pcs - $3
14mm & 2mm heat shrink 5m - $2
M2.5 x 8mm button head screws
1x2" select pine board
Optional:
Steel Beads 8mm 3mm hole 50pcs - $4
Suction Cups with Holes 100pcs - $8
Step 1 - Prepare the frame
I cut a 1" x 2" pine board to length and used a 5/8" router bit to make a 3/8" deep notch
down the center of the board. If you do not have a router table, you can use a table saw. If you don’t have a router table or a table saw, you can use a 5/8" aluminum C-channel. If you go with the aluminum channel, you will need to take precautions to ensure the pins sticking up from the back side of the PCB do not make contact with the aluminum and short out. I would probably cut the pins close to the PCB and cover the bottom of the channel with foam.
Solder the female connectors to the PCB and solder the PCBs together. The “Curtain Rod” PCBs are 25cm long with 5x 5cm pitch connectors. I will be using 7, for a total of 35 strands. You can either mount the PCBs to the frame and then solder them together using a short (1/4") section of wire, or use a longer (2") piece of wire between each board to give it flexibility needed to maneuver them into the frame. I like the solder then mount approach because it makes it easier to disassemble if you need to make repairs or adjustments. I used 22AWG solid core wire. Once all pads are soldered, bend the wire away from the edge, then wrap the board and wire with 14mm to 16mm heat shrink tubing to protect the wires. After the PCBs are mounted in the frame, flatten the wires so they don’t interfere with the jacks.
To maximize refresh rates, you want to keep the number of pixels on a single data line to under 800 pixels (ideally under 600). The rods have a second data line to facilitate sending data to the second half of your matrix. If you have more than 1200-1600 pixels, you will need to run additional wires. You can swap from data line 1 to data line 2 at any node, but it is easier to swap between PCBs. If you want to swap mid board, you will need to cut the trace before the DI pad (on the back of the board) and connect the D2 pad to the DI pad.
The 22AWG wire between boards will not carry many amps. I powered the curtain with an 18AWG wire attached to several points along the length of the curtain.
Step 2 - Preparing the lights
Count the number of pixels in each strand and mark the length on the edge of your workspace. Cut about 1/2" of wire below the last pixel, about the length of the epoxy bead. You want all of the rows to be even, so trim the start of your first strand so it matches the length of the first pixel on the second strand. It may be tempting to maximize the line at the top of each strand and cut the bottoms very short. But leave yourself room to work and room to attach a weight or suction cup.
With an X-acto knife, carefully make 1/2" cuts to separate the wires on the top and bottom of the strand. Slide the top into the RJ9 male connector. Holding the contacts up and the catch down, the gold 5V wire will be on the left. Examine the crystal head to ensure all wires are fully inserted, then crimp it down.
On the bottom of the strand, fold the power and ground lines out of your way. Strip the tips of the data and data return wires. Twist and solder them together, then apply heat shrink tubing. Depending on your application, use hot glue to attach a steel bead or a suction cup to the bottom of the strand. Repeat for as many strands as you need.
Testing
Connect power and a controller, and set it to an animation where all lights are lit and the colors are regularly changing. Plug the strand into the first port to test that it lights up. Then move it over to the second port so you can test that subsequent strands both light up and pass the data to the next strand. Only connect two strands at a time when you are testing. If you’ve got a short, you don’t want it to kill a large number of lights. Once you have tested all of the strands, you can mount the frame and assemble.
Configuration
In LED Preferences, set the color order is GRB. If you want to use Automatic Brightness Limiter, select “Custom” and set to 10mA. If you are using a single data line, 2D setup is really easy. If you are using multiple data lines, setup is still pretty easy but you must be precise on the number of pixels for each line. As long as you have the data pins in the correct order with the correct number of pins, you can set it up as a single panel in 2D settings.
Enjoy!
Update 12/17/2023 KnowShine is updating their wire order. The new order is going to be ground, data, power, return (ground and power have been swapped). They will match the structure of Ray Wu’s data return lights. If you get the new style lights and have the old PCBs, it will be easiest to attach the lights to the PCBs as normal and swap power and ground pins when you are powering the PCB.