Rammstein Stage Lighting
After being at a Rammstein Stadium Tour concert, I wanted my own replica of their huge circle stage lights.
The original lights are composed of 33 big RGB spotlights with pan & tilt capability and some neons that underline the shape.
Mine will be a simpler (and smaller) one : single fixed LED on each spot, no neon underline and as it is aimed at replacing my bedside lamp, I've added some LEDs on the back to make indirect light.
For my first Instructable I won't get into the detail. So I asume your are already familiar with Arduino, core, libs and making/using basic CPU boards. If not, you'll have to find your way to learn these skills. If you need particular details on my project, I'll be happy to answer.
By the way, if you happen to type in search engines "Rammstein lamp" you will have tons of Rammstein logo ones, not a single reproduction of their amazing stage lights. I hope there will be mine now !
Octobre 15 update :
Making some fun test with a sound reactive setup : WLED + LedFX. See last step for the result.
Supplies
- 3D printed parts :
- Base.slt x1
- Back.stl x1
- Rings.stl x1
- 4 custom PCB with on each :
- WS2812B addressable RGB LED x11
- 100nF capacitor 0805 x11
- 22µF capacitor 1210 x1
- WS2812B breakout module with input/output connector x1
- M32 black plastic cable gland x1
- Push Button Switch PBS-33B x2
- IRO pipe diam 20mm
- 90° IRO pipe bend diam 20mm x1
- LED controller x1
- ATtiny85 custom board or Digispark
- ESP8266/ESP32 board with WLED can avantagily be used : https://kno.wled.ge/
- Or any compact µC module (Arduino nano, Pro Mini, etc...)
- 5V / 2.5A power adapter x1
- Two pole terminal block x1
- Some M4 countersunk screws, bolts, nuts, washers and spacer
- Bronze + dark grey metalic spraypaint
- SMD solder skills
- Wires
- Extension cord with switch
Mechanical CAD Design
For my first parametric CAD design, I've tried to keep things simple as much as possible. I have separated the base and rings so that they can be painted differently. The parts can be 3D printed or machined.
I used black PLA and painted in bronze the Ring.stl part. I've also painted with a dark metallic grey the Base.stl. Ring.stl and Base.stl are glued together.
Electrical CAD Design
My first idea was to build a single 200x200mm circuit with the all system on it. But, after doing some quote simulations, it appears that 100x100mm circuit are MUCH cheaper. So I design a quarter circuit with 11 LED (8 on the front, 3 on the back) without the center LED. With 4 of theses you will have 4 petals with 44 LEDs an a center hole. Use black soldermask and white silkscreen for best integration. Another benefit of this design is the flexibility in the choice of the LED controller as it is not a part of the circuit. The main drawback is the more complex integration.
To solder SMD, I use very basic tools : soldering Iron with small tip, small tweezers, small solder wire and a magnifying glass. It tooks me half an hour per circuit.
Start on the front side with the 8 100nF capacitor, then the 8 WS2812B. Turn your circuit and then solder the 3 100nF capacitor, the 3 WS2812B and finally the 22µF capacitor.
Don't forget to test individually each circuit before the final integration.
Assembling the Petals
Screw the 4 petals to the base with M4 countersunk screw. Use nuts on the outer screw and spacers on the inner.
Solder the power supply bus according to the diagram, I use red and blue AWG20 wire for this. On the #4 board, I've soler vertical PINs in order to screw a terminal block on it.
Then, solder the data lines, always DI to DO port.
Use hot glue to fix the center WS2812B breakout module and the LED controller. Be careful and avoid short-circuits.
Solder wires on the buttons and connect them to the controller board. I use jumper wire so that they can be disconnected for the controller.
Go programming/testing before mounting the back cover.
LEDs Mapping (WLED Controller Only)
The 4 petals design introduce an unintuitive LED mapping. The concentric rings are not continuous. The below table gives the mapping.
October the 15 update:
Attached file : ledmap.json to be used for maping LEDs in WLED
LED index | ring | Ring position | Petal # |
0 | Center | ||
1 | Inner ring | 1/4 | 1 |
2 | Middle ring | 1/12 | 1 |
3 | Middle ring | 2/12 | 1 |
4 | Middle ring | 3/12 | 1 |
5 | Outter ring | 1/16 | 1 |
6 | Outter ring | 2/16 | 1 |
7 | Outter ring | 3/16 | 1 |
8 | Outter ring | 4/16 | 1 |
9 | Back ring | 1/12 | 1 |
10 | Back ring | 2/12 | 1 |
11 | Back ring | 3/12 | 1 |
12 | Inner ring | 2/4 | 2 |
13 | Middle ring | 4/12 | 2 |
14 | Middle ring | 5/12 | 2 |
15 | Middle ring | 6/12 | 2 |
16 | Outter ring | 5/16 | 2 |
17 | Outter ring | 6/16 | 2 |
18 | Outter ring | 7/16 | 2 |
19 | Outter ring | 8/16 | 2 |
20 | Back ring | 4/12 | 2 |
21 | Back ring | 5/12 | 2 |
22 | Back ring | 6/12 | 2 |
23 | Inner ring | 3/4 | 3 |
24 | Middle ring | 7/12 | 3 |
25 | Middle ring | 8/12 | 3 |
26 | Middle ring | 9/12 | 3 |
27 | Outter ring | 9/16 | 3 |
28 | Outter ring | 10/16 | 3 |
29 | Outter ring | 11/16 | 3 |
30 | Outter ring | 12/16 | 3 |
31 | Back ring | 7/12 | 3 |
32 | Back ring | 8/12 | 3 |
33 | Back ring | 9/12 | 3 |
34 | Inner ring | 4/4 | 4 |
35 | Middle ring | 10/12 | 4 |
36 | Middle ring | 11/12 | 4 |
37 | Middle ring | 12/12 | 4 |
38 | Outter ring | 13/16 | 4 |
39 | Outter ring | 14/16 | 4 |
40 | Outter ring | 15/16 | 4 |
41 | Outter ring | 16/16 | 4 |
42 | Back ring | 10/12 | 4 |
43 | Back ring | 11/12 | 4 |
44 | Back ring | 12/12 | 4 |
Code
Since I've got severals ATtiny85 lying around I've used one for the controller mounted on a perfboard. I use ATTinyCore to compile the program (tutorials are easy to find, I use this core even for my Digispark boards instead of the official core). I've attached the board configuration in the tool menu of the Arduino IDE.
Digispark boards can be used without any modifications. Arduino Nano as well but you will have to change the PINs. The code automatically select the most optimized WS2812B lib (tinyNeoPixel_Static for ATTinyCore and Adafruit_NeoPixel for others)
The Pinning for ATtiny85 is :
- PB0 WS2812B LED strip
- PB3 button1
- PB4 button2
The behavior is :
- On power ON : recall last state from EEPROM
- On button 1 short press : cycle effects (Fire -> all white -> all red -> all green)
- On button 2 short press : cycle brightness
- On button 1 long press : all LEDs OFF
- After 30s of inactivity, the state (effect + brightness) are saved in EEPROM
The project structure is :
- Adafruit_NeoPixel.cpp
- Adafruit_NeoPixel.h Adafruit_NeoPixel WS2812B LED lib, I prefer to keep a local copy
- Bounce2.cpp
- Bounce2.hBounce2 (Debounce button lib, again I prefer to keep a local copy)
- ButtonHD.cpp
- ButtonHD.h (custom Inheritance of the Debounce lib to add long press button capability)
- Color.h (some predefined colors in U32 format)
- LampeRammsteinTINY.ino (main code)
- NeoRammstein.cpp
- NeoRammstein.h (custom Inheritance of the NeoPixel lib to manage the light effects related to hardware)
Light effects (State in the code) can be easily created. The order of the effects in the cycle are defined in the "Constants definition" section. Deleting an effect don't require you to suppress its code, just change the according #define directive (For testing purpose, I've created the RAINBOW_STATE which is not part of the cycle effect. Not really the atmosphere of a Rammstein concert unless your daughter loves unicorns... ).
Stand Integration
Install the 2 buttons and the cable gland on the back box.
Paint the IRO tube and the bend and fit the bend inside the cable gland. Connect the buttons to LED controller.
The wall power adaptor output wires are connected to the terminal block in passing inside the IRO tube and bend. Then, screw the back cover on the 4 spacers.
I recommend to not connect the power adapter directly to the outlet, instead use a power extension cord with switch.
Final Toughts
This project is perfect for a WLED controller but I don't want to sleep near a Wifi chip. The extra feature would have been :
- Easy to setup effect
- Sound reactive option with an external mic
- Sound reactive option with LedFX
- Sunrise alarm clock
- Update without disassembling
- Interact with home automation systems
With two of them on each side of the living room (one controller to rule them all), I think a nice (Rammstein) sound reactive setup could been made.
Another improvement could be done by adding light diffusers. Currently I am cutting ping-pong ball to see how it will looks like.
I hope Rammstein fans like me would build their own.
Octobre 15 Update
Making some fun test with WLED + LedFX : see attached video.