

The SHT31, manufactured by Teyleton (Part ID: SHT31-D), is a digital humidity and temperature sensor designed for high-accuracy environmental measurements. It combines a capacitive humidity sensor and a band-gap temperature sensor on a single chip, providing precise and reliable data. The SHT31 features a digital I²C interface, low power consumption, and a fast response time, making it ideal for applications such as HVAC systems, weather stations, industrial process monitoring, and IoT devices.








The following table outlines the key technical specifications of the SHT31 sensor:
| Parameter | Value |
|---|---|
| Supply Voltage (VDD) | 2.4V to 5.5V |
| Average Current | 2 µA (at 1 measurement/sec) |
| Measurement Range | Humidity: 0% to 100% RH |
| Temperature: -40°C to 125°C | |
| Accuracy | Humidity: ±2% RH (typical) |
| Temperature: ±0.3°C (typical) | |
| Communication Interface | I²C (up to 1 MHz) |
| Response Time (τ63%) | 8 seconds (humidity) |
| Operating Temperature | -40°C to 125°C |
| Dimensions | 2.5 mm x 2.5 mm x 0.9 mm |
The SHT31 sensor is typically available in a 4-pin package. The pin configuration is as follows:
| Pin Number | 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 |
0x44. If you need to use multiple sensors, some variants allow changing the address to 0x45 by grounding or pulling up a specific pin (refer to the datasheet for details).Below is an example of how to interface the SHT31 with an Arduino UNO using the I²C protocol:
#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 at 9600 baud
Wire.begin(); // Initialize I²C communication
// Initialize the SHT31 sensor
if (!sht31.begin(0x44)) { // Default I²C address is 0x44
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 from SHT31 sensor!");
}
delay(2000); // Wait 2 seconds before the next reading
}
Sensor Not Detected on I²C Bus:
0x44) and ensure it matches the code.Incorrect or NaN Readings:
Slow Response Time:
Q: Can the SHT31 be used outdoors?
A: Yes, but it should be protected from direct exposure to water, dust, and extreme conditions using an appropriate enclosure or filter.
Q: How often should I calibrate the SHT31?
A: The SHT31 is factory-calibrated and does not require frequent calibration. However, periodic checks are recommended for critical applications.
Q: Can I use the SHT31 with a 5V microcontroller?
A: Yes, the SHT31 supports a supply voltage range of 2.4V to 5.5V, making it compatible with both 3.3V and 5V systems.