Build a Thermal Flashlight - Light Painting With Temperature





Introduction: Build a Thermal Flashlight - Light Painting With Temperature

Inspired by the Public Laboratory and having just finished a round of college applications, I decided to experiment with thermal imaging on the cheap.

Thermal cameras are expensive. Even at low resolutions, it is not uncommon for a decent thermal camera to cost over $10,000. However, for only $20, you can buy an infrared thermometer that reads the average temperature over a small area. If we could turn that single area into a color and use a long exposure photography to "paint" the scene with that color, we could create something very similar to a proper thermal image.

This is not a new idea. The Public Laboratory has come out with a design for something that does this, but I have yet to see one make its way off of a breadboard. I decided to take the project to the next level and make a real, bona fide thermal flashlight. Here's how I did it.

Step 1: Materials

Materials: If you need any of the Sparkfun parts in larger quantities, I highly recommend buying from a bigger distributor like Digikey. You'll save a bunch of money.

Step 2: Making the RGB LED Assembly

First I cracked open the flashlight and had a look inside. Then I removed the LED assembly, which required removing three screws. Save the old LED assembly if you want. We don't need it, but it's a useful source of ultra-bright LEDs.

Now we have to start making our own RGB LED assembly. Remove the reflector from the flashlight's housing so we can work on it. One interesting thing to keep in mind - even though the reflector is made of plastic, it has a very conductive coating. Make sure you don't short anything against it by accident.

Place all of the 5mm LEDs in the outer ring of the reflector. We are leaving the center empty for the infrared thermometer. Also, remove the plastic lens from the flashlight cap. Using the placed LEDs as a guide, insert the leads through your piece of perfboard. Solder the LEDs in place, making sure they are all in the same orientation relative to one another. In this case, the blue pin of the RGB LED is always on the right (the long pins are the common anodes of the RGB LEDs).

Step 3: Wiring the LED Assembly

We are wiring all of the LEDs in parallel. Bend down the same pin on each LED and solder each to the core of a piece of solid core wire to connect everything together. Add a couple of pieces of electrical tape to insulate these connections from the next layer. Bend down the next pin. Lather, rinse, repeat. Note that I didn't add 100 ohm current limiting resistors to each of the LEDs. This would have been advisable, but I got away with it by adding a 15 ohm resistor in series with the red, green, and blue channels. That was not ideal, since I'm trusting that each of the LEDs will draw its correct share of current (unfortunately, that almost certainly is not the case). Be smarter than me and add your current limiting resistors to each LED during this stage.

Inside the plastic flashlight housing, break off the two plastic flaps on either side of the power switch. We need the room.

Step 4: Wiring the Sensor

Solder wires to each of the pins on the thermometer. I used heat-shrink tubing to make sure nothing shorted out. Make sure to remember which wire goes to which pin (relative to the little bump on the thermometer).

Wire up the thermometer as described by the diagram (borrowed from here).

Connect everything to the Arduino: the pins you connect the RGB LEDs to have to be PWM pins since we need gradations of brightness with each color. Where you connect everything depends on your code (see next step). Two pins from the sensor went to analogs 4 and 5, and each color of the LEDs should go to pins 3, 5, and 6 through the NPN transistors to ground (I made a mistake by not doing this -- Ugifer correctly pointed out that I was drawing too much current from the Arduino otherwise). If you don't know what that means, check out this diagram. Power went to the common anodes of the LEDs. Solder the power switch of the flashlight between the 9V and the Arduino.

Step 5: Programming and Final Assembly

I used the code generously provided by the Public Laboratory. It does exactly what we need it to!
Carefully place everything into the flashlight housing making sure no boards can short out against each other. You're done!

As always, please feel free to ask me any questions. Let me know if you build your own thermal flashlight - I'd love to see it!

The Photography Contest

First Prize in the
The Photography Contest

SciStarter Citizen Science Contest

First Prize in the
SciStarter Citizen Science Contest

Make It Glow

Second Prize in the
Make It Glow



    • Oil Contest

      Oil Contest
    • Creative Misuse Contest

      Creative Misuse Contest
    • Water Contest

      Water Contest

    40 Discussions

    I love this instructable, but it hits one pet peeve near the end - please don't put whole Arduino boards into a small project that doesn't need to be interfaced with a PC, or encourage other people to do so. It's a wasteful abuse of the board's functions. Development boards are meant for programming microcontrollers, such as the ATMega on that Arduino board, and prototyping circuits controlled by it.
    You should get a single ATMega for that function (it'll probably just cost you a couple of dollars over there), use the Arduino to program it, then take it out and connect it to your perfboard.

    See for an example of how to do this, and for the corresponding uC pins to connect to.

    3 replies

    can i ask something?
    you mentiond that atmega168 is recommend, can i use atmega32u4?

    I completely agree! In fact, I had a standalone ATMega328 on some perfboard ready to embed in the project; I just didn't have a 3.3v regulator on hand for the IR sensor and didn't feel like running to the store in the middle of the project. But 99% I completely agree with you.

    Congrats! You are putting the power of engineering into the hands of hobbyists. 
    (I still need to learn how to make a dedicated processor and am looking forward to learning how to make this with the ATMega chip previously mentioned.)

    go to for thermal cameras for around $200. They connect to smart phones with a .32 megapixel image.

    this is really nice project ,i am starting to collect the material to make this. I would like to ask if i could use this or this instead of the thermal sensor because i have some sensor movement from some alarm control system .

    There's now a link in step 4 to this schematic:
    That should give you the idea.

    This looks a great project, but can I just check something? You aren't trying to drive 8 LEDs in parallel directly off your Arduino are you? I don't see any transistors listed in your BoM but since an LED typically draws up to 20mA (per colour) and your Ardu' can source up to 40mA per pin max, you can't drive more than two off a pin without either sacrificing brightness or burning up your controller.

    For 8 LEDs, you want something that can drive at least 8 x 20 = 160 mA per colour so a standard 2N3904 (200mA) per channel should be fine. My guess is that it will be much brighter using these because the Arduino is probably limiting your current at the moment.

    Hope I'm not just being dense and missing something in the write-up!

    Fab' project BTW.


    2 replies

    Wow - you've caught me making the most n00bish mistake I've made in a while! You're totally right. I actually calculated the necessary current for the LEDs a while ago, but I thought that the Arduino could handle much, much more than 40mA. I'm updating the instructable to use three transistors. Thanks! Especially embarrassing since I'm designing a standalone PCB for this project...

    Glad to help - and good to catch that before the PCB goes to the fab' shop!

    What is the size of the 'cone of vision' of that sensor? you have to put the flashlight within 1 foot of a wall you want to paint with light, or can you stand further away and it will still work? Thank you for posting this!

    SUPER FREAKIN AWESOME! it looks like your getting a bit of distortion. Have u thought of polishing the LEDs flat?

    Undoubtedly a great idea and instructable.
    However, it appears the people that already "know about Thermal measurement" are the ones jumping up and down in joy.
    For the rest of us,,,,, well,,,,, after spending some time investigating now I understand the theory and purpose.
    So, question #1: do I also need a camera? which type of film?
    question #2: does this work if I point it to my house at night and see the thermal situation? or is it too large an object for this device?
    As somebody else suggested, you need to explain the theory and purpose, the construction (you did), and the practical application or usage of your ‘able.
    Otherwise it is like “preaching to the choir”, everybody else may be left out….

    2 replies

    Hi there! I talk about the theory a bit in the intro step. There is no special camera or type of film you need, as long as it has a long shutter speed mode (around 25-30 seconds is usually ideal). As for your second question, the sensor has a cone of vision that reads the average temperature inside the cone. The sensor could read the average temperature of your house, but the LEDs would not be bright enough to "paint" the whole thing at once (you would have to do it piece by piece). It doesn't seem like many people feel "left out" -- just look at the other comments!

    Thanks for your reply.
    could anyone describe, if you have done it, the experience in doing a full external house thermal study? That would be of great help and enticement.
    If you could document it with some pics or video, great.

    This is supercool! Next, sync it up with the bulb setting on your camera to take pictures with the /perfect/ amount of exposure time!

    1 reply

    I love this! It would be so cool to take several of the and form a hanging ball lamp for a party! The changing colors according to temperature plus several of them hanging outside would look awesome!

    Awesome! When I find time I want to make one of these bad boys. Nice job!