Contact-Less Thermometer
Open source project


1- Project presentation

In response to Covi’d 19 pandemic, RAS Tunisia Chapter is sharing the design of a Low cost contact-less temperature measurement system for human uses.

The human body temperature   is reported by OMS by one the key symptoms that Doctors are considering for patient admission procedures.

In Tunisia A Covid’19 admission system was installed at Tunisia hospital, the first parameter for patients pres-selection is temperature high that 38.6 Celsius.

The proposed device is a los cost contact-less thermometer which may be build and offered to local hospitals.  The system can be assembled form a set of open hard solutions as shown is fig1. It is based on a MLX9067 Sensor.

Fig 1. Mechanical frame design


Fig 2. System assembly using open hardware devices


The needed components for the project are list in table 1 :

Description Reference
Infra red temperature sensor MLX90640 32×24 IR array
Mini Arduino board  Arduino Mini 05, Arduino Mini Pro Amtega 328 processors or equivalet
Battery 9 V Dc
Low cost LCD display 16×2 LCD Display Module with HD44780 Controller


The schematic design of the device is given in fig 2,  the source file of this sheet is available on : <link>


Fig 3 : Project schematic view


2- The MLX90640 Senor

The MLX90640 is a fully calibrated 32×24 pixels thermal IR array in an industry standard 4-lead TO39 package with digital interface.
The MLX90640 contains 768 FIR pixels. An ambient sensor is integrated to measure the ambient temperature of the chip and supply sensor to measure the VDD. The outputs of all sensors IR, Ta and VDD are stored in internal RAM and are accessible through I 2 C. Main characteristics of the sensor are listed below.







Fig 4. MLX90640
Source (MLX9064 DataSheet


3- Codes & Bib

A couple of libraries are available for the integration of the MLX9064 senor, a DR Robot library and also a Adafruit library, integration proposed here is made using both codes.

The code allowing the measure the temperature and based on adafruit library is the following:

Key issues are :

  1. Insert the library :
    #include <IR_Thermometer_Sensor_MLX90614.h>
  2. Instantiate a sensor :
    IR_Thermometer_Sensor_MLX90614  MLX90614 = IR_Thermometer_Sensor_MLX90614();
  3. Setup the sensor :
    MLX90614.begin();          // Sensor configuration
  4. Get value from the senor in Celsius  :
    temp = MLX90614.GetAmbientTemp_Celsius();

The full device code allowing to gather and display a temperature on LCD is listed below :

// Covid’19 response code
// free to copy free to use free to replicate
// by RAS Tunisia Chapter Voluntees
// Mehdi Mili & IEEE_Senior_Anonymos_Member
#include <LiquidCrystal.h>
#include <Wire.h>
#include <IR_Thermometer_Sensor_MLX90614.h>
float temp=0;
float Covid = 38.5;
int sens = 10 ; // a digital input for the sens Button
//                      Rs  E   D4  D5  D6  D7
LiquidCrystal lcd(4,  5,  9,   8,   7,   6);
IR_Thermometer_Sensor_MLX90614 MLX90614 = IR_Thermometer_Sensor_MLX90614();void setup() {
MLX90614.begin();  // Sensor configuration
Serial.begin(9600);  // Serial communication config
lcd.begin (16,2);  // dispaly on classical cristal lcd 2 lines 16 caraters/line
pinMode (sens,INPUT);
void display (int line_lcd, int col_lcd, float value)
// line_lcd for cursor line 1 or 2
// col_lcd for cursor position 0..15
lcd.print(“Temp = “);
Serial.print(“Temperature = “);
void loop() {
// Read value from sensor
if (sens) { // read only if the botton read is pressed.
temp = MLX90614.GetAmbientTemp_Celsius();
// Serial.println(temp); // remove first comments foor tests
// display value on LCD starting at 0.0
display(0,0, temp);if (temp>Covid){
lcd.print(” !”);
Serial.println(” !”); }
else {
display(0,0, 0);

The source code can be forward here : <link>

4- Boards implementations


5- Mechanical frame design