My daughter and her friends are huge fans of K-POP music and wanted to have one these fancy light sticks, that are common in the concerts of K-POP bands. Since those devices are sold for a very high price (my daughter, her friends and I) decided to build our own independend version. Just putting a blinking LED in a tube seemed too boring, so we made something more fancy.
Features- lot's of different multicolor light patterns to choose from
- song specific presets, that change patters and color aligned with the music (verse, chorus, breaks...)
- webinterface (also usable on smartphones browsers) for song selection, pattern programming and network configuration
- BPM Detection and synchronization with integrated button
- on the fly programming of any kind of song light shows
- Saving and loading of complete light shows into internal flash memory
Connection features
- Opens up its own WLAN Access Point in case connect to existing Networks can't be established or button is pressed at power on
- Can connect to WLAN using previous known credentials or for credentials given through the web interface
Besides the electronic parts (delcared in the component section), you need some stuff to build the stick. Our blueprint was the "BTS Armybomb" and we chose the following materials:
- 30-40cm plastic pipe with 4cm diameter and a cap to close one end
- 10cm and 8cm plastic spheres
- sandpaper
- black acrylic color (not the best choice, since ist gets scratched off easy)
- 4 cm acrylic glass diamond
- FIMO (a fast hardening dough) to create the cup for the optical unit
- hot glue
Setting up the circuit was the easiest task. Building the software was the fun part and manufacturing the stick was try and error. So here are the main steps in a proper order:
The circuit
This should be no problem for anybody. One thing to note: For developing and testing all the light effects I used an Arduino Uno, since compiling and uploading is much faster. On the Arduino Uno the Button is connected to D5 and the Neopixel Data is connected to D12. These are also the numbers you find in the code. This confusion about coded pin and real pin is some weirdness of the ESP8266. So this schematic shows how to connect to the ESP8266 NodeMCU.
The software
There are 3 main sketches in the repository:
- the_light_stick: The final firmware for the ESP8266 NodeMCU
- LightShow_preparation: Reduced to the main show functions without any network and webui functionality. This can be run on an Arduino Uno. To change and test programms, check out the commands you can send over the serial interface
- ui_preparation: Reduced to network and ui code so the resulting code is smaller and uploads faster to the NodeMCU. Also contains css and html file with the prototype, so layout development can be done by just editing these and provide it through a small webserver (e.g. miniweb)
One file is missing on purpose. You need to add wifi_credentials.h with #define STASSID and #define STAPSK.
If you just want to add or change the hard coded song presets, look into "SongPresets.ino" in "the_light_stick"
The optical unit:
- create some sort of cup with FIMO or some other modelling material
- inner diameter: a little bit smaller then the diamond
- outer diameter: fits the inner diameter of the tube
- inner depth is equal to the height of the diamond
- a hole in the bottom for cables
- solder cables to the neopixel jewel
- glue neopixel Jewel to the bottom of the cup
- glue diamond in the cup (and do that really strong, else it will shake loose and fly around)
The spheres
- sand the 8cm plastic sphere evenly whith the sand paper.
- cut out the holes in the spheres (We used small iron saw blades to first cut in some gaps and weaken the plastic where it should break. Afterwards we could break out the prepared sectors with a plier)
Assembly
- drill hole in the tube for the button
- connect all cables and route them as necessary throught the pipe
- place Node MCU in the tube (Our version was sitting very tight in the diameter)
- mount button in the hole
- place and glue the optical unit
- glue the speres
- paint the stick in black
You find a whole manual (english and german) in the git project "docs" directory. This will also explain, how to programm song specific patterns by yourself with the web interface. To hardcode a pattern into the firmware just copy the programming strings you developed in the webinterface into the "SongPresets.ino" code.
Hardware Variation - D1 MiniTo use less space for the controller and have a more robust and modular setup, I created a variation, using a D1 Mini Board and a small PCB for easy montage.
Also we changed the material for the tube by reusing cardboard tubes from wrapping paper rolls. Here are some Pictures:
Comments