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

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

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

Обзор

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

SHT35 — это премиальный датчик температуры и влажности от швейцарской компании Sensirion. Он обеспечивает высочайшую точность в линейке SHT3x: ±0.1°C для температуры и ±1.5% RH для влажности. Датчик широко используется в промышленных системах мониторинга, HVAC и высокоточных научных исследованиях.

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

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

  • Высочайшая точность — ±0.1°C для температуры, ±1.5% RH для влажности
  • Премиальная модель — лучшая точность в линейке SHT3x
  • I²C интерфейс — простая интеграция с ESP32, Arduino и другими МК
  • Долгосрочная стабильность — надежные и стабильные измерения
  • Широкий диапазон питания — 2.4V - 5.5V
Где купить

Приобретите SHT35

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

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

Интерфейс
I2C
Диапазон температуры
-40 ~ 125 °C
Диапазон влажности
0 ~ 100 % RH
Точность температуры
±0.1 °C
Точность влажности
±1.5 % RH
Напряжение питания
2.4V - 5.5V
Datasheet

Скачайте полный технический даташит для получения подробной информации о характеристиках и режимах работы датчика.

Скачать datasheet
Распиновка

Распиновка SHT35

Распиновка SHT35
1
VDD

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

2
GND

Земля

3
SDA

Линия данных I2C

4
SCL

Линия тактирования I2C

Быстрые советы
  • 🔌 I2C адрес — 0x44 или 0x45 (настраивается)
  • 📏 Точность — ±0.1°C температура, ±1.5% влажность
  • Напряжение — широкий диапазон 2.4V-5.5V
  • 🏭 Применение — премиум датчик для промышленных систем
Подключение

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

Подключение SHT35 к ESP32
Подключений
Требуется
4
Протокол
I2C
I2C
I2C адрес
0x44 / 0x45
0x44 или 0x45
Вывод SHT35 Подключение Вывод ESP32 Описание
VDD Требуется 3.3V Питание (2.4V-5.5V)
GND Требуется GND Земля
SDA Требуется GPIO21 I2C данные
SCL Требуется GPIO22 I2C тактирование
Важные примечания
  • 📍 GPIO21/22 — стандартные I2C пины на ESP32
  • 🔧 I2C адрес — 0x44 (по умолчанию) или 0x45
  • 🔌 Подтяжка — резисторы 10kΩ обычно уже установлены на модуле
  • 🔗 Шина — можно подключить несколько устройств на одну шину I2C
Отладка и ошибки

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

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

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

Проблема: Датчик не определяется на I2C шине, сканер не находит адрес 0x44 или 0x45.

Причины:

  • Неправильное подключение проводов
  • Неправильный I2C адрес в коде
  • Отсутствие подтягивающих резисторов
  • Проблемы с питанием

Решение: Проверьте подключение SDA→GPIO21, SCL→GPIO22. Убедитесь, что адрес в коде соответствует датчику (0x44 или 0x45). Проверьте напряжение питания.

Ошибка компиляции: 'yield' was not declared

Ошибка при компиляции библиотеки

Проблема: При компиляции возникает ошибка `'yield' was not declared in this scope`.

Причина: Устаревшая или несовместимая версия библиотеки Seeed Studio SHT35.

Решение: Обновите Arduino IDE и библиотеку Seeed Studio SHT35 до последней версии. Если проблема сохраняется, используйте библиотеку Adafruit SHT31.

Errno 121 Remote I/O Error

Ошибка чтения на Raspberry Pi

Проблема: После успешных чтений возникает ошибка `Errno 121 Remote I/O Error`.

Причины:

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

Решение: Проверьте все соединения. Убедитесь в стабильности питания. Проверьте наличие подтягивающих резисторов на SDA и SCL линиях.

Советы по отладке
  • 🔌 Используйте I2C сканер для проверки адреса
  • 📊 Проверьте Serial Monitor на наличие ошибок
  • 🔧 Проверьте питание мультиметром
  • 🔗 Убедитесь в надёжности соединений
Примеры кода

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

Arduino

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

C++
#include <Wire.h>
#include "Adafruit_SHT31.h"

Adafruit_SHT31 sht31 = Adafruit_SHT31();

void setup() {
  Serial.begin(115200);
  while (!Serial) delay(10);
  
  if (!sht31.begin(0x44)) {  // Адрес 0x44 или 0x45
    Serial.println("Не найден SHT35!");
    while (1) delay(1);
  }
}

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("Ошибка чтения SHT35!");
  }
  
  delay(1000);
}

Пример использует библиотеку Adafruit SHT31. Измените адрес на 0x45 если ваш модуль использует альтернативный адрес.

ESP-IDF

Официальный фреймворк Espressif

C++
#include <stdio.h>
#include "freertos/FreeRTOS.h"
#include "freertos/task.h"
#include "driver/i2c.h"

#define I2C_MASTER_SCL_IO    22
#define I2C_MASTER_SDA_IO    21
#define I2C_MASTER_NUM       I2C_NUM_0
#define I2C_MASTER_FREQ_HZ   100000
#define SHT35_SENSOR_ADDR    0x44

static esp_err_t i2c_master_init(void) {
    i2c_config_t conf = {
        .mode = I2C_MODE_MASTER,
        .sda_io_num = I2C_MASTER_SDA_IO,
        .scl_io_num = I2C_MASTER_SCL_IO,
        .sda_pullup_en = GPIO_PULLUP_ENABLE,
        .scl_pullup_en = GPIO_PULLUP_ENABLE,
        .master.clk_speed = I2C_MASTER_FREQ_HZ,
    };
    esp_err_t err = i2c_param_config(I2C_MASTER_NUM, &conf);
    if (err != ESP_OK) return err;
    return i2c_driver_install(I2C_MASTER_NUM, conf.mode, 0, 0, 0);
}

void read_sht35_sensor() {
    uint8_t data[6];
    i2c_master_write_read_device(I2C_MASTER_NUM, SHT35_SENSOR_ADDR, NULL, 0, data, sizeof(data), pdMS_TO_TICKS(1000));
    
    uint16_t temp_raw = (data[0] << 8) | data[1];
    uint16_t hum_raw = (data[3] << 8) | data[4];
    
    float temperature = -45 + 175 * ((float)temp_raw / 65535.0);
    float humidity = 100 * ((float)hum_raw / 65535.0);
    
    printf("Температура: %.2f °C, Влажность: %.2f %%\n", temperature, humidity);
}

void app_main() {
    ESP_ERROR_CHECK(i2c_master_init());
    while (1) {
        read_sht35_sensor();
        vTaskDelay(pdMS_TO_TICKS(2000));
    }
}

Пример для ESP-IDF реализует чтение SHT35 через I2C. Данные конвертируются в температуру (°C) и влажность (%) по формуле из даташита.

ESPHome

Конфигурация для Home Assistant

YAML
sensor:
  - platform: sht3x
    address: 0x44
    temperature:
      name: "Living Room Temperature"
    humidity:
      name: "Living Room Humidity"
    update_interval: 60s

Конфигурация ESPHome для подключения SHT35. Укажите адрес 0x44 (или 0x45) и настройте интервал обновления.

PlatformIO

Профессиональная среда разработки

C++

platformio.ini:

[env:esp32dev]
platform = espressif32
board = esp32dev
framework = arduino
lib_deps = adafruit/Adafruit SHT31 Library @ ^1.2.0
monitor_speed = 115200

main.cpp:

#include <Wire.h>
#include "Adafruit_SHT31.h"

Adafruit_SHT31 sht35 = Adafruit_SHT31();

void setup() {
    Serial.begin(115200);
    while (!Serial) delay(10);
    
    if (!sht35.begin(0x44)) {
        Serial.println("Не найден SHT35!");
        while (1) delay(1);
    }
}

void loop() {
    float temperature = sht35.readTemperature();
    float humidity = sht35.readHumidity();
    
    if (!isnan(temperature) && !isnan(humidity)) {
        Serial.print("Температура: ");
        Serial.print(temperature);
        Serial.println(" °C");
        
        Serial.print("Влажность: ");
        Serial.print(humidity);
        Serial.println(" %");
    } else {
        Serial.println("Ошибка чтения SHT35!");
    }
    
    delay(2000);
}

Конфигурация PlatformIO для ESP32 с использованием библиотеки Adafruit SHT31.

MicroPython

Python для микроконтроллеров

Python
from machine import I2C, Pin
import time

SHT35_I2C_ADDRESS = 0x44

i2c = I2C(0, scl=Pin(22), sda=Pin(21))

def read_sht35():
    i2c.writeto(SHT35_I2C_ADDRESS, b'\x24\x00')
    time.sleep(0.015)
    
    data = i2c.readfrom(SHT35_I2C_ADDRESS, 6)
    
    temp_raw = (data[0] << 8) | data[1]
    humidity_raw = (data[3] << 8) | data[4]
    
    temperature = -45 + (175 * temp_raw / 65535.0)
    humidity = 100 * humidity_raw / 65535.0
    
    return temperature, humidity

while True:
    try:
        temperature, humidity = read_sht35()
        print("Температура: {:.2f} °C".format(temperature))
        print("Влажность: {:.2f} %".format(humidity))
    except Exception as e:
        print("Ошибка чтения:", e)
    
    time.sleep(2)

MicroPython реализует прямой протокол SHT35. Функция отправляет команду измерения и читает 6 байт данных, преобразуя их в температуру и влажность.

Итоги SHT35

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

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

Высочайшая точность ±0.1°C, ±1.5% RH, широкий диапазон питания 2.4-5.5V, долгосрочная стабильность, I2C интерфейс.

Ограничения

Более высокая цена по сравнению с SHT30/SHT31, требует I2C.

Готовы начать?

Теперь, когда у вас есть вся необходимая информация, пришло время подключить SHT35 к вашему проекту!