Globally Synchronized Wifi Touch Lights




About: I'm a maker from Chicago, IL

This fall a recent death in the family left a bit of a gap in our life. My wife started searching for a way for our family to better keep in contact with each other. After some searching, she came across these long distance touch lamps. Intrigued by the concept, I searched to see if I could build a similar product at a more appealing price point.

After some searching, I discovered the kickstarter project of the same lamps found on Uncommon Goods and the creator’s step-by-step how-to explaining how he made the Filimin touch lamp. What follows is my own how-to on how I created wifi enabled touch lamps to connect my wife, her mom, grandma, and aunt.

The wifi lamps change color when touched and synchronize their colors to be the same no matter where in the world they are located. Each lamp gets assigned a default color so you know who has touched their lamp. This implementation is adapted and heavily borrowed from John Harrison’s original touch lights. You can find more detailed instructions in my wifi touch light blog post.

Teacher Notes

Teachers! Did you use this instructable in your classroom?
Add a Teacher Note to share how you incorporated it into your lesson.

Step 1: Materials, Supplies, and Tools

Below are the materials, supplies, and tools I used to make my touch lamps.



  • Wire (gauge 22AWG)
  • Solder
  • Hot Glue
  • Goo Gone to remove sticky adhesive from the bottom of the lamp


  • Screwdriver
  • Razorblade
  • Soldering iron
  • Hot glue gun
  • Drill and 3/32” drill bit
  • Wirecutter/wire stripper

Step 2: Disassemble the Unifun Touch Lamp

The first step is to disassemble your Unifun Touch Lamp. The finished product should look like the following.

  1. Remove the foam ring from the bottom of the touch lamp. Be careful to remove as much of the stickiness as possible from the bottom of the lamp.
  2. Unscrew the screws from the bottom of the lamp and remove the bottom plate.
  3. Remove the four silver screws to loosen the top white dome from the base of the lamp. Do not remove the dome yet.
  4. Peer between the white dome and the base for a thin wire connecting the top touch plate to the circuitboard. Cut this wire with a razorblade or wire cutter.
  5. Unscrew and remove the circuit board from the lamp base.
  6. Use a screwdriver to push the flaps holding the touch plate to the white dome.
  7. Use a soldering iron to remove the wire connected to the touch plate.

Step 3: Prepare the Shell

Once you have your lamp disassembled, you need to prepare it to be reassembled with your wifi-enabled components.

  1. Use Goo Gone or some other solvent to remove the sticky residue off of the bottom plate of the lamp.
  2. Use a 3/32” drill bit to drill a whole through the center of the battery compartment of the white dome.
  3. Cut a 6-3/4” piece of wire and solder it to the touch plate.

Step 4: Connect the Electrical Components

Now it’s time to connect the electrical components together.

  1. Solder a 3-3/4” wire to each of the VIN, GND, and D2 pins of the Particle Photon.
  2. Solder the 10M-Ohm resistor to pins D3 and D4 of the Photon.

  3. Thread the wires through the holes in the base and solder them to the NeoPixel. VIN should connect to “PWR +5V”, GND should connect to “GND”, and D2 should connect to “Data Input”. There may be multiple power and ground pins, choose the ones that are closest to the wires. It is helpful to plug a USB cable (unpowered) into the photon through the USB hole in the lamp base to help hold the Photon in place.

Step 5: Test the Lamp’s Functionality

At this point we are ready to test the Lamp’s functionality to ensure we soldered everything correctly and all the components are working.

If you have not yet set up your Photon, plug it in and use the app provided by Particle to connect to your Photon and get it connected to the internet via wifi. Particle provides good instructions for getting your Photon connected.

Once you have your photon connected, you should set up your development environment for getting code onto the Photon, I prefer using their command line tool, but their web IDE is pretty nice as well if you want to get started quickly.

If you are using the command line tool, then you can clone the repository containing the code from Github in order to flash it onto the Photon, otherwise you will need to copy and paste the code into the web browser in order to use it.

Find more details on working with the touch light code on my blog.

Step 6: Secure the Components

Once you have verified the lamp lights up as expected, you can secure the electrical components to the lamp fixture.

  1. Apply four dollops of hot glue to the lamp base in order to secure the NeoPixel. Do this quickly to prevent having the glue prematurely dry without securing the NeoPixel.
  2. Secure the wooden dowel to the lamp base (I used a pencil) behind the Photon board. This is used to prevent the Photon from moving when a USB cable is plugged into it. When gluing the wooden dowel, be careful to not cover the three holes that are used to secure the white dome to the lamp base (the fourth hole will be covered by the Photon).
  3. Unplug the USB cable from the Photon and check if it comes loose. If the Photon comes loose, secure it by gluing it to the base. If you cannot remove the Photon, put glue around the edges to make sure it stays in place. As soon as the Photon is put in place, make sure the Photon is aligned with the USB hole and plug the USB cable into the Photon to ensure it fits easily when the Photon is secured.

Step 7: Reassemble the Lamp

You’re almost finished! All that’s left is to connect the touch plate to the Photon and reassemble the lamp.

  1. Screw the white dome back into the lamp base.
  2. Reattach the touch plate to the white dome, threading the attached wire through the hole drilled in the battery compartment.
  3. Solder the wire from the touch plate to the D3 side of the resistor.
  4. Screw the bottom plate back on to the base.
  5. Place six felt pads along the bottom ring of the lamp, covering the exposed screw holes.
  6. You’re done! You can now play with your wifi touch lamp!

Step 8: Final Product

I built four lamps to give to my wife, her mother, grandma, and aunt. They work beautifully and were a joy to build. As a first Photon project, they were easy to get started and assemble. Check out the video above for a demonstration of how they work.



    • Indoor Lighting Contest

      Indoor Lighting Contest
    • Metal Contest

      Metal Contest
    • Make It Fly Challenge

      Make It Fly Challenge

    24 Discussions


    Question 1 day ago

    Okay guys, clearly not all the code is here and easy to find, if someone could gladly post everything, including ALL the files, that would be great, I am having a hard time right now trying to get two photons flashed because the repo wasn't complete with the files that needed to be included.


    Question 6 days ago

    I've figured out the code and sensitivity, sorry for the spam of questions, but last one. Is there a way to turn the lamps off without unplugging them?


    Question 6 days ago

    I've figured out the code, compiled it, and flashed onto my photons, but the touch sensor is way too sensitive. I used my own housing, and for the touch sensor, I have the wire from the resistor connected to a bolt, washer, and nut. I bought three types of each, zinc, stainless steel, and brass, to see if the different conductivity of each would make a difference. Anyway, the lights sense touch sometimes by themselves and other times just when I wave my hand over them. What weird is if I actually touch them, nothing happens, the only thing that sets them off is, as I said, hovering my hand within 6 inches of the sensor. I know you said the sensitivity can be changed, but I'm not sure exactly which numbers to change and by how much. I've tried turning the baseline variance up, and the sensitivity, baseline sensitivity, and sample size down but am still having these issues. Do you have any recommendations on how I can fix this?


    Question 15 days ago

    when I try to flash the code to my photon, I am given this message "fatal error: lamps.cpp:10:22: neopixel.h: No such file or directory" I am very new to coding so I have no idea at all what that means.


    Question 20 days ago on Step 8

    What power supply are you using? 5v at 2.5amp? Also, did you have any issues with a Particle Photon? Ive had issues in the past with having a major component being driven off of the Photon and it losing power then not being able to boot back up due to corrupted boot sector on their flash memory, I would want to avoid that on the next project which is why I am hesitant on making these lights.

    1 answer

    Reply 19 days ago

    I use standard cell phone charger power supplies from reputable brands. Five volts. They vary in amperage, from 700 milli-amps to 2 amps. I have had issues with a couple of the lights, but most of the photon boards have worked fine. The one that I did have issues with, Particle replaced it with a new one free of charge.


    Question 23 days ago

    Am I right to think that if I have a housing already, I don't need the UNIFUN lamp? It seems that the instructions call for replacing everything inside the housing other than the touch plate. If I made my own touch plate and housing, I wouldn't need the UNIFUN lamp at all would I? Also, to make my own touch sensor, it would just need to be any piece of metal soldered to a wire connecting to the resistor?

    1 answer

    Reply 19 days ago

    That is correct, the UNIFUN lamp simply acts as a housing for the light and as a touch plate for triggering the light. If you make your own touch plate and housing, then the UNIFUN isn't needed at all. You are correct with regards to your own touch sensor as well. You may need to adjust the touch settings to get the touch sensing to work well.

    I am not sure how proficient you are technically, but one thing you could look into which I have not yet tried is to purchase a touch sensor module instead of the resistor and use this in conjunction with my manual switch code. I have not personally tested this, but it may work better for your needs.

    Good luck!


    Question 5 weeks ago

    My touch light is reading random touch events, what would be the problem?

    3 answers

    Answer 5 weeks ago

    It sounds like the power supply is not providing clean enough power and random surges in the voltage are causing the light to register a touch event. I would recommend trying to get a different power supply, name brand such as Samsung or Apple. I would also try adding a surge protector to the outlet you are using to help provide cleaner power. Lastly, you can try tweaking these values to fine tune the sensing:

    Hope this helps!


    3 months ago

    Firstly thanks - I've managed to get to the point of having 2 lights connected and communicating! I would love it though if each light had it's own colour when pressed though (i.e i'm green and my mum is yellow and brother is purple etc) rather than a random colour appearing when a light is pressed. Has anyone managed to make changes to the code to allow for this? I'm not a programmer so I'm not sure where to start with this - or even if it's possible!

    1 reply

    Reply 6 weeks ago


    That's great! The code should already be set up to support predefined colors for each person. You can see this in the setup instructions for the code: The caveat here is that if the light has not been touched for 10 seconds, then it will go to the assigned color. If it has been touched within the last 10 seconds, then it will go to another random color.


    6 weeks ago

    What is the purpose of the resistor between D3 and D4 pins? Are those pins being used for something?

    1 reply

    Reply 6 weeks ago

    Hi ethanacm,

    I'm not super familiar with the touch-sensing functionality part of this project as that was borrowed from another project, but my understanding is that the resistor creates a measurable delay in the signal propagation between pins D3 and D4. This delay gets perturbed when a conductive field such as the human body comes into the vicinity of this connection, altering the time it takes for the signal to propagate. The code for this light measures a baseline for this delay and detects when a reading falls outside this expected range. You can see more on my blog post: Here's a new blog I just published that replaces the capacitive touch sensing with a manual switch: And here is the code for the touch light: Hope this helps!


    Question 7 months ago on Step 6

    Any way you can think to do this project for cheaper? I have a budget of about 100$ for two lamps, but I do have access to a 3d printer to make a housing.


    Question 8 months ago

    I plan on shipping one to my sister in Korea. Is there a simple way for her to update the Wifi should she move and need to add new credentials?

    1 answer

    Answer 8 months ago

    Hi Justin,

    The easiest way to update the wifi credentials is to re-flash the touch light while it is still connected to the network. You can see instructions for how to do this here:

    This assumes you know the new wifi credentials before you move to the new network. One trick you can use if you can set your smart phone in tethering mode is add those credentials to the touch light. Then any time you want to add new credentials to the touch light, you can put your phone into tethering mode and then flash your touch light with the new wifi creds.

    If you do not know the new network credentials and cannot use your phone to tether, then the best way to add new credentials is to set the light into listening mode ( and then follow particles instructions for connecting the photon to a wifi network using a browser ( or a smartphone (

    I hope this helps! Let me know how it goes!


    8 months ago

    I am working on assembling these and I am wondering why you are using 18 gauge wire. 18 gauge wire doesn't even fit in the holes on either the photon or the neopixels, those holes are closer to 26 gauge. There doesn't seem to be any major current going through them either. Is it just what was around?