Unicycle LED Lightshow – ESP8266 controlled over WLAN

11. Januar 2018 at 19:12
Print Friendly, PDF & Email

My kids are passioned for riding unicycle. Once the idea was born to add lights for a show event. Adding some lights would be already cool but inspired by other lightshows, the lights should be synchronized with the music.

It was quite an adeventure but a great learning experience dealing with new items like LiPo, DMX, EL-wire, LED stripes, RF modules etc.

The very first thought was to program everything into the control unit of one stripe.

I have disregarded this because of two reasons:

1) With three actors (later will be 5), you are having 3×3=9 control units. For any update, you have update all boards. During the show, you need to find a way to sync the modules.

2) My main argument for using one sender is not a technical one:The kids should be able to create and update the show without me. Just imagine how many tweaks are done until the choreography is finished

The current architecture has bascially three elements:

– Windows Notebook with Vixen 3

– Sender : standard wireless router

– Receiver : ESP8266 + MOSFET driver + LED Stripes + LiPo 2S

The first attempt was based on arduino Nano and NRF24. After some events, I had to overcome some limitations and moved to ESP8266 as this providing much more flexibility.


Step 1: Receiver Module

The modules are based on NodeLua Boards. I started to design my own PCB’s but these modules are so cheap and do come with integrated voltage regulator, which you need when using the same battery for the LED stripe as well.

To get the hardware completed, you just need to add the driver consisting of two resistors and one MOSFET per colour. For monitoring the battery power, another two resistors are used. A standard PCB is mounted as piggy back – so it is pretty fast to get this assemled. Much simpler than dealing with an arduino and an NRF24.

Although the design is pretty simple, the key is to select the right MOSFET having a low R DS (on) and V GS(th) below 3V. On eBay I found the IRLR7843 in a D-PAK housing for surface mount. So it is small but not too small for soldering by hand.

The circuit diagram needs to be updated as the pull-down resistor for the MOSFET-Gate is missing. The module works without, but when you power up the module, the LED stripe will flash.

If you want to see a much more professional design go here: Pixel Controller

The software was quite simple at the very beginning: reading a DMX package and retrieving the relevant information for the specific LED stripe. This required some switches and jumpers to configure a module.

When using the ESP8266 a web server with an admin interface was implemented to configure the module.


The software has been updated after every show in order to get more flexible, increase liability and allow monitoring. Every module is sending perdiodically data to a node server, so I am able to check if the whole equipment is ready like WiFi signal strength, battery voltage and module state. In addition the node server is able to reset a certain module or request a firmware update.

The code for the ESP module is available at github: https://github.com/ThomasH-W/ESP8266-Artnet-Node


Step 2: Mounting LED Stripes

For the body of the actor we are using a coat with a zipper so you can easily dress up before the show.

Instead of directly attaching the LED stripes, we used velcro straps which are stitched to the coat. The counterpart is glued to the LED stripe.

At the beginning I have used connectors to attach the cable to the stripes. This was really unreliable. and basically every connection broke due to the various movements of the actors. So I removed all connectors and soldered the cables. Using the solder points at the very end of a stripe is exposing the connection to mechanical movements. Due to this I am not soldering the cables at the end of the stripe and fixing the cable with hot glue. I need to admit that this does not look professional but the audiance won’t see this in the dark anyway.

On the wheel, the module and the batterry are simply fixed to the spokes. Next to the LED stripe is a plastic stripe to support a nice round circle.

Step 3: Power Supply

LED stripes are designed to operate at 12V. Batteries at this voltage are to big to mounted on the wheel or the saddle. An alternative was a 9V block battery (PP3 / 6LR61). The voltage is still ok but the main drawback is the time needed to exchange all the batteries before a show, as I do want fresh batteries for an event.

Finally I moved to LiPo:

The LED stripes can operate at 8V. Depending on the color, even 7.8V could work.

Accordingly you need a LiPo battery with 2cells – 2S. Fully charged the voltage is 2 x 4.2 V = 8.4V

For my application a capacity of 350mAh is enough and the size of the battery is small enough to fit into a standard housing for a 9V battery including a switch.

I have chosen batteries with a JST-XH connector as a balance plug and Mini JST for the discharge plug. All the standard chargers can handle these connectors.

I used a standard housing for 9V batteries with a switch to mount the battery at the unicycle. Two batteries of the same type can be charged at the same time using an adapater connecting two 2S cells to a 4S port at the charger.

Step 4: Creating the Show

There is an awesome program providing an real simple but powerful user interface: Vixen Lights. Everything is done via drag and drop and the music is shown in the timeline. I have looked at some professional programs before, but this one is for free and provides everything I need.

The very first thing is to define the different LED stripes and create groups , so it is much simpler to control a specific set of light, e.g.: all lights attached to one driver. or all wheels.


In general you select the music and import the clip into Vixen incl. the beat markers.

Effects are asigned to an display element and be altered in many ways.

A great help is the simulation tool where you can see how the scene will look like in real time.

In a nutshull, the program will send the DMX data to the output controller which is in my setup a multicast DMX server running on the Notebook. The module are connected via WiFi / WLAN. Every LED is determined by the DMX universe as well as the offset within the DM512 data package.

You can find Vixen here: http://www.vixenlights.com/

Step 5: The Show

The choreography has been tweaked a lot of times. In addition to the actors, DMX-spots have been added as well straight LED stripes as safety lights whenever the stage is elevated. All them are using the same ESP module and are controlled by Vixen.

Going forward I may utilize APA102 LED stripes to allow more sophisticated effects.

This may require to use multiple universes leading to a signifcant step function in updating the software as well as the Vixen setup. Not sure if I want to do this but it is appealing.