How do I explain it?

Do you know BurningMan?

There is early team sport&fun competition on a peninsula I Puget Sound (it was in other areas before, but close to Seattle in the state of Washington)

Here is the link:

Sorry, it is all in Russian.
This year they added BurningMan-like theme.

We had to come up with something that is going on in a neighborhood using LEDs.

My theme was – three bullies kicked Alien out and occupied the saucer.

Here is the early concept:


And the final version


You can see the alien on the right. It is the same old good alien from here: Alien

Bottom line: we have got 2nd place out of 9 teams from US and Canada. Here are the winners with 18-feet space needle:


It was fun! But I had to assemble it all in the field and then disassemble and then put together again in Portland for after-party.

Surprisingly, it all worked like a charm!

Let’s take a look at technical details (sorry, schematics is not up-to-date):


I did not use fog machine due to competition rules (they limit power installation can consume, though, some other teams violated the rules).

It was all powered by 250w PC power supply.

It had main RGBW LED strip around the 46″ disk, 32×8 RGB display, 12 cylinders with 12 RGBW LED strips wrapped around them, 2 RGBW strips in the bottom, and 2 NEMA 17 steppers to lift the bucket and the suck with some beer (empty cans indeed).

It was all orchestrated from PC. PC was also playing audio files.

On start C# app enumerates all COM ports and sends command “N”. It receives device name and maps known devices to COM ports.
Then user (me) instructs it to home motors (it uses end switches)
Then it just plays scenarios from YAML files.
I made 8 scenarios total, 4 of them are fancy and 4 – very simple.

LEDs are controlled by BluePill/STM32. Why? Because Arduino 32u8 does not have enough RAM. Because it is fast. Because DMA+SPI works great for controlling large LED strips. And they are also cheap.
Motors are controlled by Arduino 32U4. Why? Because it is the best Arduino (328P is garbage for anything beyond “hello world” due to problems with serial/usb implementation).

Lessons learned:

  • You can connect 6 USB boards to a laptop via Toshiba docking station and C# app enumerates them all and communicates – no problems! That docking station also plays audio.
  • Somehow I can no longer program BluePill over USB – I have to use ST-Link (Yes, I have installed bootloader and yes, I tried everything)
  • Arduino SW is garbage when it comes to communication error reporting :(
  • Steppers overheat even when they just holding for 30 minutes (well, I knew that), but a zip-tied passive radiator is enough to fix the problem.
  • Roger Clark mentions that SPI/DMA LED trip control from BluePill got to be done asynchronously – i.e., do not wait for it to finish. Well, why? There is much more than enough framerate – I did the math – keep it simple and reliable!
  • BluePill pinout is somewhat incorrect when it comes to SPI. The correct pin to attach LED strip to is A7.
  • If you attach 12 LED strips to a single output pin of BluePill will it work? It would, but it is very flaky. However, 3.3V to 5V converter from AliExpress costs next-to-nothing and I used it as an amplifier (I also split it into 2 channels of 6 LED strips just to be safe and it worked really well)

Now the party is over and it feels a little sad.

Oh well, we will make something cooler next year!

Here are all the sources:


They include Natron file for Alien – I added some “damage” to his face. It takes many hours to render, sorry.

Leave a Reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>