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)
- Open the Arduino IDE
- Go to Sketch → Include Library → Manage Libraries…
- In the search box, type “ProtoCentral MLX90632”
- Find “ProtoCentral MLX90632 Non-contact temperature Library” in the results
- Click Install
Option 2: Manual Install from GitHub
- Go to the ProtoCentral MLX90632 Arduino Library on GitHub
- Click Code → Download ZIP
- In the Arduino IDE, go to Sketch → Include Library → Add .ZIP Library…
- 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
- Includes the libraries —
Protocentral_MLX90632.hfor the sensor andWire.hfor I2C communication - Creates a sensor object —
ReadSensorhandles all communication with the MLX90632 - Initializes in
setup()— starts serial communication at 9600 baud, initializes I2C withWire.begin(), and configures the sensor withReadSensor.begin() - 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
- Object temperature (
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 ofgetObjectTempF().
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
- Arduino Library: github.com/Protocentral/protocentral_mlx90632_arduino
- Hardware Design Files: GitHub repository
- MLX90632 Datasheet: Melexis MLX90632 Datasheet (PDF)
- Qwiic Connector System: SparkFun Qwiic Connect System
Licenses
- Hardware: Creative Commons Attribution-ShareAlike 4.0 International
- Software: MIT License
