Wireless Music Reactive Floor Lamps
by Nerdforge in Circuits > Arduino
61870 Views, 608 Favorites, 0 Comments
Wireless Music Reactive Floor Lamps
In this instructable we'll be making some centrally controlled wireless RGB lamps, that responds to music and sounds in the environment! In addition to instructions, the instructable contains:
- Schematics
- List of components
- Link to the code so you can make and modify your own project
Planning Ahead
Here are the major components I have used:
LAMPS:
- 4x LED-strips: http://bit.ly/144ledstrip
- 4x 5v Power Supply: http://bit.ly/5v50wpower
- 4x WeMos Wifi Board: http://bit.ly/5v50wpower
- Power plug: http://bit.ly/5v50wpower
CONTROLLER:
- Sound Sensor: http://bit.ly/dynosound
- Wi-Fi board, I used NodeMCU as I didn't have another WeMos D1. Wemos should work.
- Push Button: http://bit.ly/push1button
- Power Switch: http://bit.ly/powerswitch32
- Colored Diodes (blue): http://bit.ly/powerswitch32
- Li-ion battery: http://bit.ly/powerswitch32
- Battery holder: http://bit.ly/powerswitch32
- Charger module: http://bit.ly/powerswitch32
So I had this very clear idea in my head of what I wanted to create. I wanted a central (but portable) sound detector that could pick up surrounding sounds, and transmit them to lamps that could be placed anywhere inside a room, or even a house. Because all audio will be picked up by the same mic, the lamps should stay synchronous. Moreover, I decided to use a sound detector and not an audio jack (albeit I know many would prefer that option), because I wanted it to be completely wireless and also be able to pick up people singing, clapping, or whatever.
The pictures shows my first initial plans, and the schematics that I ended up using for the lamps, and the one I used for the controller.
Creating the Lamp Fixture
The lamp "fixture" consist of two basic components:
* Aluminium channel to hold the LED-strip
* Acrylic glass to diffuse the light
The aluminium channels were 1 meters each, and bought at a hardware store. The acrylic glass I cut on my table saw to the width of the aluminium channel. To get the acrylic to diffuse the light, it had to be sanded down to get that frosted look, and also to smoothen the edges the table saw made. I started on 80 grit and gradually moved up to 600 grit.
Adding the LED-strips
For this special purpose I am using an Individually Addressable LED-strip, which is also called a Neopixel. If you're not familiar with it, it's a type of LED-strips that lets you reference each diode separately. This allows for some fancy stuff, like giving different diodes different colors, or only lighting up parts of the strip.
I used the adhesive that comes on the back of the strip to fasten it to the aluminium channel, along with some hot glue to make sure it really stuck in there!
Fastening the Acrylic Light Diffuser
Now we have to fasten the acrylic light diffuser to the aluminium light diffuser. This step is harder than it sounds, as the edges of the aluminium channels are quite thin. The best way I found was to use some quick drying epoxy on the edges, and hold it steady for about 5 minutes before attaching some clamps to hold it in place until it was completely cured.
Beginning the Wood Base
The wood base will be made out of a slab of glued oak wood I bought at the hardware store. As it is quite thin, I will glue several layers together to make a block. I ripped strips of it on the table saw, and used the miter saw to cut 10x10 cm large squares of wood. Then I glued together pieces of two and pieces of 3 together. Once the glue was dry, I could take the 3-pieces high block and use a chisel to create a hole like a mortise for the light fixture. Here it is important to get a nice and snug fit so the lamp wont have much room to wiggle around.
Finishing the Wood Base
For the second half of the wood base, the piece with 2 layers glued together, I used the drill press to cut hols in each corner. This is so I could fit the jigsaw and cut out a square in the room, as to make room for the electronics later in the process.
When I had finished the cutting in the upper and lower part, I glued them together before sanding them on the belt sander. Lastly I applied some oil to get the grain to pop.
The Lamp Electronics 1
Wiring the electronics with the WeMos D1 Mini according to the schematic I have made, and then putting most of it on a perf board. I am using a LED-connector to simplify the connection to the LED-strip later.
Note: to get the most reliable signal from the Wemos to the LED strip, there is actually good to use a signal level shifter to up the signal from 3.3 volts to at least 3.5 volts. You can read more about it here: https://hackaday.com/2017/01/20/cheating-at-5v-ws2...
Personally it seemed to work fine without it, but I thought I might mention it in-case somebody runs into issues with my schematic.
Power Supply
I will use a 40watt, 5 volt power supply. I used a set of connectors wired to the WeMos and to a power plug, so that power could be connected without any soldering, after the plug is inserted into the wooden base in the next step.
Adding the Power Plug
Using a drillbit with the same size as the bottom part of the power plug, I drilled into the bottom of the lamp base. using a mallet i pushed it in place. Now you can see it will be quite easy to connect the power, as we have the power connector already soldered to the plug!
Final Touches to the Lamp
Okay, time to add the lamp fixture to the base of the lamp. For this I used some quick drying epoxy around the entire fixture, before placing it into the wooden socket. To fasten the electronics I put a small amount of hot glue on the underside of the perfboard, and mounted it with the USB port facing downwards so it would be easy to program later. I connected the power connectors to each other, and the lamps are done! Next up is the controller!
The Controller
The first picture shows all the components I used for the controller. They are all listed in the beginning. I used the same techniques as in the lamp base to create the controller box, except there are only 3 layers of wood, where the bottom 2 are hollowed out, and the top one is solid. It's important that the hole in the controller is big enought to fit the battery holder!
In the top plate I traced the microphone holder and drilled a hole with wings that could fit it smoothly!
The Pushbutton
To change modes of the lamps, and to indicate if the controller is on or of, we will use a push button lit by a blue led diode. For this I used a push button component to provide the electrical interface to the Wi-Fi chip, but for the actual thing to push on I used a clear gameboy button. I filed away all unevenness from its surface, and drilled a hole in the middle of it. Then I used some hot glue to attach the led diode. With the drill press I drilled a hole big enough to comfortably fit the button. After soldering the electronic push button component to a piece of perfboard (and according to the schematic in the top), I attached the gameboy button with the LED-diode on top of the push button. This way one can click the gameboy button to trigger the button it is glued to!
This assembly was glued into the hole attaching it from the perfboard, on the underside so that the gameboy button would stick up from the hole.
Charger Module and Sound Detector
I wanted the charging module to stay flush with the base of the lamp, so I marked its outline and traced it with a pencil. Then I used the chisel to make it sit flush against the wood. In accordance with the schematic,the battery is wired to the charging module, and connected to the Wi-Fi board through the power switch. The LED and push button is connected to the Wi-Fi board. For the sound detector I used some jumper cables, and also soldered it to the correct pins on the Wi-Fi board.
I put all of this inside the box, and glued the charging module in place using some quick drying epoxy.
Finalizing the Controller
On the top of the controller I drilled a large dimple in the wood around the microphone module. I will add some fabric there later to hide the module. To cover up the electronics I traced piece of thin veneered balsa to the size of the wooden block. I marked the corners where I would put some legs for it to stand on. I also traced the outline of the power switch, and chiseled out a hole for it. It was very satisfying to plop the power switch in place!
For legs I am actually using some nice looking drawer knobs. To connect the power switch to the power cables, I used some good old cables shoes and crimped them to the cables. This makes it easier to disconnect the entire bottom plate if there is need for maintenance! I used two small screws to hold the bottom in place, which can easily be removed for quick access to upload new pieces of code to the Wi-Fi board.
Finally I added some oil, and cut 3 layers of insect net to fit into the little dimple I drilled in the beginning. And the controller is complete, all that remains is to upload the code to the lamps and the controller!
Code and Finished Pictures!
The code I wrote for this can be viewed here: https://github.com/hansjny/Natural-Nerd/tree/maste...
There is one program for the controller, and one for the lamps. It's not perfect, so feel free to improve it and come with pull requests!
The basic operation procedure is like this:
1. The controller creates a new wireless network and waits for connections.
2. The lamps connect, one by one.
3. The controller detects that all lamps have connected, and begins sending out data. It has different operation modes, which can be changed with the button click. In the sound reactive mode, it sends data from the sound detector.
4. The lamps receive the data, process it and dance a bit. It works pretty good. I'm not all too happy about the colours, so I will probably update it and make it behave a bit more interesting if I have time!