Обзор
SHT31 — это высокоточный цифровой датчик температуры и влажности от Sensirion с улучшенными характеристиками по сравнению с SHT30. Он обеспечивает превосходную точность и стабильность измерений, что делает его идеальным выбором для профессиональных приложений мониторинга окружающей среды.
SHT31 — это профессиональный датчик температуры и влажности от швейцарской компании Sensirion. Датчик является улучшенной версией SHT30 с повышенной точностью и дополнительными функциями. Благодаря интерфейсу I²C, он легко интегрируется с ESP32, Arduino и Raspberry Pi.
⚡ Ключевые особенности
- Высокая точность — ±1.5% влажности, ±0.2°C температуры
- Технология CMOSens® — интегрированный чип с датчиками
- Интерфейс I²C — два адреса (0x44 или 0x45)
- Режимы измерения — низкое энергопотребление
- Нагреватель — встроенный нагреватель для удаления конденсата
Приобретите SHT31
Технические характеристики SHT31
Распиновка SHT31
Питание (2.4V - 5.5V)
Земля
I2C данные
I2C тактирование
- 🔌 I2C адрес — 0x44 (ADDR=L) или 0x45 (ADDR=H)
- 📏 Длина провода — до 10 метров
- ⏱️ Частота — до 1МГц
- 🔥 Нагреватель — встроенный для удаления конденсата
Подключение SHT31 к ESP32
| Вывод SHT31 | Подключение | Вывод ESP32 | Описание |
|---|---|---|---|
| VCC | Требуется | 3.3V | Питание |
| GND | Требуется | GND | Земля |
| SDA | Требуется | GPIO21 | I2C данные |
| SCL | Требуется | GPIO22 | I2C тактирование |
Устранение неполадок SHT31
Датчик не определяется
I2C сканер не находит датчик
Датчик не определяется
I2C сканер не находит датчик
Проблема: Датчик не обнаруживается по I2C.
Причины:
- Неправильный адрес I2C
- Проблемы с подключением
- Нестабильное питание
Решение: Проверьте адрес (0x44 или 0x45), проверьте подключение SDA/SCL.
- 🔌 Используйте I2C сканер для проверки адреса
- 🔧 Проверьте подтягивающие резисторы
- 📏 Длина провода — не более 10 метров
Примеры программирования SHT31
Arduino
Совместимо с Arduino IDE и ESP32
C++
Arduino
Совместимо с Arduino IDE и ESP32
#include <Wire.h>
#include <Adafruit_SHT31.h>
Adafruit_SHT31 sht31 = Adafruit_SHT31();
void setup() {
Serial.begin(115200);
Wire.begin(21, 22); // SDA=21, SCL=22 на ESP32
if (!sht31.begin(0x44)) { // Адрес 0x44
Serial.println("SHT31 не найден!");
while (1) delay(1);
}
// Включение нагревателя (опционально)
// sht31.setHeater(true);
Serial.println("SHT31 инициализирован!");
}
void loop() {
float t = sht31.readTemperature();
float h = sht31.readHumidity();
if (!isnan(t) && !isnan(h)) {
Serial.print("Температура: ");
Serial.print(t);
Serial.println(" °C");
Serial.print("Влажность: ");
Serial.print(h);
Serial.println(" %");
}
delay(1000);
}
Пример использует библиотеку Adafruit_SHT31. Датчик имеет встроенный нагреватель для удаления конденсата.
ESPHome
Конфигурация для Home Assistant
YAML
ESPHome
Конфигурация для Home Assistant
i2c:
sda: GPIO21
scl: GPIO22
scan: true
sensor:
- platform: sht3x
address: 0x44
temperature:
name: "Living Room Temperature"
unit_of_measurement: "°C"
humidity:
name: "Living Room Humidity"
unit_of_measurement: "%"
update_interval: 60s
Конфигурация ESPHome для SHT31 с адресом 0x44.
MicroPython
Python для микроконтроллеров
Python
MicroPython
Python для микроконтроллеров
from machine import I2C, Pin
import time
i2c = I2C(0, scl=Pin(22), sda=Pin(21), freq=100000)
SHT31_ADDR = 0x44
def read_sht31():
i2c.writeto(SHT31_ADDR, bytes([0x24, 0x00]))
time.sleep_ms(15)
data = i2c.readfrom(SHT31_ADDR, 6)
temp = -45 + 175 * ((data[0] << 8 | data[1]) / 65535.0
hum = 100 * ((data[3] << 8 | data[4]) / 65535.0)
return temp, hum
while True:
try:
temp, hum = read_sht31()
print(f"Температура: {temp:.1f}°C, Влажность: {hum:.1f}%")
except Exception as e:
print("Ошибка:", e)
time.sleep(1)
MicroPython пример для чтения SHT31 без внешней библиотеки.
Итоги SHT31
Датчик SHT31 — это профессиональный датчик с улучшенной точностью ±0.2°C и ±1.5% RH. Благодаря встроенному нагревателю, он идеален для работы в условиях высокой влажности.
Преимущества
Высочайшая точность ±0.2°C, встроенный нагреватель, интерфейс I2C.
Ограничения
Дороже чем SHT30, требует I2C.