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.
Materials:
- Infrared Thermometer – MLX90614
- 0.1uF Ceramic Capacitor
- 2 4.7k Resistors
- 3 1k Resistors
- 8 RGB LEDs Note: Previously, and in the images below, you will see me using common cathode (negative) LEDs. To make your life easier with the transistors, use these common anode LEDs.
- Dorcy LED Flashlight
- 3 NPN Transistors
- Arduino, any will do
- 9V Battery Clip and Battery
- Perfboard
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.
First I cracked open the flashlight and had a look inside.
Then I removed the LED assembly, which required removing three screws.
Below is the old LED assembly. 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).
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.
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 here - the link provides a very easy to understand diagram.

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 channel (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 — someone 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.
I used the code generously provided by the Public Laboratory. It does exactly what we need it to.
Connect the power switch of the flashlight between the 9V and the Arduino.
Carefully place everything into the flashlight housing making sure no boards can short out against each other. You’re done!
This was a really, really fun project to build. The parts aren’t that expensive, and with some electronics experience you should be able to complete this in an afternoon or two. Set up your camera for a long exposure shot (I used 25-30 seconds for the photo above), and paint the room! The results are surprisingly good.
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!
UPDATE: Discussion on HN, Instructables


















Pingback: MAKE | Light Painting with a Thermal Flashlight
I wouldn’t recommend wiring those LEDs in parallel: http://electronics.stackexchange.com/questions/22291/why-exactly-cant-a-single-resistor-be-used-for-many-parallel-leds
Yep, and I mention that in the post. However, there’s nothing wrong with wiring them in parallel, you just need to put a resistor on each LED to make sure it’s drawing the amount of current it should be.
Pingback: Light Painting with a Thermal Flashlight
Is there some reason you didn’t mount the IR sensor on the same board with the LEDs?
Yes – the reflector is conductive and the leads on the IR thermometer don’t reach the board on their own (and mounting the sensor closer to the board would mean more opportunity for the reflector to interfere with the cone of vision of the sensor). Also the center of the perfboard where the sensor would attach was obscured by the insulation from the LED connections. After wiring the LEDs up, it just seemed easier to do it this way. With a little more planning, mounting to the board as you suggest might make more sense.
Pingback: An absurdly clever thermal imaging camera
That’s a great idea, thanks for sharing it publicly. I rented a FLIR thermal camera about a year ago to check for air leaks and hot and cold spots in my home and it was a bit expensive. It got me thinking of ways to do scanning or something along those lines with a cheap single point IR thermometer sensor, but this seems like a good solution for basic temp mapping.
Pingback: An absurdly clever thermal imaging camera | Daily IT News on it news..it news..
Fantastic build! What speed have you been sampling from the sensor? Did you find any limit on how fast you can “scan” with it? How fast is your Arduino interface gathering input? Once again, great build!
Could this be replicated but with RB leds? Blue for cold, and red for warm?
No, without the green, the heat will run away.
Pingback: DIY Project Turns Flashlight into Thermal Imaging Tool « Merve Demir
Pingback: DIY Project Turns Flashlight into Thermal Imaging Tool | georgegrigorita.instant-automation.com
Pingback: – An absurdly clever thermal imaging camera
Pingback: DIY Project Turns Flashlight into Thermal Imaging Tool -
Thank you for the effort you put into devising this tool. I’m going to try and build one this weekend
I’ll be hacking up a different model flashlight, though.
Awesome project gotta try it asap
If you use the Audruno to drive an X-Y laser mirror assembly in reverse, you might be able to directly scan a grayscale temp image using the point-temp sensor.
Then it would just be a matter of converting grayscale to color with a PC program or inside the Audreno.
That would eliminate the camera and color LED’s, but it’s hard to find a cheap X-Y laser mirror servo stage.
Please do Kickstarter project! I will buy this one for sure
If you want to buy something similar instead of building one yourself.
http://www.amazon.com/Black-Decker-TLD100-Thermal-Detector/dp/B001LMTW2S
Brilliant!!
Did you use the Sparkfun IR sensor for this, I bought two of them but couldn’t get them to work for me.
Pingback: Light Painting with Temperature | Janean Super Store
Pingback: Blue Note Tech Blog » Light Painting with Temperature
Pingback: Best Blogs - Light Painting with Temperature
Congratulations on one of the most interesting and creative projects I ever seen. I’ve been using the TPA81 8+1 thermal sensor.
I do a lot of plant/botany research and look forward to using you project on plants and for (trying to) micro scan leaves with a smaller unit. I see so many lab possibilities with this using certain narrow bandpass interference optical filters.
Respect out to you for sharing this highly useful project.
I don’t think your dog likes being scanned!
Pingback: Light Painting with Temperature | Max Justicz | AD 100: Responsive Arts