Introduction: Bulb Box

About: After a degree in micro-engineering in Switzerland, I moved to Russia to discover new landscapes

This is a screen of 8 x 8 light bulbs which reacts to sound.

There are inside the box a microphone and a micro-controller that blinks the bulbs according to the sound. I have now only two animations but everything is possible: random blink, animations according to frequency, waves with light intensity variation, moving shapes...

Why did I not used LEDs?

Good question. I know that this system is essentially a heater and it heats! When you close your eyes you can feel it on your face but anyway. I wanted to have this vintage look, I wanted to see the orange filament. At the time when the incandescent bulbs are slowly getting prohibited everywhere, I wanted to pay tribute to these bulbs while we still can.

This was a part of the Maker Faire Moscow

When I decided to start this project in the Fablab Moscow, the objectif was not clear. I just wanted to play with this big toy, it was also a good exercice for me to design this. Then I met the guys of Noisy Toys who were preparing their stand and we decided that the Bulb Box would be their lighting system during the festival.

Step 1: Tools and Material

The circuit

I milled the circuit with my mini CNC (Proxxon mf70) but you can order it. The controller is a copy of arduino Leonardo (Atmega32u4) but any arduino board would work. I also used four port expanders (MCP23017) and a electret microphone with its amplifier. They can also be found soldered on a board (for example Adafruit).

Only the four power boards can not be bought in usual stores (it is a custom design): You have to make it or order it in a PCB factory (or I make you one). It has been designed for 220V standard. Sorry for the others but you need to choose other transistors because the current under 110V will toast them (with a 40W bulb).

I forgot to add pull down resistors on each power transistor. I fixed it with two relays that are triggered after the controller initialization.

The box

This is a wooden box with 64 holes on the front face. I used a CNC router (Flexicam) to save time but you can of course use a drill. A mitre saw and a table saw helps but are not necessary.


  • Milling machine (Proxxon mf70) (or any PCB prototyping system)
  • CNC router (Flexicam) (or drill and table saw)
  • Mitre saw
  • Multimetre
  • Soldering iron with flux
  • Wire stripper pliers


  • 64 Bulbs E27 (40W) (take two more in case)
  • 64 Ceramic bulb holder E27 (take two more in case)
  • Plywood 15 mm (540 x 540 mm)
  • Plywood 10 mm (540 x 540 mm)
  • Wooden plank 3600 mm (120 x 20 mm)
  • 4 Steel brackets with screws(or tenons)
  • Electronic parts: See attached the bill of material
  • Electrical wire 30 m (two coper cores)
  • Transformator 220V-6V 2W

Step 2: Make the Circuits

Download the files and make the boards with your favorite prototyping method. Then solder the components starting by the small ones. Finally you can plug each port expander directly on its power board like a shield.

As said in the previous step, there is only the power boards that have to be made. The power board is the board with 16 transistor and 2 bridge rectifier. You need four of them. The others boards can be bought (one controller, four port expanders and one microphone with amplifier). The relay board is only necessary if you use the actual power board (without pull down resistors). The problem is when the micro-controller's ports are not configured, they can be floating. With a floating grid, the MOSFETs will burn.

I chose the Atmega32u4 because it has a built-in USB so you just have to connect a quartz and a usb port, flash the micro-controller (install the boot-loader) and you can use it with the Arduino IDE. I first wanted to use demultiplexers instead of port expanders so I needed many ports. I finally changed because I could not find an easy way to keep the non-selected output high. Finally I used only two controller ports for the port expanders and a third for the microphone so I think that it could be done with an Attiny.

The same way I could have used a matrix to command the lamps and this would have used only 16 outputs. But I wanted to use all the bulbs power range and with a matrix you can not have the all the bulbs turned on at the same time, you need to scan the screen line by line. So I decided to connect it the simple (stupid) way. So I have 64 outputs commanding 64 transistors who switch 64 bulbs.

By the way, how can I command AC voltage from the grid with transistors? I first rectify this voltage with a bridge rectifier. Bulbs do not care about polarity.

Step 3: Make the Box

  • Cut the front face: 540 x 540 mm in the 18 mm plywood. Make equally spaced holes with the bulb holder diameter. There are slightly conical so measure it in the middle. (cf. grille.DXF)
  • Cut the sides in the 120 x 20 wooden plank: Two sides at 540 and two sides at 500.
  • Glue everything and assemble it. Then add the steel brackets.
  • Paint the box as desired
  • Add the bulb holders with white glue. I used a soft hammer to force them in the holes.
  • The back side is made with the other 540 x 540 part in the 10 mm plywood. Three holes will be done in it, one for the power cable, one for the microphone and one for the gain button. You can also place these components on the side so first put your electronic inside the box.

Step 4: Connect Everything

Each power board drives two bulb columns. The general power supplies each power board and the transformer. Do not forget to connect the grounds together (I burned one power board (16 transistors) because of that).

Step 5: Program the Controller

You need to install the boot loader first. It is done with your favorite ISP programmer (I used another Arduino board as ISP programmer). Then just plug the USB and it should appear in the Arduino IDE. Download the code and load it on the controller.

Before connecting the main power, double check your connection with a multimeter and also look for short circuits. If everything looks good, unplug the USB before plugging the main power (never use the USB and the main power at the same time).

In the code I do not switch all the pins at the same time because it can draw too much current in the port expander. Use higher resistances between the port expanders and the transistors if you want to do that.

Make some noise. Adjust the gain button. If it blinks, you won!

Indoor Lighting Contest

Runner Up in the
Indoor Lighting Contest