[L&I] 24Hours – Bokeh Light Lamp

I had a plan for developing my Bokeh lamp with a web application. I wanted to make nicer and interesting lighting effect, but also I would like to learn and try many things that I did not try before. So I chose Wifi Communication between the application and Arduino and used incandescent bulbs.

Before making this, I tested many different ways for finding the most beautiful effect that I imagined. But actually still now I am looking for the way.

< Web Application >

I am making the Bokeh web application for transforming the photos or real-time video to extract colors for the Bokeh lamp and also wanted to adjust the light color or dimming using the web application. (It is similar to Hue bulb and application but I would like to build it myself. )

< System Diagram >

I used Node.js with a WebSocket module for communication in real-time. And I used MKR1000 Arduino. (a WIFI model)

This app will extract one dominant(average) color and 4 main colors.

  < Material >

< Code >

(I will blog for the Wifi connection code separately later.)

I made a server with Node.js to send the color data to Arduino. I used Express, ejs and Websocket node modules.

I used ‘get-image-colors’ module for extracting color from images. https://www.npmjs.com/package/get-image-colors

  • bokehServer.js (node bokehServer.js -> run this server) 
  • views/index.ejs 
  • image files

Hayeon Hwang(@hayeonhwang)님의 공유 게시물님,

< Hardware & Wiring >

Arduino – MKR1000

*** itpsandbox ***

  1. go to Here (register your devices)
  2. register your computer and device(Arduino-MKR1000)
  • Check your mac address of your laptop (ifconfig -> ether XX:XX:XX:XX:XX:XX)
  • Check your MKR1000 Mac address (Examples/WIFI101/ScanNetworks.ino) for getting 101 Mac address.

3. Choose your wifi network ‘itpsandbox’.

4. Ask the password.

char ssid[] = “itpsandbox”; // your network SSID (name)
char pass[] = “(password)”;


*** At home Wifi (normal) ***

  1. just choose your home wifi
  2. Check your ip address and passwords

char ssid[] = “”; // your network SSID (name)
char pass[] = “”; // your network password


< Prototyping & Test>

  • Stretch fabric

It was interesting when I pressed the fabric the pattern and size of Bokeh effect changed.

  • Floor
  • Two layers (Moire effect)

I made two papers with dot holes. I realized that when two layers move or rotate, the pattern is more irregular or show different interesting patterns.

Dot Moire Effects


(This approach is also interesting! not Bokeh, but play with RGB colors and moire effects. I want to explore more RGB lights with Lithography method. I worked long times ago with RGB lights for reproducing Andy Warhol’s Marilyn. (http://hhayeon.com/Light-Lithography))


Hayeon Hwang(@hayeonhwang)님의 공유 게시물님,

  • Ceiling

If I want to get more clear and sharp images, I think I need to use the convex lens.


  • Sheer curtain

  • Round Shade
  • Dichroic Film

Always fancy material, Dichroic Film.

Hayeon Hwang(@hayeonhwang)님의 공유 게시물님,

  • Halogen Lamp (12v 50watt * 4) with color filter

< Wiring >

I used transitors (TIP120) for 12v Halogen MR16 lights.

Lab: Using a Transistor to Control High Current Loads with an Arduino

  • halogen (incandesent bulb) 12v 50watt * 4
  • 12v power supply

50w = 12v * 4.16666667amps 

4.2 * 4 = 16.8amps


Just check the connections between the components! Do not test with Jumper cables with high current power supply! (2A is super fine, but I have to use at least 17amps for 4 halogen bulbs. )


  1. Check Wire gauge!!(thickness)


” Just like a garden hose, a larger diameter hose carries more water in a given time over a given distance.”

American Wire Guage (AWG)

AWG 22 : common for Breadboards (Max 7amps)

AWG 28 : Common Jumper cables

30A current needs thicker wires. 

When I tested with Jumper cables and 30A 12V power supply, the power jumper cable melted and smoked. 

2. Use Heatsink with TIP120

I used the TIP120 with about 4.17amp to the collector. It was really hot I attached with heatsinks.

 I tried not to use the breadboard and to connect thicker wires directly. And then I controlled the transistor pins with PWM.

TIP120 Datasheet 

Collector Current

Continuous : 5amps / Peak : 8amps 

3. MR16 , JC type Bulb

I used MR16 bulbs and sockets.

Actually, the reflector of MR16 is made blurry images for bokeh shape. I wanted to use the JC type bulb. (I think the socket size is same but without the case and top glasses of MR16.)

When I tested it, it smoked… (again) I did not know why it smoked and turned green color on the glass. Because I touched it with oily hands. Halogen light is too hot so Even though the surface of the bulb has a small amount of oil makes the smoke and it could blow up or break. If you touch it with hands, clean up with alcohol.

4. Heat Heat Heat!

I probably underestimated the heat problems with lights. When I used the 1W LEDs, they also made heat a lot. (cannot touch with bare hands) But, it was okay.

But when I used more bright LEDs or incandescent bulbs that need high currents, I should have considered the heat problems.

  • Heatsink (More wide surfaces, more fins better for reducing heat)
  • Fan
  • Structure for heat circulation

Why we need heatsinks for LEDs 

(It was interesting structures for LEDs!)

<Color Extract from images>

The app extract one dominant color and main 4 colors. Now I sent the color Hex values to Arduino.

  I will make an app for select the images or video and confirm the color in real-time. I want to use in real-time streaming webcam video and generate the effect with app and the Bokeh lamp.


<Conditions for perfect for bokeh light>

  • Programmable/dimmable color change LED
  • one source of light (super bright LED) of with Convex lens cap(but it also depends on the focus)
  • Transparent bulb or lens cap (Do not use white bulb!!! (It make ambient light -> not clear shapes of light, blurry shadows))
  • No reflector

Leave a Reply

Your email address will not be published.