Thermografree is the first open source, medium resolution, and broadband forward looking infrared (FLIR) camera. It can be used as a thermographic camera, or for scientific imaging applications in the 2-18 um range.
This thermal camera is based on a Heimann Sensor thermopile array module, detailed in
docs/HeimannArrays9-9-16.pdf and the sample datasheet (
docs/HTPA 32x32d L2.1_0.8 (Hi)S Rev2 Datasheet.pdf). Previous attempts at open source thermal cameras have been based on the Melexis MLX90621, an earlier and lower resolution thermopile array. For comparison, the datasheet for this part is also available at
Code is in
src/, and should work out of the box on a Raspberry Pi with I2C enabled. If you are using an older (2015-2017) verison of the device, you will have to change the HTPA initialization to add an explicit
dualcam.py. Installation instructions are below.
OpenSCAD models for 3D printing are in
case/. The case and hardware (including the screen, cabling, and battery) are very minimum viable prototype, and should not in anyway be taken as "best practices" hardware advice.
Research on noise characteristics of the camera and possible uses/limitations for gas sensing are archived in
The hardware involved is extremely straightforward: a Raspberry Pi communicates with the Heimann sensor over I2C and displays the images to the user. The sensor should be connected to the Raspberry Pi GPIO pins 3 and 5, and can be powered from the 3.3V and ground pins of the GPIO port. This does not interfere with the use of SPI for touch screen communication. The system is powered from a USB power bank.
Bill of materials
- Raspberry Pi Zero (or Raspberry Pi)
- LCD screen (e.g.) and HDMI cable
- Raspberry Pi camera (e.g.)
- Heimann HTPA32x32dL3.6/0.9 (purchased through Boston Electronics)
- USB power bank (e.g.) and USB cable with switch
- Case (3D printed files included in repository)
- Bracket for attaching Heimann sensor to case
The application consists of a Python class for interfacing with the module (
htpa.py) and a GUI (
dualcam.py). The GUI allows for control of the sensor clock frequency, current, and bias. The default settings are the settings used for the module factory calibration, and seem to produce the best results.
The Python software has several pre-requisites. To install them on your Raspberry Pi, run the following commands while you have an internet connection.
sudo apt-get install python-pip ipython sudo apt-get install python-numpy python-scipy sudo apt-get install libopencv-dev python-opencv sudo pip install periphery picamera imutils pillow
Follow Adafruit's tutorial.
Enabling I2C repeated starts
The I2C hardware on the Raspberry Pi needs to be configured to support "repeated starts." To do this, add the following line to
options i2c-bcm2708 combined=1
If you are not using a Raspberry Pi, enabling repeated starts will likely require a different configuration. For more information, see the blog post I wrote on this topic.
- The sensor calibration programmed into the EEPROM at the factory does not seem to match the noise profile of the images captured from the device.
- The HDMI cable connection to a Raspberry Pi Zero is a hack. If you use the screen documented here, we suggest a Raspberry Pi 3.