SHT31 датчик температуры и влажности

Изучите всё о датчике SHT31: технические характеристики, распиновка, схемы подключения, datasheet и примеры кода для ESP32, Arduino, Raspberry

Температура и влажность I2C

Обзор

SHT31 — это высокоточный цифровой датчик температуры и влажности от Sensirion с улучшенными характеристиками по сравнению с SHT30. Он обеспечивает превосходную точность и стабильность измерений, что делает его идеальным выбором для профессиональных приложений мониторинга окружающей среды.

SHT31 — это профессиональный датчик температуры и влажности от швейцарской компании Sensirion. Датчик является улучшенной версией SHT30 с повышенной точностью и дополнительными функциями. Благодаря интерфейсу I²C, он легко интегрируется с ESP32, Arduino и Raspberry Pi.

Датчик SHT31
Быстрая навигация
Основные разделы статьи
Примеры кода
Популярные платформы

Ключевые особенности

  • Высокая точность — ±1.5% влажности, ±0.2°C температуры
  • Технология CMOSens® — интегрированный чип с датчиками
  • Интерфейс I²C — два адреса (0x44 или 0x45)
  • Режимы измерения — низкое энергопотребление
  • Нагреватель — встроенный нагреватель для удаления конденсата
Где купить

Приобретите SHT31

Характеристики

Технические характеристики SHT31

Интерфейс
I2C
Адрес I2C
0x44 или 0x45
Диапазон температуры
-40 ~ 125 °C
Диапазон влажности
0 ~ 100 % RH
Точность температуры
±0.2 °C
Точность влажности
±1.5 % RH
Напряжение питания
2.4V - 5.5V DC
Ток потребления
~45µA
Распиновка

Распиновка SHT31

Распиновка SHT31
1
VCC

Питание (2.4V - 5.5V)

2
GND

Земля

3
SDA

I2C данные

4
SCL

I2C тактирование

Быстрые советы
  • 🔌 I2C адрес — 0x44 (ADDR=L) или 0x45 (ADDR=H)
  • 📏 Длина провода — до 10 метров
  • ⏱️ Частота — до 1МГц
  • 🔥 Нагреватель — встроенный для удаления конденсата
Подключение

Подключение SHT31 к ESP32

Подключение SHT31 к ESP32
Подключений
Требуется
4
Протокол
I2C
I2C
Вывод SHT31 Подключение Вывод ESP32 Описание
VCC Требуется 3.3V Питание
GND Требуется GND Земля
SDA Требуется GPIO21 I2C данные
SCL Требуется GPIO22 I2C тактирование
Отладка и ошибки

Устранение неполадок SHT31

Датчик не определяется

I2C сканер не находит датчик

Проблема: Датчик не обнаруживается по I2C.

Причины:

  • Неправильный адрес I2C
  • Проблемы с подключением
  • Нестабильное питание

Решение: Проверьте адрес (0x44 или 0x45), проверьте подключение SDA/SCL.

Советы по отладке
  • 🔌 Используйте I2C сканер для проверки адреса
  • 🔧 Проверьте подтягивающие резисторы
  • 📏 Длина провода — не более 10 метров
Примеры кода

Примеры программирования SHT31

Arduino

Совместимо с Arduino IDE и ESP32

C++
#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
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
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.