

The SHT31, manufactured by Sensirion, is a digital humidity and temperature sensor designed to deliver highly accurate measurements of relative humidity and temperature. It features a high level of precision, low power consumption, and a fast response time. The SHT31 is equipped with a digital I²C interface, making it easy to integrate into a wide range of applications.








The SHT31 sensor is designed to provide reliable and precise measurements under various environmental conditions. Below are its key technical details:
| Parameter | Value |
|---|---|
| Supply Voltage (VDD) | 2.4V to 5.5V |
| Average Current Consumption | 2 µA (standby), 150 µA (active) |
| Humidity Measurement Range | 0% to 100% RH |
| Humidity Accuracy | ±2% RH (typical) |
| Temperature Measurement Range | -40°C to +125°C |
| Temperature Accuracy | ±0.3°C (typical) |
| Communication Interface | I²C (up to 1 MHz) |
| Response Time (τ63%) | 8 seconds (typical) |
| Dimensions | 2.5 mm x 2.5 mm x 0.9 mm |
The SHT31 is typically available in a 4-pin package. Below is the pinout description:
| Pin Number | Pin Name | Description |
|---|---|---|
| 1 | VDD | Power supply (2.4V to 5.5V) |
| 2 | GND | Ground |
| 3 | SDA | Serial Data Line for I²C communication |
| 4 | SCL | Serial Clock Line for I²C communication |
The SHT31 is straightforward to use in a circuit, thanks to its I²C interface. Below are the steps and considerations for integrating the sensor:
Below is an example Arduino sketch to read temperature and humidity data from the SHT31 sensor using the Adafruit SHT31 library:
#include <Wire.h>
#include "Adafruit_SHT31.h"
// Create an instance of the SHT31 sensor
Adafruit_SHT31 sht31 = Adafruit_SHT31();
void setup() {
Serial.begin(9600); // Initialize serial communication
while (!Serial) delay(10); // Wait for serial monitor to open
// Initialize the SHT31 sensor
if (!sht31.begin(0x44)) { // 0x44 is the default I²C address
Serial.println("Failed to find SHT31 sensor!");
while (1) delay(1); // Halt execution if sensor is not found
}
Serial.println("SHT31 sensor initialized.");
}
void loop() {
// Read temperature and humidity
float temperature = sht31.readTemperature();
float humidity = sht31.readHumidity();
// Check if readings are valid
if (!isnan(temperature) && !isnan(humidity)) {
Serial.print("Temperature: ");
Serial.print(temperature);
Serial.println(" °C");
Serial.print("Humidity: ");
Serial.print(humidity);
Serial.println(" %");
} else {
Serial.println("Failed to read data from SHT31 sensor.");
}
delay(2000); // Wait 2 seconds before the next reading
}
Sensor Not Detected on I²C Bus
Incorrect or Unstable Readings
Arduino Code Compilation Errors
Q: Can the SHT31 operate at 5V?
A: Yes, the SHT31 can operate with a supply voltage between 2.4V and 5.5V, making it compatible with both 3.3V and 5V systems.
Q: What is the default I²C address of the SHT31?
A: The default I²C address is 0x44. Some variants of the sensor may support an alternate address of 0x45.
Q: How can I protect the sensor in harsh environments?
A: Use a protective cover or filter to shield the sensor from dust, water, and other contaminants while allowing air to pass through.
Q: Can the SHT31 measure dew point?
A: The SHT31 does not directly measure dew point, but you can calculate it using the temperature and humidity readings.
By following this documentation, you can effectively integrate and use the SHT31 sensor in your projects.