IR Thermometer With Mlx90614

Introduction: IR Thermometer With Mlx90614

About: Part time tinker, Brute Force programmer. My codes are often big but are functional.

This code will read the ir temperature and ambient temperature from MLX90614 and output it onto ssd1306 based i2c-128x32 oled

It will also keep a record of min and max temperature seen by it, and it also has a 'hold' button.

Step 1: Materials Required

Arduino (preferably nano)


3 push button

an ssd1306 screen

Step 2: Code and Circuit

The code was written in arduino ide,for arduino nano with atmega328 but can be adapted for other boards with ease.

the 2 circuit diagrams differ depending upon the fact whether your mlx90614 can handle 5 volts or 3 volts

the 3 buttons do th following functions

"hold current temperature and keep displaying it after pause symbol on screen"

reset min temperature which is displayed after arrow down symbol

rereset max temperature which is displayed after arrow up symbol

the ambient temperature is displayed after double tilde symbol

I've left a lot of comments in the code so that ,hopefully those who want to modify it, will find it easy to do so.

Be the First to Share


    • Pocket-Sized Speed Challenge

      Pocket-Sized Speed Challenge
    • Super-Size Speed Challenge

      Super-Size Speed Challenge
    • Audio Challenge 2020

      Audio Challenge 2020

    2 Discussions


    Question 1 year ago on Step 2

    If there is multiple mlx90614 sensors are connected how can you read temperature from a specific one?

    Suraj Grewal
    Suraj Grewal

    Answer 1 year ago

    Sorry for being so slow to answer and yet being inadequate.
    How many sensors do you need and what temperature range? I'll have to walk you through the process accordingly.
    >You could also use multiple soft i2c ports

    >you could use any method that resolvs address collision

    >The easiest would be to have another sensor like mlx90615 because it has a completely different address to begin with.

    >You have to program individual sensor first, to give them each, a unique i2c address. There are high chances you'll brick it and you'll have to heavily modify the adafruit library.

    >You can also set your sensor eeprom to output pwm signal instead of I2c and use a filter to use it as analogue sensor.

    >Or have separate micro-controller to each sensor.

    For changing EEPROM, refer to chapter 8.3.3,, 11.2 on mlx90614's datasheet.

    I also suggest asking the same on EEVBLOG forum.