Main Hardware Components:
ESP32 Wrover module from Lattice, equipped with 8Mb flash memory and PSRAM
MLX90640 Far Infrared Thermal Sensor Array Sensor
2.4-inch TFT display with a resolution of 320x240 ILI9341 driver
WCH Electronics CH340K USB - UART controller
TP4056 Lithium Ion Charger IC
MIC5219-3.3YM5 3.3v LDO
AO3401 P-channel MOSFET
ONsemi 2N7002DW Dual N-channel MOSFET
S8050 Transistor SOT-23
ON Semiconductor SS34 Schottky Diode 40V 3A SMA
SD card reader
Type C USB connector 16-pin
Resistors, capacitors, LEDs, cables, and other accessories
The most important device for a thermal imager is the thermal imaging sensor, mainly selected from the following three models: Panasonic's AMG8833, MLX90640, and Melexis' MLX90641. Although AMG8833 is the cheapest, its resolution is only 8x8, while MLX90640 provides a resolution of 32x24, and MLX90641 provides a resolution of 16x12. Considering the price and other factors, MLX90640 is chosen.
Schematic Design:
The complete circuit diagram of the DIY thermal imager is shown below.
KiCad was used to design the schematic and PCB for this project. The complete files can be found in the GitHub repository.
To facilitate understanding of all the content, the schematic is divided into different parts and all contents are marked accordingly.
Firstly, the power supply part. It consists of a USB C connector for power input and programming, a power path controller built with AO3041 MOSFET, a 3.3V regulator built with TP4056 charge controller, and a battery charging circuit. A voltage divider is used to measure the battery voltage. The power switch is connected to the enable pin of the 3.3V LDO.
Next is the main circuit, including the ESP32 SoC, USB to UART controller, and MLX90640 image sensor. The programming circuit uses the CH340K chip for USB communication. Dual N-channel MOSFETs are used for the automatic reset circuit. MLX90640 is connected to ESP32 via I2C. An additional I2C port is also provided for emergencies.
Lastly, the display, micro SD card, and button input. The display is connected to ESP32 using the hardware HSPI bus. The micro SD interface uses the VSPI pins on the ESP32 module. When detecting buttons, a simple button connected to GPIO and ground is used.
PCB Design
KiCad was used to design the PCB, and a simple two-layer layout is sufficient. This is the 3D view of the PCB.
Fully assembled PCB:
3D Printed Parts:
A cool-looking 3D printed enclosure was designed for the DIY thermal imager. All 3D printing part files can be downloaded from the provided GitHub/Thingyverse link.
How to Use the Thermal Imager:
On the main screen, you can see the thermal image itself as well as the minimum, maximum, and midpoint temperatures and the battery icon.
The following figure shows the setup screen of the DIY thermal imager. There are 7 options for settings, the selected option will be displayed in green text, while other options will be displayed in white text. You can change the selection by pressing the middle button. You can adjust the value of the selected option using the up/+ or down/- buttons.
The specific performance parameters of this thermal imager are as follows:
· Image sensor resolution: 32x24.
· Sensor field of view (FoV): 55°x35°
· Temperature measurement range: -40 to 300°C
· Operating temperature range: -40°C to 85°C.
· Adjustable refresh rate - 4Hz to 32Hz.
· 10 different colors.
· 5 different interpolation modes.
· Easy-to-use GUI.
· 2.4-inch TFT display with a resolution of 320x240.
· Thermal images can be saved to an SD card.
· Built-in battery and charging circuit.
The following are some images taken with the thermal imager