Getting Started

Getting Started with the ProtoCentral MLX90632 Non-Contact IR Thermometer

Last updated Mar 6, 2026

Getting Started with the ProtoCentral MLX90632 Non-Contact IR Thermometer Breakout

Introduction

The ProtoCentral MLX90632 breakout board is a compact, non-contact infrared thermometer based on the Melexis MLX90632 sensor. It measures the average temperature of objects in its field of view using infrared radiation in the 2–14 μm wavelength range — no physical contact required. This makes it ideal for applications like body temperature screening, industrial process monitoring, food safety checks, and HVAC system monitoring.

The breakout board includes an onboard 3.3V regulator and logic level converter, so you can connect it directly to 5V Arduino boards. It also features dual Qwiic connectors for plug-and-play use with any Qwiic-compatible board or shield.

Note: This board is intended for research and development purposes only. It is not FDA, CE, or FCC approved for consumer or medical use.

Key Features

  • Non-contact IR temperature measurement — measure object temperature from a distance
  • High accuracy: ±0.2°C in the medical range (35–42°C), ±1°C general purpose
  • Resolution: 0.02°C
  • Object temperature range: -20°C to +100°C
  • Field of view: 50°
  • Qwiic compatible — dual Qwiic connectors for daisy-chaining
  • I2C interface — only 2 data wires needed
  • Onboard 3.3V regulator and logic level converter — works with both 3.3V and 5V systems
  • Tiny 3×3 mm sensor in a compact breakout form factor

What’s in the Box

  • 1× ProtoCentral MLX90632 IR Thermometer Breakout Board
  • 1× Qwiic cable

Specifications

Parameter Value
Sensor Melexis MLX90632
Interface I2C (up to 1 MHz Fast Mode Plus)
I2C Address 0x3A (default)
Object Temperature Range -20°C to +100°C
Ambient Operating Range -20°C to +85°C
Accuracy (medical, 35–42°C) ±0.2°C
Accuracy (general, 15–45°C ambient) ±1°C
Resolution 0.02°C
Field of View 50°
Supply Voltage (board) 3.3V to 5V (onboard regulator)
Sensor Supply 3.3V
Qwiic Connectors 2× (daisy-chainable)
Board Dimensions Compact breakout with standard 2.54mm headers

Pin Connections

Connecting to Arduino Uno

The MLX90632 uses the I2C protocol — you only need 4 wires:

MLX90632 Breakout Pin Arduino Uno Pin Wire Color (suggested)
SDA A4 Blue
SCL A5 Yellow
Vin 5V Red
GND GND Black

Connecting to ESP32

MLX90632 Breakout Pin ESP32 Pin Wire Color (suggested)
SDA GPIO 21 (SDA) Blue
SCL GPIO 22 (SCL) Yellow
Vin 3.3V Red
GND GND Black

Using the Qwiic Connector

If your development board has a Qwiic connector (SparkFun boards, Adafruit STEMMA QT, etc.), simply connect a Qwiic cable between the two boards. No soldering or loose wires needed — the Qwiic connector carries SDA, SCL, 3.3V, and GND.

You can daisy-chain multiple Qwiic sensors using the second connector on the breakout board.

Installing the Arduino Library

Option 1: Arduino Library Manager (Recommended)

  1. Open the Arduino IDE
  2. Go to Sketch → Include Library → Manage Libraries…
  3. In the search box, type “ProtoCentral MLX90632”
  4. Find “ProtoCentral MLX90632 Non-contact temperature Library” in the results
  5. Click Install

Option 2: Manual Install from GitHub

  1. Go to the ProtoCentral MLX90632 Arduino Library on GitHub
  2. Click Code → Download ZIP
  3. In the Arduino IDE, go to Sketch → Include Library → Add .ZIP Library…
  4. Select the downloaded ZIP file

Your First Temperature Reading

Open the example sketch: File → Examples → ProtoCentral MLX90632 → 1-ReadTemperature

Or create a new sketch and paste the following code:

#include "Protocentral_MLX90632.h"
#include <Wire.h>

Protocentral_MLX90632 ReadSensor;

void setup()
{
    Serial.begin(9600);
    Serial.println("Protocentral MLX90632 Read Data");
    Wire.begin();
    ReadSensor.begin();
}

void loop()
{
    float object_Temp = ReadSensor.getObjectTempF();
    Serial.print("Object temperature: ");
    Serial.print(object_Temp, 2);
    Serial.print(" F");

    float sensor_Temp = ReadSensor.getSensorTemp();
    Serial.print(" Sensor temperature: ");
    Serial.print(sensor_Temp, 2);
    Serial.print(" C");

    Serial.println();
}

What This Code Does

  1. Includes the librariesProtocentral_MLX90632.h for the sensor and Wire.h for I2C communication
  2. Creates a sensor objectReadSensor handles all communication with the MLX90632
  3. Initializes in setup() — starts serial communication at 9600 baud, initializes I2C with Wire.begin(), and configures the sensor with ReadSensor.begin()
  4. Reads temperatures in loop() — continuously reads two values:
    • Object temperature (getObjectTempF()) — the temperature of whatever the sensor is pointed at, in Fahrenheit
    • Sensor temperature (getSensorTemp()) — the internal die temperature of the MLX90632 itself, in Celsius

Expected Serial Monitor Output

Open the Serial Monitor at 9600 baud. You should see output like:

Protocentral MLX90632 Read Data
Object temperature: 92.48 F Sensor temperature: 27.35 C
Object temperature: 92.51 F Sensor temperature: 27.36 C
Object temperature: 97.82 F Sensor temperature: 27.34 C

The object temperature will change when you point the sensor at different surfaces — try pointing it at your hand (should read around 91–95°F / 33–35°C) versus a wall or desk (typically near ambient room temperature).

Tip: To get object temperature in Celsius instead of Fahrenheit, use ReadSensor.getObjectTemp() instead of getObjectTempF().

Troubleshooting

No output or garbled text on Serial Monitor

  • Check that the baud rate in Serial Monitor matches the sketch (9600)
  • Verify your wiring — SDA to A4, SCL to A5 on Arduino Uno
  • Make sure the board is powered (check for any power LED)

Temperature readings seem wrong or stuck

  • The sensor needs a few seconds to stabilize after power-on. Wait 2–3 seconds for accurate readings
  • Make sure nothing is blocking the sensor’s field of view — the IR window on the sensor should be clean and unobstructed
  • The object should be within the 50° field of view cone
  • Very shiny or reflective surfaces (polished metal, mirrors) can give inaccurate readings due to low emissivity

I2C communication errors

  • If using long wires (>20 cm), try adding 4.7kΩ pull-up resistors on SDA and SCL lines
  • Check for I2C address conflicts if other devices are on the same bus (MLX90632 default address is 0x3A)
  • Run an I2C scanner sketch to verify the sensor is detected

Readings are noisy

  • Ensure stable power supply — USB power from a laptop can be noisy
  • Keep the sensor away from heat sources that could affect the ambient temperature reading
  • Allow the sensor to thermally stabilize in its environment for 1–2 minutes before taking critical measurements

Resources

Licenses

  • Hardware: Creative Commons Attribution-ShareAlike 4.0 International
  • Software: MIT License