Building the Hardware of our LED art installation for Festival X (JSConf.EU and CSSConf EU)
Tags: azure, serverless, javascript, tutorial
Published: 2019-05-29 07:32:06

---
title: Building the Hardware of our LED art installation for Festival X (JSConf.EU and CSSConf EU)
published: true
description: This blog post is a contribution to the JSConf.EU LED Art Project blog post series by Bryan Hughes. It covers mostly crafting of the physical LED art installation and little to nothing on the [software side](https://dev.to/azure/building-an-interactive-led-art-piece-for-jsconf-eu-3gdj). If you enjoy cutting and sanding wood, soldering and finding out, how you improvise during building, you may like this.
series: Creating an Azure-Powered LED Art Piece
tags: azure, serverless, javascript, tutorial
---

#A Bit Of Background

I’m Program Manager in [Cloud Advocacy/DevRel @ Microsoft](https://developer.microsoft.com/advocates/index.html?WT.mc_id=devto-blog-jansche) in Germany. I’m totally in love with the Tech community, and always on the lookout for community organised conferences we can support. No wonder my path has crossed the JavaScript community more than once, and I always wanted to make Microsoft a relevant part of [JSConf.EU](http://jsconf.eu), from my point of view the most important JavaScript conference and one of the most inclusive events I’ve ever seen. I knew that Microsoft had sponsored the conference in the past. But, well, there are many different flavors of sponsoring. I wanted one that touched people. One that felt authentic. One that gave value to the conference and its attendees, not a brand. So we (Cloud Advocacy) started early to submit to the CfP, got in contact with the sponsoring team of JSConf.EU and connected internally to bring the right people together on the same (virtual) table. And somehow it seemed to work out.

#The Spark

During an early January planning call for Microsoft’s participation in the Berlin-resident conference, my colleague Bryan Hughes ([@nebrius](http://twitter.com/nebrius), Cloud Advocate in Microsoft’s Developer Relations) came up with the idea to build a digital art piece for the booth. Something with an API that people could program against, and design and show their own animations. I fell in love with the idea, not only because this meant we wouldn't have a sad marketing roll-up display that nobody would care about. Instead we wanted a custom technical piece that would match with the playfulness and spirit of discovery of developers. Bryan was talking about LEDs on a wood sheet, a thing that’s approximately the size of a flat screen TV, and how he could provide both, the actual hardware as well as the logic running the thing. Being a Program Manager, my job is mostly to organize, create strategies, plan and execute. And still I’m a hands-on type of person, with a techie background. Which explains why I offered Bryan – without knowing any details -  to build a clone of his LED installation here in Europe, so we had a backup when his thing got broken during travelling to Berlin, got stuck in customs or any other misfortune that is unlikely to happen but, according to Murphy's Law, still happens. I remember him being a bit hesitant. We hadn’t yet met in person and had no former collaboration, so I would probably have reacted in the same way when a stranger offered me to clone my artwork. But Bryan gave me an advance credit (thanks, Bryan!) and it turned out to be a very fruitful collaboration, with many opportunities to learn from each other on both sides.

When I received the design doc from Bryan in March, I was quite surprised to not find the basic shape and size of a screen, nor did it mount to a wall. I was prepared to drill a thousand holes into a wood sheet and stick and solder LEDs into them from the back side. But what it turned out to be was an ingenious piece that tickled my mind even more: A base made of wood sheets that held 5 tubes of different lengths (24-50cm visible) in a circular arrangement. 

![](https://thepracticaldev.s3.amazonaws.com/i/lr39ph9lxf2gybiz250e.png)

What needs to be mentioned here is that I very much enjoy working with wood. It’s a fantastic material that is totally underrated these days. Give me a block of massive wood and a few tools, and you got me busy for the next days. I was more than happy to find out that Bryan preferred wood over plastic and metal as well.

#A Preliminary (and somewhat weird) Shopping List

The incomplete shopping list for the project:
(Note: I tried hard to find specific links without suggesting a certain marketplace and provide non-biased information. And I failed. At least these are non-affiliate links.)

This is what I got from Bryan:

| Item | Amount | Description |
|:----|:-----|:-----|
| [LED Strips 2x5m](https://www.amazon.com/gp/product/B01CDTEJBG/) | 2x5m | individually addressable LED strips |	 
| [LED Diffusers, pack of 5, 1m each](https://www.amazon.com/gp/product/B01NBC0NI9/) | 5x1m | 
| [5V 30A Power Supply](https://www.amazon.com/gp/product/B078RXZVDH) | 1 |
| Power Cable | 1 | Cut the end off that goes to the appliance, leave the plug that goes into the wall socket intact |
| Raspberry Pi 3 Model B+ (1) | 1 | Make sure to get a fast SD card|
| 2x30x30 cm plywood sheets (2)| 2 | Find at a local hardware or crafts store |
| 2x6 cm dowel rods/blocks (4) | 4 | Find at a local hardware or crafts store |

And these are things I added during the the building phase:

| Item | Amount | Description |
|:----|:-----|:-----|
| Aluminum Profiles | 2x1m | Choose whatever fits your final base height |
| 90 Degree Angle Section Profiles | 1m | 8mm each side, to cover the connecting corners of the above profiles |
| Antique Wax | any | For giving the wood surface the final touch |	 
| Mineral/Olive/Walnut Oil | any | For emphasizing the structure of the wood surfaces |
| Assembly Adhesive | 1 cartridge | This stuff is like Gaffa Tape |
| Wires of different diameter | any | Choose whatever fits your final base height |
| Waste Water Pipes | 5x1m | 40mm diameter, also buy fittings (5) and end caps (10) |


I was eager to start building that very day I got the design doc. I had the plywood sheets from a different project, but I lacked a circular saw. This was already one of the crucial parts of the project – the BASE. I couldn’t risk having uneven sides, because I used a jigsaw (a cheap and awful one, by the way. The good one, an heirloom from my dad, gave up a few months ago). So starting was postponed a few days until I was able to borrow a circular saw from my father-in-law (who, by the way, once owned a tool hire shop in Munich. Whenever I need tools, I know where to find them.) 

#Time To Build

For the base I used two sheets of good plywood (1.8cm thick), 30 x 30 cm each.

![](https://thepracticaldev.s3.amazonaws.com/i/bftn5oglrh47odge9ars.png) 

I drilled the supporting holes into the better one of the sheets. This will be the top and most visible piece of wood in the whole installation. Also make sure you use a proper drill and a drill press to make the five 35mm holes. I started off with 30mm, because I hadn’t had the aluminum channel system that make up the tubes at that point. And therefor I had no exact measures. It is essential to be aware of which side should be the final top side, as all drilling and sawing will always slightly fray the wood on the bottom side. You better try your tools on a non-essential piece of wood first if unsure.

These are the two sheets, exactly the same size, with holes drilled in the top one. The channel system, aluminum profiles (50cm each), stuck loosely into it. Improvised spacers between the sheets. By that time, I wasn’t aware that four profiles were to be combined to create one circular tube, with LED strips inside face into four directions. 

![](https://thepracticaldev.s3.amazonaws.com/i/rhc1hbnolqnvq1lt854g.png) 

![](https://thepracticaldev.s3.amazonaws.com/i/epdqkywg9d8ajk1b0gyi.png)
 
Looked good so far.

![](https://thepracticaldev.s3.amazonaws.com/i/2umskc91vsj3286vbvpu.png) 
 
Aluminum profiles are made of very soft aluminum. It’s easiest sawed with a handsaw and rasped and filed afterwards to have smooth edges. Sometimes, later on in this blog post, a disc grinder comes in handy when working with aluminum, but for the aluminum profiles it’s just too much power that you would apply to the soft material.

![](https://thepracticaldev.s3.amazonaws.com/i/q6vpnus7oknkd0fhwcxs.png)
 
Cutting all the profiles to the appropriate length takes some time. I found it easiest to stick the four of them already together with double-sided adhesive tape and clamp them into a vice. As the vice applies force only from two sides, make sure to secure the other two sides (vertically, as a vice usually clamps horizontally) together with a compressor clamp, so the four profiles do not stretch apart in the vice.

![](https://thepracticaldev.s3.amazonaws.com/i/6u6xtbpwxtp7exoroa9f.png)
 
With the profiles at the right length (final length + space between sheets + top sheet’s thickness), I wanted to see how it will look like when the diffusors are applied as well:

![](https://thepracticaldev.s3.amazonaws.com/i/9bkbkoao4gfyxe10jvsq.png)

If you are going to build your own one in tandem with someone, remember that communication is important! Only after I placed the order for one 5m strip (I was still uncertain on the total required length of LED) we synced about it and Bryan told me to order LED strips with adhesive on the backside. I still ordered the same strip a second time to avoid any differences in make. It would be a nasty optic if some of the LEDs were a different tone or brightness. But that meant I had to apply double adhesive tape to the back of nearly 10m LED strips myself. Not as problematic as I thought it would be. Just stick them on the rolled-out tape and use a box cutter to go along the edges of the strips. I’ve already lengthened them appropriately, to fit as many strips as possible on an as-short-as-possible piece of adhesive tape. 
 
![](https://thepracticaldev.s3.amazonaws.com/i/oevm8sk6gp5ps6tfvreh.png)

400+ LEDs. Already looks quite impressive, right? Applying them to the profiles is easy. A good double adhesive tape is worth everything. There are so many cheap options that would cause grief with the final product. Avoid them. You don’t need the most expensive parts, though. Just a good brand that you trust. 

![](https://thepracticaldev.s3.amazonaws.com/i/5mrm5iy4yt55wrsxewuk.png) 

I’ve drilled holes through the profiles to connect the power of the LED strips of one tube. I initially thought the plan was to have each of the strips getting their signal individually, therefor I didn’t drill holes for the third cable in the beginning. In retrospective, I should have still planned for that third drill hole. It was drilled later on with all the power cable soldering already done. For our setup and the scenario, individually addressable strips would get way too complex. I imagine it could result even crazier animations with each of the tubes and each of the strips being addressable individually.

![](https://thepracticaldev.s3.amazonaws.com/i/c6j9kuwdc3ht8qfix9nu.png)

Again, testing how it will look like. And if it works in the expected way.

![](https://thepracticaldev.s3.amazonaws.com/i/dixhka08nq9k93l65cxp.png)

The longest of the tubes (50cm visible length) installed for the first time in the base and connected to the controller board.

![](https://thepracticaldev.s3.amazonaws.com/i/zy0xqgi6le14ilwgtilu.png)
 
I did an interim solution for the cabling, as I wasn’t sure about wiring in the end. This is the final cabling setup during soldering, with tunnels for all three cables through the profiles.

![](https://thepracticaldev.s3.amazonaws.com/i/lrxc3fw6bh14zw8cvj7m.png)

I also learned from Bryan that the controller boards, the piece of hardware custom designed by him and responsible for interpreting and transmitting the animations to the LED strips, would not be able to provide enough power to safely operate the strips. We have a massive 5V power supply on our shopping list, and the 2A that a USB AC adapter can handle is nothing compared to what the LED strips might consume, which in extreme cases could exceed 20A. This in mind I also chose higher diameter cables (1 mm2)  for power supply.

![](https://thepracticaldev.s3.amazonaws.com/i/qcxvslsat0ah500bzoo0.png)

![](https://thepracticaldev.s3.amazonaws.com/i/ff8q8weadufcnxeruj3z.png)  

Gotten this far, I asked Bryan what his plans were to cover the sides of the base. Given that we need to make sure air flows through the design, we couldn’t cover the sides with more wood. But I also wanted to give view on the picturesque sides of the plywood. At that point I had already sanded (final grain: 320-400), oiled (walnut oil; a mineral oil could have gotten more out of the admittedly somewhat boring light wood) and waxed (antique wax, for the finishing touch and robustness against touch and wear) the wood, and now covering it would have been embarrassing.

![](https://thepracticaldev.s3.amazonaws.com/i/zdh0ujo7yssmrfwwsfuo.png) 

![](https://thepracticaldev.s3.amazonaws.com/i/jfeyavnd0kjtapyl6v1a.png) 

But first things first, the cabling had to get to a production level. This is what the wiring looked like in the end:
 
![](https://thepracticaldev.s3.amazonaws.com/i/wez0sakgin31f50rs7pf.png) 

![](https://thepracticaldev.s3.amazonaws.com/i/10z9v7akxql4kezrx6he.png)

Soldering was a bit awkward. I have not the highest skills in soldering, and never learned any of this on a professional level. I was ok with the results in the end, but I recommend to everyone to also invest some money in a good soldering station. The process of soldering is much smoother when you have some spare power resources. Also I recommend putting something in between the backside of the soldering points of the LED strips and the aluminum profiles. The physical contact between the two sucks the heat out of your soldering points like crazy. Applying to much force only boosts the energy loss. There’s a reason why CPU coolers are made of aluminum as well.  

![](https://thepracticaldev.s3.amazonaws.com/i/7h1moy0h7xteu40s9op9.png) 

And then I also ripped off the soldering points of one of the tubes’ supply when removing it from the base. I cursed myself, but I learned that I had to take precautionary measures to not have that happen again.
 
![](https://thepracticaldev.s3.amazonaws.com/i/1kqp8pwfes1jrgdz6sys.png)

I would not be the only one operating this device. And I know I can’t expect others to have the same diligence as myself. Always build as robust as possible with the budget you have. That does not only apply to crafting.

![](https://thepracticaldev.s3.amazonaws.com/i/9l3hm8hxt6842sl8der1.png)
 
Finishing on the wiring and installing everything in the base happened in a great mood. Most of the stuff was done. Or so I thought.

![](https://thepracticaldev.s3.amazonaws.com/i/b06o8jlt982vqhn75o2c.png)

I suggested we use aluminum once again, that would fit the profiles. Something that already has venting holes. Your local hardware store might have a selection on stock. So did mine, but when I strolled through the allies of the store, I saw something more intriguing: more profiles. And one that looked like a perfect fit. Having the right height to cover the 6cm space between the sheets. But that meant I would have to drill the venting holes myself. Lots of them. 

![](https://thepracticaldev.s3.amazonaws.com/i/kubmwceue2ww217psaye.png)

The new side profiles looked awesome, but I still didn’t know how to make them stick to the base.

![](https://thepracticaldev.s3.amazonaws.com/i/j06h7icy6jbgvfnq4joc.png) 

![](https://thepracticaldev.s3.amazonaws.com/i/f31ulwh48nm1q44fxs1e.png)

I used the disc grinder to cut the sides to a 45 degree angle. Not a very exact tool, but enough for the job. I planned to have 90 degree angle section profiles on each of the corners. 

![](https://thepracticaldev.s3.amazonaws.com/i/bii1cstv8qcptqe9t51u.png)

Drilling the venting holes myself left some space for creativity. Building this for a specific use case, JSConf.EU, meant we could take the opportunity to spread some developer love as well. 

![](https://thepracticaldev.s3.amazonaws.com/i/j2ga7ghtvvjyset1eiex.png)

With a matrix of 5 lines (5cm) and 25 columns (25cm), why not do some bit art calligraphy?

![](https://thepracticaldev.s3.amazonaws.com/i/tv903exg1xls5r54kh89.png) 

BIT <3 JS

![](https://thepracticaldev.s3.amazonaws.com/i/yv5kdh3cd552elmdj2i0.png) 

To stick the side covers together, I decided to go for assembly adhesive. I didn’t want to create more points of distraction with screws. This would be the cleanest and most flexible solution, though not the most solid one. Time will tell if it is enough sticking power. Aluminum is not the best basis for adhesives. 

![](https://thepracticaldev.s3.amazonaws.com/i/xzre9cbzix9gjah1xx9n.png)

You can still see some surplus assembly adhesive. I will need to take that off with a card cutter.

I’m now more than happy with the final result. Well worth the 20+ hours (a conservative guess) of work I’ve put in. It’s custom built, you can see that, and that’s ok. The magic is beyond hardware though. Make sure to follow along with Bryan’s blog post series to see, what the really intriguing technology behind this visualization art piece is about.

{% youtube Y4pN53zziyA %}

PS: Another challenge I was facing was how to bring that installation to Berlin. Of course I planned to deconstruct it partially (removal of the tubes), but the longest tube is 58cm. This is well beyond the flight cases that I own. Guess what, I found a perfect protective enclosing in the hardware store. And it cost as little as 12 EUR to fit in all of the 5 tubes.

![](https://thepracticaldev.s3.amazonaws.com/i/sqgwbtd0abiljg9ddr3q.png)

These pipes are called HT (Hochtemperatur, translates to high temperature, [Link](https://de.wikipedia.org/wiki/Hochtemperaturrohr), only available in German language) in size DN 40, with an inner diameter of appr. 36mm, it’s a perfect fit. End caps are as little as 65 cent each, and the top caps are combination of end caps and fittings. I equipped all ten end caps with a little bit of cushion. Then they have been glued (assembly adhesive again) firmly into the ends of the pipes. The fittings go on the top part of the shortened pipes (they are available up to 5 meters length) and sit very well without further adhesives or securing. I will tie the 5 pipes to the outside of my luggage (that will safely carry the base as well).

Hopefully, see you at JSConf.EU on June 1+2 2019!