IoT: Thermography Hardware

This post in continuation of my previous post IoT: Thermography based operation monitoring where I talked about creating an IoT system to monitor an operation using a camera and an array of IR sensors.

In this blog post, I am going to start building upon a very good project here and use it as a baseline for our thermography hardware.

Skills/Tools needed

  1. Soldering kit/capabilities
  2. Drill and drill bits to create space in box for sensors
  3. Silicon putty for electronics and/or two-sided foam tape
  4. Screwdriver,  crimping tool, wire-cutter etc.

For collecting thermography data, we are going to use Raspberry Pi as the hardware platform. IR sensor of choice is 16×4 grid MLX90621 (Ordered on Digikey). For overlay purposes, we are going to use a raspi-camera which is easily available online.  I ordered a Raspberry Pi case online for assembling the complete system. The total cost of the system is going to be ~$100.

For deployment, Raspberry Pi Zero W + FLiR Lipton in an industrial housing is a good choice with the total cost of the system in the range of $300 per unit.

I am going to assume that there are enough tutorial on the internet (and here) for you to assemble and put everything together.

Some tips

  1. You’ll need space in your Raspberry Pi case, so order a case on the bigger side. I had to cut GPIO pins to allow me to fit everything together as I had ordered a smaller case (Looks nice, though).
  2. Use softer wires for connecting/Soldering on PCB: This allows easier cable management inside the case.
  3. Drill using small bit first and then go successively bigger till you can fit sensors.
  4. Use two-sided tape and silicon putty to fit affix/sensors in the case.
  5. Recommended is to use a heat-sink on the Raspberry Pi processor as it is going to get hotter in the case.

Finished hardware box looks like:

To make this hardware work, I am assuming that you have followed the original link posted in the beginning of this post. However, the code provided in the original link will not work. For latest code, please go to

I have made following updates:

  • The original code supports MLX90620 only, not MLX90621. Added MLX90621 support.
  • To compile code for MLX90620, please update define in mlxd.c
  • Enhanced debugging:
    • Please set following debug flags in mlxd.c
      • DEBUG: Prints intermediate debug values
      • DEBUG_TO: Prints information instead of sending to /var/run/mlx9062x.sock
      • 40
         #define VERSION "0.1.0"
         #define EXIT_FAILURE 1
         #define DEBUG 0
         #define DEBUG_TO 0
         #define MLX90620 0
    • Read socket data through the following command for debugging purposes
        sudo python
  • Bunch of bug fixes

Happy hacking!

Leave a Reply

Your email address will not be published. Required fields are marked *