Contactless Temperature with the MLX90614

The MLX90614 measures temperature without ever touching what it's measuring: a thermopile detector inside the sensor absorbs infrared radiation that any object above absolute zero constantly emits, converts that radiation into a tiny voltage, and an onboard ASIC linearizes and factory-calibrates that voltage into a digital temperature reading you pull over I2C. No probe, no thermal contact, no waiting for a thermistor to reach equilibrium with the surface — point it, read it. The module reports two independent numbers on every request: the ambient temperature of the sensor's own package, and the object temperature of whatever is sitting in its field of view.

How does the MLX90614 measure temperature without touching anything?

Every object warmer than absolute zero radiates infrared energy, and the amount and spectrum of that radiation is directly related to its temperature — this is basic blackbody physics. The MLX90614's thermopile is a cluster of thermocouples that absorbs incoming infrared radiation and generates a small voltage proportional to the temperature difference between the object and the sensor die itself. That analog signal is amplified, digitized, and run through calibration coefficients stored in the chip's own EEPROM at the factory, which is why the MLX90614 doesn't need a manual calibration step in your firmware — it ships pre-calibrated per unit. The result is exposed over an I2C (SMBus-compatible) interface as two 16-bit registers you read directly: one for ambient temperature, one for object temperature.

Because the measurement is purely radiative, there's no thermal mass to wait on. A contact sensor like a thermistor or thermocouple has to physically reach the same temperature as what it's touching before the reading settles, which can take seconds on a solid object. The MLX90614 reads whatever is in its optical field of view essentially as fast as you can clock the I2C bus.

What's the difference between the ambient and object temperature readings?

The ambient reading comes from a temperature sensor built into the MLX90614's own package — it reports how warm the chip itself is, which under normal conditions tracks the surrounding air temperature reasonably well. The object reading is the actual infrared-derived measurement of whatever the sensor's lens is pointed at, and it has nothing to do with the air around the sensor. If you point the module at a hot enclosure inside a warm room, the ambient value stays close to room temperature while the object value jumps to reflect the enclosure's surface.

This distinction matters for accuracy: the object reading is affected by the emissivity of the target surface (how efficiently it radiates infrared versus reflecting it — shiny metal reads differently than matte plastic at the same real temperature), while the ambient reading is a straightforward die temperature and isn't affected by what you point the sensor at. Reading both values together, as our generated firmware does, is what tells you whether a temperature difference is coming from the object or from a drifting ambient baseline.

How do you wire the MLX90614 to an Arduino Uno?

The MLX90614 is I2C-only — it needs exactly four connections to an Arduino Uno, and the pins are fixed by the Uno's hardware I2C bus rather than being freely assignable:

  • VCC on the module → 5V on the Uno
  • GND on the module → GND on the Uno
  • SDA on the module → A4 on the Uno
  • SCL on the module → A5 on the Uno

That's the complete wiring — no other GPIO pins are involved, because the sensor communicates entirely over the two-wire I2C bus. The default I2C address for the MLX90614 is 0x5A, so it coexists on the same bus as other I2C peripherals (an OLED display or an RTC module, for example) without conflict as long as nothing else on the bus also claims 0x5A.

What can you build with a contactless temperature sensor?

A non-contact infrared sensor is useful anywhere touching the target is inconvenient, unsafe, or impossible. Practical builds include:

  • Non-contact handheld thermometers — point-and-read temperature tools for checking surfaces, liquids, or enclosures without a probe.
  • Industrial hot-spot detection — spotting an overheating motor bearing, an overloaded electrical connection, or a friction point on moving machinery before it fails.
  • HVAC and duct monitoring — logging supply and return air temperatures, or checking for cold spots on insulation and ductwork.
  • Process and kiln monitoring — tracking surface temperature on ovens, 3D printer beds, or soldering stations where a contact probe would be impractical or would interfere with the process.

One honest caveat: a hobbyist MLX90614 module is a real, factory-calibrated infrared sensor, but it is not a certified medical device. Clinical and consumer forehead thermometers that make fever-screening claims go through medical-device calibration and regulatory certification that a breakout-board sensor simply hasn't been through. Use it for engineering, monitoring, and automation projects — not as a stand-in for a medical thermometer.

Watch it built live

We ran the exact build request through Compoden's AI shopping assistant at compoden.com: "I want to measure temperature without touching the object using a MLX90614 infrared sensor with an Arduino Uno."

The assistant's first reply focused entirely on the board, not the sensor: "Use this board for Arduino-compatible prototyping on a budget. Here are the 5 we stock: Arduino Uno R3 CH340G — Rs.280 (clone), Arduino Uno R3 CH340G ATmega328P Board — Rs.230 (clone), Arduino Uno R3 Compatible Development Board (ATmega328P DIP) — Rs.420 (compatible), UNO R3 WiFi ATmega328P+ESP8266 4MB, CH340G Compatible — Rs.490 (clone), Arduino Starter Kit with Sensors & Modules — Rs.781 (compatible)." We followed up asking it directly to add the MLX90614 sensor itself to the build, and the assistant moved into wiring guidance for the board instead: "Here's how to wire your current build around the Arduino Uno R3 CH340G — your parts stay exactly as they are." The screenshot below is the real widget output from that exchange.

Compoden AI shopping assistant responding to an MLX90614 with Arduino Uno build request

To be transparent: the storefront assistant never carded the MLX90614 sensor itself in either turn of this conversation, even though the part is real. We checked the catalog directly and Compoden does stock a genuine MLX90614 IR Thermometer Module for Rs.770, in stock at the time of writing. The parts table below uses that real listing rather than anything the chat widget surfaced, so every price and link you see is verifiable against the live catalog.

Watch the firmware get generated

Separately, we ran the wiring-and-firmware request through Compoden's VoltIQ build tool: "I'm using an MLX90614 infrared temperature sensor over I2C with an Arduino Uno. Write the full firmware to read and print both ambient and object temperature to the serial monitor." This time the parts-matching step correctly identified the sensor: the build log reported "Checking the catalog — 5/5 matched", listing the MLX90614 IR Thermometer Module at Rs.770 alongside the Arduino Uno board, jumper wire, hookup wire, and a power adapter — all flagged in stock.

VoltIQ firmware editor showing generated Arduino code for the MLX90614 sensor

The generated build log described the sketch directly: "The sketch will read ambient and object temperatures from the MLX90614 sensor connected via I2C (A4/A5) and print them to the serial monitor at 9600 baud. Upload this sketch to your Arduino Uno using the Arduino IDE. Install via Library Manager: Adafruit MLX90614." The firmware tab produced real, compilable source built on the Adafruit MLX90614 library — the includes and setup read:

#include <Wire.h>
#include <Adafruit_MLX90614.h>

// MLX90614 sensor uses I2C.
// Arduino Uno A4 (SDA) -> MLX90614 SDA
// Arduino Uno A5 (SCL) -> MLX90614 SCL
// Arduino Uno 5V -> MLX90614 VCC
// Arduino Uno GND -> MLX90614 GND

Adafruit_MLX90614 mlx = Adafruit_MLX90614();

void setup() {
  Serial.begin(9600);
  while (!Serial) {
    ; // Wait for serial port to connect. Needed for native USB port only.
  }

The build log also surfaced one honest caveat worth repeating rather than hiding: it flagged that the wiring diagram had assigned a digital pin to the MLX90614 that the generated firmware doesn't actually use, since the sensor only needs the I2C bus (A4/A5) and no separate digital pin. It called this out explicitly rather than shipping a silent mismatch, and offered to regenerate the wiring to match. That's the kind of build-time check worth knowing about before you wire anything up from a diagram — always cross-check a generated wiring diagram against the actual pins referenced in the code.

Get everything in this build

Part Role Price Buy
MLX90614 IR Thermometer Module – Non-Contact Temperature Sensor Infrared temperature sensor Rs.770 Add to cart
Arduino Uno R3 CH340G ATmega328P Board – Arduino Compatible Microcontroller board Rs.230 Add to cart
Breadboard Jumper Cables – 20 Units Red & Black Wiring Rs.40 Add to cart
23AWG Single Strand Breadboard Wire (Blue, 1m) – Solid Core Jumper Wire Hookup wire Rs.10 Add to cart
5V 2A Adapter (Without Cable) – 10W Power Supply Power supply Rs.170 Add to cart
Total Rs.1220 Add all to cart

Built and Backed by Compoden

Every part in the table above is a real, currently stocked listing on compoden.com, checked directly against the live catalog rather than assumed from a chat reply. Compoden ships Arduino-compatible boards, sensors, and prototyping accessories across India, and the AI build tools referenced in this article — the storefront assistant and the VoltIQ firmware generator — are the same tools available to any customer building this project today. Where those tools didn't behave perfectly, as with the storefront assistant's board-only replies above, we've said so directly rather than editing the transcript.

Frequently asked questions

Does the MLX90614 need to touch the object to measure its temperature?
No. It measures the infrared radiation the object emits from a distance, using a thermopile detector — there's no physical contact involved.

What's the difference between the ambient and object temperature values it reports?
Ambient is the temperature of the sensor's own package, which approximates the surrounding air. Object is the infrared-derived reading of whatever is in the sensor's field of view, and the two are independent values.

Which Arduino Uno pins does the MLX90614 use?
Just the I2C bus: SDA to A4, SCL to A5, plus 5V and GND. No other digital or analog pins are required.

Is the MLX90614 accurate enough for medical fever screening?
No. It's a genuine, factory-calibrated infrared sensor, but hobbyist modules aren't certified to medical-device accuracy or regulatory standards the way clinical thermometers are. Use it for engineering and monitoring projects, not medical diagnosis.

Back to blog