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

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

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

Обзор

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

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

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

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

  • Высокая точность — ±2% влажности, ±0.3°C температуры
  • Технология CMOSens® — интегрированный чип с датчиками
  • Интерфейс I²C — простая и надежная коммуникация
  • Полная калибровка — готов к использованию из коробки
  • Низкое энергопотребление — идеально для батарейных устройств
Где купить

Приобретите SHT30

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

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

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

Распиновка SHT30

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

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

2
GND

Земля

3
SDA

I2C данные

4
SCL

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

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

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

Подключение SHT30 к ESP32
Подключений
Требуется
4
Протокол
I2C
I2C
Вывод SHT30 Подключение Вывод ESP32 Описание
VCC Требуется 3.3V Питание
GND Требуется GND Земля
SDA Требуется GPIO21 I2C данные
SCL Требуется GPIO22 I2C тактирование
Важные примечания
  • 📍 Адрес I2C — выбирается перемычкой ADDR (0x44 или 0x45)
  • 🔧 Подтяжка — встроенные резисторы, могут потребоваться внешние
  • 🔋 Питание — 3.3V рекомендуется для ESP32
Отладка и ошибки

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

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

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

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

Причины:

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

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

Нестабильные показания

Значения прыгают или некорректны

Проблема: Показания датчика нестабильны.

Причина: Помехи на линии I2C или нестабильное питание.

Решение: Добавьте конденсатор 100nF между VCC и GND, используйте более короткие провода.

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

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

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 (ADDR=L)
    Serial.println("SHT30 не найден!");
    while (1) delay(1);
  }
  Serial.println("SHT30 инициализирован!");
}

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(" %");
  } else {
    Serial.println("Ошибка чтения!");
  }
  
  delay(1000);
}

Пример использует библиотеку Adafruit_SHT31. Датчик подключен к адресу 0x44 (ADDR вывод на GND).

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 для SHT30 с адресом 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)
    
    # Чтение 6 байт данных
    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 пример для чтения SHT30 без внешней библиотеки. Данные считываются напрямую через I2C.

Итоги SHT30

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

Преимущества

Высокая точность ±0.3°C, интерфейс I2C, низкое энергопотребление, полная калибровка.

Ограничения

Дороже чем DHT датчики, требует I2C.