Newbie "art project" questions (6x4 array - 24 led strips)

Hi all!

I am dreaming of making an art project to install to a place where I love and visit frequently. I am a DJ and I usually play there whole summer.

I recently discovered Pixelblaze and amazed by it and all the projects done with it. I really respect all the coders and engineers who are doing amazing stuff.

After reading the forums I understand that my dream seems possible with some good programming skills which I seriously lack of :slight_smile:

I am good at hardware (soldering and other stuff) and woodwork.

The place I am going to install this project is in nature with 24 huge palm trees in 6 by 4 array as shown in the picture.

Space between each tree is around 7-8 meters. So the whole area is around 40 meters by 22 meters.

There is a DJ booth as marked in the picture.

I am planning to buy 24 meters of APA102 LED strips (30/m) and install 1 meter of LED strip to each tree with a wooden ring that I am going to design. I can give more info about the wooden ring design if needed…

What I want is to illuminate each tree with some nice effects while all 24 individual LED strip can do some combined effects like colors waving from one tree to the next one horizontally - vertically or in different patterns. (Many more effect/pattern ideas on my head that I can try to explain after getting some more info about below questions)

My questions are:

  1. Is Pixelblaze the right device to do this project?
  2. What kind of hardware configuration / connection do I need?
  3. What kind of network do I need? CAT6 cable between each tree or Wi-Fi?
  4. And most importantly can someone help me to design this project and help me with the coding according to the effects that I am dreaming to achieve ? (I will need more than a help for the coding part :slight_smile: )

Cheers,

Aytek

HI Aytek! Welcome to the forums!

The rings idea sounds pretty cool. I was reminded of the show Devs:

With 1m of APA102 per tree, just remember that a ring can be 0.32m wide - Maybe all the trees are thinner than that.

Given the patterns you described, the code is probably approachable for quite a few people here; that’s not where my big open questions lie.

I think my big questions would be power distribution and cost. In this design you need to get 43A max (@5V) out across a minimum of 23 m of cabling.

[Edit: I was wrong, 24 Pixelblaze should be fine! See Ben’s reply below] I’m guessing putting one Pixelblaze at each tree and controlling it over firestorm is stressing most 2.4GHz spectrum too much (let alone wifi from partygoer devices). Ben might be able to speak to the most crowded WiFi environment he’s seen them work in.

Therefore I’m thinking of solutions that balance WiFi, redundancy (a broken data line doesn’t bring down the entire thing), and the efficiency of distributing power at higher voltages and then converting to 5V at the last moment. Otherwise large 5V distribution projects get expensive due to the amount of copper involved. Even just wiring a column of 4 trees to distribute 5V, and allowing 10% voltage drop, calculators suggest using 8AWG CCA wire; It’s ~$85 for 24m (one column) and still heavy.

One option: run wall power to each tree, down each column (please be careful that these would never snap and fall on people). Use six Pixelblaze, one at each tree of the top row, nearest the booth. Each LED strip around a tree can be run from a cheap wall-to-USB power adapter (2A). I’d have to do some math, but I think perhaps connecting the trees with cheaper 16GA 3-conductor jacketed wire down each column of trees might work to prevent voltage drop; You run Gnd, Clk, and Data along these, whereas each tree’s strip gets Gnd and 5V from the USB power adapters (tie Gnd together from the power and data distributions). I think each pixel’s data out will restore back up to 5V, so you’re only worried about the voltage drop between trees.

PoE (50V/350mA) with last mile conversion to 5V ($20 per tree) is also an option; I subjectively feel safer with 50V overhead instead of 230V. Also, it might be a one-cable solution, as I’m guessing that with the twisted pair in PoE you can distribute Gnd/Clk/Data in the same cable as the power at these data rates just fine.

With just 180 pixels per PixelBlaze in this per-column design, you’d also get great frame rates.

@wizard any other thoughts?

Hi @aytek,
You could do some cool stuff! OK so there’s a lot of options here.

The first that comes to mind is using a PB per tree, and networking them together with Firestorm running on a Raspberry Pi or laptop. This way your wiring is simplified to just power. Firestorm can synchronize the timers used for animations, and let you switch patterns simultaneously. It would also let you build out each tree as an independent and identical unit. So more or less, out of the box, all the trees would be doing the same thing and synchronized. You’d need a bit of work for effects that wave from tree to tree, but we can help with that!

Continuing where @jeff left off, for power I’d recommend using 12-24V for power, and small buck converters for each tree. This will let you use much smaller power distribution lines, a safer voltage, and you won’t have to worry about wire length and voltage drop. You are only driving 30 LEDs and a PB, so power requirements per tree are small ~0.7A to ~2.5A @5V, which would draw perhaps 4-15W of power (assuming some power conversion loss), so at 24V only 0.17A to 0.625A draw. Something like these work great for those kinds of small draws:

10 pack of 5A buck converters for $18

You’ll want a real WiFi access point (I don’t think a Pi in soft-AP mode would cut it), and often a cheap one will work just fine. If the distance to the far edges does cause problems it’s easy to extend a wifi network with off the shelf repeaters. 24 PB on a network should be just fine. They use very little bandwidth with Firestorm, especially compared to anything that would be sending pixel data. It will only be sending 48 packets a second for animation synchronization, and a small burst when patterns are switched.

1 Like

How would you accomplish this?
thinking as I type here, I think you could have each pb to store a copy of the forest map (including all 24 pixelblazes) and then customize the forest map for each tree, to filter out the other 23 trees.
so each pattern on each pb/tree actually calculates the display for the entire forest, and then filters out 95% of the data? Is there a better way of doing this like does firestorm have some global map I don’t know about?

Anyways this sounds like a really interesting project! I’d love to help out, just wish I had 24 pixelblazes lying around

Guys I got more excited as I get your fast feedbacks and what you have written in detail.

@jeff you read my mind with the photo from DEVS series, what I though was very very similar to that one. Once I finish the basic design I will share it. With your words about code support I feel relieved.
You ara definitely right about the diameter of the ring, I will need more than 1 meter per tree, I think 2 meters will be enough. I will measure it once I get there this weekend.

Regarding the power distribution Ben’s idea seems more practical as you said. Actually I was thinking to distribute the power via POE but instead of using a poe splitter for each tree that costs 20 bucks, I was planning to use just one 24 Port POE switch T1600G and connect all PB to that one via twisted pair. On the other hand, we already have IP rated AC plugs on most of the trees for running some gardening tools so the energy part was never a problem in my head. So I will need to decide whether to go with POE, AC on each tree, 24V DC cabling or POE… :face_with_monocle:

Regarding the wi-fi part, I have a spare outdoor access point EAP225Outdoor which I can dedicate for this project.

And @wizard as you said we have several options, my first concern is how to make it more simple in terms of coding and efficient in terms of cost. Would it be easier to operate with 24 PB units or use 6 PB units, one at each tree of the top row and do some cabling as @jeff suggested?

AC or DC or CAT cabling would not be an issue, additionally I will have a solid outdoor wi-fi access point. So the final decision will be made according to the next suggestion coming from you guys :palm_tree: :palm_tree: :palm_tree:

PS: Once I figure out the total cost, and if it comes too high that I can cover, there is always a chance to turn the project to 4x3 array or even 4x2 but not 4x1 :slight_smile:

Given that Ben said that WiFi congestion isn’t an issue, and given that you have lots of power options on the trees, I would start to really value physical connection reliability and my time. If you can create one “module” that’s just like all the others, that’s a huge win because you make 24 + X spares all at once. Avoiding suspended/buried/up-trunk signal runs is a huge win, and might be cheaper in the long term when you account for wear/weather. Also, you avoid a situation where one fault disables all downstream trees.

@Sunandmooncouture There’s no global mapper in Firestorm yet, but my thoughts for synchronized trees would be that you put identical code on all boards. You could use identical per-board pixel maps but the overall coordination of effects I’m thinking of wouldn’t involve the mapper. I’d code the patterns to accept an X and Y position for that board’s position in the array of trees. If you exported variables for these X and Y positions, you could assign them from Firestorm via websockets. It would continue the theme of swappable, identical physical modules and code. A wave across an axis is a pattern that sets up its starting trigger (or t1 phase shifts) on a progressive delay based on its position.

One option could be to fork Firestorm and auto-assign the X and Y position variables based on a a naming scheme from the Pixelblaze Settings -> Name field. “Palm-5,2” or something. Another would be static DHCP allocation and then adding a configuration that maps IPs to positions in Firestorm.

I bet there are other schemes too. I don’t have a ton of experience with Firestorm or Node, to be honest. But if you know a little web or JS, it seems pretty approachable.

The data signals used for LEDs is usually pretty fast, and has limits on total transmission distance. You can slow down clocked LEDs like the APA102 to make them more reliable over longer distances, but then you are slowing down your frame rate, especially if you are also adding more LEDs to control at the same time. There are long range transceivers that can be used, but that adds cost and complexity and more wiring. So I think one PB per tree will be simpler, though that means you have 24 PBs instead of 4.

From a pattern/software perspective, I’d pixel map the rings identically. The pixel map implementation doesn’t have the resolution to encompass the entire forest (though it could work for smaller installations). Then, like @jeff recommends an X and Y offset can be combined with the local x, y from the pixel map…

I plan to add some tools to help this that will be very similar. The local pixel map will still normalize everything to “world units”, which will then get scaled and offset. This can make them effectively cover a small higher-resolution part of the global coordinate space (or even scale outside of the 0-1 range, though pattern compatibility would be best within that range). This would be totally compatible with the existing render APIs.

The Firestorm and exported var hack @jeff mentions would let you do something pretty similar with only small code changes to patterns.

As an alternative, you could put the local offsets into the patterns, but then you have 24x slightly different patterns to maintain. I think Jeff’s approach is slicker.

Thank you guys, I will go with one PB per tree but I decided to start with 12 trees.

Now I am trying to find a way to lower the shipping cost for me (which seems very high at the moment).
I will try to get it delivered to me via a friend who can visit my country from Canada in near future. Until that time I will need to wait and focus on designing and producing the LED rings of trees.