ODROID-Go Thermal Infrared Camera

This is a simple IR (infrared) thermal camera project for the ODROID-GO handheld ESP32 system. It allows saving of data to an SD card as well as having a basic Bluetooth interface to wirelessly get data off the camera to a computer, tablet or mobile phone. It is based on the MLX90640 32x24 pixel infrared thermal array modules that you can get relatively inexpensively from many online shops. Below is a photo of this camera in action.

Figure 1: The thermal camera in action

Using the Arduino code

There are two ways to use the thermal camera code. The really simple way is to go to the 'FW file' folder and copy the 'goircam.fw' file to the firmware folder on your ODROID-GO SD card. Then, when you turn the ODROID-GO on, while holding down the B button, you should get an option to load the camera firmware. Obviously you will need the camera built and attached for the firmware to run.

The second, more advanced, way is for people who want to use the Arduino IDE to edit or build the firmware as an Arduino Sketch. To do this, use the files in the 'Arduino code' folder as you would do for coding any other Arduino project you have. All of the details are available on the ODROID-GO Wiki site for setting up the Arduino IDE for the ODROID-GO.

If you are using the Arduino IDE method and want to create a firmware file, as described on the ODROID-GO Wiki site, the graphics for use with the MKFW utility are included in the 'Graphics' folder.

Building the thermal camera module

Building the camera is very simple, as it uses just the MLX90640 module, with wires for ground, VCC, SCL and SDA (I2C). According to the ODROID-GO Wiki, the header pinout is as follows:

Header Pin     Function
1       GND
4       SDA
5       SCL
6       VCC
Once you have things wired up and tested, the simplicity of the circuit makes it very easy to solder up some header pins onto a piece of veroboard to make a more robust connector for the ODROID-GO header socket. Below is a photo of how I did that.

Figure 2 : A photo of the circuit

I put the header pins on top of the veroboard and soldered the wires to the track on the back, which meant the wires did not obstruct the connection, although you could just use a bigger piece of veroboard, too.

Making a 3D printed enclosure

The 'Case 3D model' folder includes a couple of files I used to make a 3D printed enclosure. One of them is a ready-to-print STL file. This file is designed for the Pimoroni MLX90640 module I used. If that does not work for your needs, or the MLX90640 module you have, the OpenSCAD file is included so you can make a customized version for your project. The camera module fits, as shown in the photo above. This photograph also shows the correct orientation for the module. By cutting the veroboard to the right size, it fit perfectly into the back of my enclosure, leaving the header pins properly positioned (see Photo 3). The veroboard was glued in place and it was necessary to check the pin’s alignment before the glue cured.

Figure 3 : A photo of the back of the enclosure showing the header pins glued in


The ODROID-GO Wiki is a useful resource for all Go things: https://wiki.odroid.com/odroid_go/odroid_go

The Wiki page for a 16x2 I2C LCD project contains details of how to connect an I2C module to the ODROID-GO header: https://wiki.odroid.com/odroid_go/arduino/09_16x2lcd_i2c

The 3D printed case can also be downloaded from Thingiverse: https://www.thingiverse.com/thing:3648653


Be the first to comment

Leave a Reply