Work in progress: LEGO Rock Concert

Este artigo é a parte 1 de 5 da série  LEGO Rock Concert

Got myself an anti-stress project: rebuild my LEGO Xutos&Pontapés rock concert.

About 30 years ago my cousin took me with him for a rock concert in the town next by: Xutos&Pontapés. I was a kid with almost no interest in music but Xutos had recently released their third LP and finally got some country-wide success, everybody were singing their singles so… why not?

I got hooked! Xutos were a great live band and after all those years they still are.

So my late teenage years as also my first adult years were strongly influenced by their energy. At college I made the first related site (pew! ugly!) and when I got married my tie had their ‘X’ stamped.

A remarkable concert I went to was the one that ended their 25th anniversary tour. The stage had a fabulous ‘X’ shape:

Xutos&Pontapés – XXV year tour

This photo was taken more or less from the same spot where I was.

So this is going to be my crazy project for the next months: a LEGO rock concert that pays tribute to the greatest portuguese rock band ever.

Of course, this isn’t a static LEGO project. Will try to use some of the gadgets and tricks I’ve been using those last 3 years since I joined PLUG.

From the first version I will certainly keep the animated minifigures and the stage lights (but the lights will be pure LEGO now… as much as I like the 1-wire lights concept, soldering and wiring was a mess and this is a purely for-fun project, no need for more stress).

So MINDSTORMS EV3 running ev3dev is expected, probably with one of the new Power Functions 2 devices. And of course at least one Raspberry Pi and a NodeMCU or other Arduino-like board. And webcams, displays, sound speakers, perhaps some special effects… we’ll see.

The stage

Este artigo é a parte 2 de 5 da série  LEGO Rock Concert

The main part of the Rock Concert is the stage so it will set the scale of all the diorama.

In the first version, the stage had a few internal gears that allow my kids to move the minifigures of 4 of the 5 elements of the band with a stick at the backstage. I had the idea to animate all 5 but never got a solid way to move the arms of the drum player (“Kalu”) so I left him static and put “Zé Pedro” walking along the stage with his guitar (he is/was a bit wild at stage, once he even broke a leg jumping to a speaker) and the remain three just turning around on their places (“Tim” the bass player and main vocals, “João Cabeleira” the human statue that plays guitar and “Gui” with his saxophone).

A second version had 4 LEGO mini-motors instead of sticks and a LEGO MINDSTORMS EV3 controlling the motors… through a USB 8-relay board! It was one of my first experiments with ev3dev and I had no idea how to control those old motors so I used the relay board I had bought for the Raspberry Pi… it was also the first time I invoked bash scripts from python:

This new version will probably have a similar setup (without relays) but for now I’m just concerned with settling the dimensions.

As I had big bunch of red tiles from a LEGO 10 kg box I decided to make the X-shaped stage:

Yeah, ugly but that’s a start. A few more pieces from Bricklink and things started to get better:

So a few more bricks from Bricklink and lots of funny-blue tiles from the same 10 kg box and the main part of the stage is done:

I’ll increase size a bit more to left/right but the ‘X’ will stay this size.

Height is also good because it will allow me to put small speakers inside and probably a few other things if/when I decide what special effects I will have on stage.

Stage Lighting

Este artigo é a parte 3 de 5 da série  LEGO Rock Concert

So the stage size is settled, it will use 3×3 LEGO standard baseplates (32×32 studs each).

Now time to think about the lighting.

For the first version I wanted to be able to control each of the spotlights individually. To minimize wiring I decided to use a 1-wire bus (2 wires for power, 1 wire for data) and I found a 1-wire USB controller that worked very well with linux and (of course) with ev3dev.

I was very happy with the Ev3 1-wire network but not so happy with the way I wired it with my LEGO trusses. I tried to create a pluggable system that would allow me to easily extend the number of spots but never got a decent and discreet solution so I use only fixed size wires, soldered in a daisy-chain. It worked but “locked” my spotlights to the trusses permanently.

So for this new version I decided to use just one or two control channels and use common LEGO Power Function lights (well, at least for this year).

As for the trusses that support the spotlights I also decided to try non-Technic parts – I liked my previous design with only Technic parts but it was already noticeable that the spotlights were too heavy and the 32L axles were bending.

Since LEGO has a truss brick already, lets try it:

So 1 one channel is easy: each Power Functions Light assures 2 spotlights and I just need to daisy chain several of them. We can even make the lights blink with just a electro-mechanic controller like In this video:

Unfortunately it makes to0 much noise so I will have to use something purely electric.

Xutos’ 25th Anniversary concert was indoor (at ‘Pavilhão Atlântico’, currently named ‘Altisse Arena’) and the lights were suspended from the ceilling so there were no vertical trusses in front of the band. If I can’t  keep it realistic I can try a mix: keep the X-shaped stage used in that concert but use a dome truss similar to this model they used in several outdoor concerts in the last couple of years:

So I tried an arch with the LEGO trusses to see it stands hold:

Then I added the Power Functions lights but since the weight was too much I had to redesign it a bit, ending with a much larger arc:

It holds ‘per se’ but is not stable at all, tending to fall to the front or to the back. So a second or even a third arc was needed and also had to raise it a bit because when wife saw it she said the lights were too low and that would prevent people to see the stage. And since wife is always right…

This has been holding tight in our leaving room for the last 7 days (and we have 2 kids!) so I’ll might just reinforce the middle connections of the trusses that have Power Functions cable extensions.

This is already a 2-channel system so I can control half of the spotlights at any time. So it’s a proper time to finally add a MINDSTORMS EV3 to the project… and since I already got six small battery-powered active speakers I can also play a music:

 

Video Wall

Este artigo é a parte 4 de 5 da série  LEGO Rock Concert

Xutos’ concert had several projection screens at the background so I want to have at least one small display in the background, above the drum player own stage.

Outdoors concerts sometimes have a videowall or a projection screen at each side of the stage so also want that.

First attempt of a videowall was with a NodeMCU (Arduino-like) and a small  ST7735S based 128×160 display:

It looks great for using as the right/left side displays but there’s not enough power for videos, justs static images (but the NodeMCU has enough internal memory to store a few images so some kind of presentation is possible).

The wiring is SPI so I could use just one NodeMCU to control several displays in parallel (using same Chip Select pin for all) or individually (NodeMCU has a few I/O pins).  I intend to return to this idea later on.

For a “few” more Euros I got a better display, a 2.4″ 320×240 PiTFT for the Raspberry Pi. It’s just a bit larger so it can still used as side displays.

I first tried it with a Raspberry Pi 2, installation is pretty forward:

Unfortunately the RPi is too big and to hide it with LEGO I needed a frame much bigger than the PiTFT. So I opted for a Raspberry Pi Zero W instead:

So the LEGO frame is now smaller and much lighter:

So I just need to repeat the process to have a pair of side displays for my Rock Concert stage.

For the drum player display I think this display is too small so perhaps I’ll try a 3.5″ PiTFT. I could also use a small Android tablet but then I will have problems controlling it – I don’t want to continuously stream video to the displays, I was thinking on using some kind of sensors so the public (real people) could control what to display on it, eventually also control a webcam to show different angles of the concert.

But that’s for another day.

Rock Concert IoT

Este artigo é a parte 5 de 5 da série  LEGO Rock Concert

So last days I’ve been assembling the stage surroundings, a truss-based structure to support the left and right video walls and also the self-powered speakers:

LEGO Rock Concert: good progress with the stage and electronics

I gave up hiding the speakers under/inside the stage. I know, speakers aren’t LEGO but I think they look good enough this way.

Also I have been testing the Raspberry Pi Zero W with the PiTFT and a local USB webcam. I use ‘VLC’ to stream the webcam video to the wireless network and can show a stream on the PiTFT with ‘mplayer’. And since mosquitto-clients package is also available for Raspbian I got a way to control everything with just a bash script with MQTT.

So this is the IoT setup now:

LEGO Rock Concert: The IoT

From any mosquitto publisher I can select which stream to show on each video wall and also start a bash script on the EV3 with the sound card and the LEGO Power Function lights so a music plays while the lights blink.

Only problems till now:

  • ‘mplayer’ takes 5 seconds to start playing the stream, doesn’t seem to be a problem with the raspberry nor with the stream, just some kind of warm-up from mplayer, if I can’t fix it will have to find another video player that works with the PiTFT (it’s framebuffer, not X-based)
  • a small USB endoscope camera I was considering using has some problems to show up on first boot of the Rasberry Pi so I will probably use another webcam, bigger but more reliable

While testing the IoT I used my Ubuntu laptop (‘mosquitto-pub’ and ‘mosquitto-sub’) but found a MQTT Dashboard App that works fine both on my Android 5.0 Phone and my Android 4.0 tablet. But I also wanted to use an EV3 as a controller so I tested a few bash scripts with the local keys but found it too limited… so decided to make a better control panel:

LEGO IoT Control Panel

The four medium motors are used as selectors,  I divided a whole rotation in 8 intervals (45º each) to have 8 options on each motor. So it works like this:

– one selector for Video Wall #1

– one selector for Video Wall #2

– one selector for Sound and Lights

– one selector for Special Effects

I can choose what stream I want to show on each video wall and start playing a music. Later I will add more options (photo presentation, youtube video…) and use the 4 EV3 touch sensors to adjust parameters for each option (like the brightness, the frequency or the effect of the lights, the volume of the sound, forward/backward while showing some presentation…).

A video explaining this:

I speak in english but my voice is weak and I had an allergic caugh in the middle so I added sub-titles (also in english).