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

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

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

Обзор

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

SHT40 — это высокоточный датчик температуры и влажности от швейцарской компании Sensirion. Датчик обеспечивает отличную точность ±0.2°C и ±1.8% RH при минимальном энергопотреблении. Благодаря широкому диапазону питания 1.08V-3.6V, он идеально подходит для батарейных устройств IoT.

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

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

  • Высокая точность — ±0.2°C для температуры, ±1.8% RH для влажности
  • Сверхнизкое питание — диапазон 1.08V-3.6V, идеально для батарейных устройств
  • Минимальное энергопотребление — всего 0.4 мкА при частоте 1 Гц
  • Компактный размер — 1.5x1.5x0.5 мм
  • I2C интерфейс — простая интеграция с ESP32, Arduino
Где купить

Приобретите SHT40

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

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

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

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

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

Распиновка SHT40

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

Питание (1.08V - 3.6V)

2
GND

Земля

3
SDA

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

4
SCL

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

Быстрые советы
  • 🔌 I2C адрес — 0x44 (фиксированный)
  • 📏 Точность — ±0.2°C температура, ±1.8% влажность
  • 🔋 Энергопотребление — всего 0.4 мкА при 1 Гц
  • 📱 Применение — батарейные IoT устройства
Подключение

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

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

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

Датчик не инициализируется

Сенсор не определяется при запуске

Проблема: Датчик не инициализируется, данные не считываются.

Причины:

  • Неправильное подключение SDA/SCL
  • Напряжение питания вне диапазона 1.08V-3.6V
  • Отсутствие подтягивающих резисторов
  • Неправильный I2C адрес

Решение: Проверьте подключение SDA→GPIO21, SCL→GPIO22. Убедитесь, что питание в диапазоне 1.08V-3.6V. Проверьте наличие подтягивающих резисторов.

Неточные показания

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

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

Причины:

  • Датчик расположен рядом с источниками тепла
  • Прямое солнечное освещение
  • Конденсат или капли воды на датчике
  • Недостаточное время стабилизации после включения

Решение: Переместите датчик в место без прямых источников тепла. Дайте датчику стабилизироваться после включения (несколько минут). При необходимости проведите калибровку.

Прерывистая связь I2C

Связь с датчиком пропадает

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

Причины:

  • Неправильный I2C адрес (должен быть 0x44)
  • Плохие соединения проводов
  • Отсутствие подтягивающих резисторов
  • Слишком длинные провода

Решение: Проверьте I2C адрес (0x44). Проверьте качество соединений. Добавьте подтягивающие резисторы 10kΩ при необходимости. Укоротите провода.

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

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

Arduino

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

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

Adafruit_SHT4x sht4 = Adafruit_SHT4x();

void setup() {
  Serial.begin(115200);
  
  if (!sht4.begin()) {
    Serial.println("Не найден SHT4x!");
    while (1) delay(10);
  }
  Serial.println("Найден датчик SHT4x");
}

void loop() {
  sensors_event_t humidity, temp;
  sht4.getEvent(&humidity, &temp);
  
  Serial.print("Температура: ");
  Serial.print(temp.temperature);
  Serial.println(" °C");
  
  Serial.print("Влажность: ");
  Serial.print(humidity.relative_humidity);
  Serial.println(" %");
  
  delay(2000);
}

Пример использует библиотеку Adafruit SHT4x. Датчик автоматически определяется по адресу 0x44.

ESP-IDF

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

C++
#include "sht4x.h"
#include "esp_log.h"

#define I2C_MASTER_SCL_IO 22
#define I2C_MASTER_SDA_IO 21
#define I2C_MASTER_FREQ_HZ 100000
#define SHT40_ADDR 0x44

static const char *TAG = "SHT40";

void app_main() {
    ESP_LOGI(TAG, "Инициализация SHT40...");
    
    sht4x_dev_t dev;
    sht4x_init(&dev, I2C_MASTER_SCL_IO, I2C_MASTER_SDA_IO, I2C_MASTER_FREQ_HZ, SHT40_ADDR);
    
    while (1) {
        float temperature, humidity;
        if (sht4x_read_temperature(&dev, &temperature) == ESP_OK &&
            sht4x_read_humidity(&dev, &humidity) == ESP_OK) {
            ESP_LOGI(TAG, "Температура: %.2f°C", temperature);
            ESP_LOGI(TAG, "Влажность: %.2f%%", humidity);
        } else {
            ESP_LOGE(TAG, "Ошибка чтения SHT40");
        }
        vTaskDelay(2000 / portTICK_PERIOD_MS);
    }
}

Пример для ESP-IDF использует библиотеку sht4x. Данные считываются каждые 2 секунды.

ESPHome

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

YAML
sensor:
  - platform: sht4x
    temperature:
      name: "SHT40 Temperature"
    humidity:
      name: "SHT40 Humidity"
    address: 0x44
    update_interval: 2s

Конфигурация ESPHome для подключения SHT40. Данные обновляются каждые 2 секунды.

PlatformIO

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

C++

platformio.ini:

[env:esp32dev]
platform = espressif32
board = esp32dev
framework = arduino
lib_deps = adafruit/Adafruit SHT4x Library
monitor_speed = 115200

main.cpp:

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

Adafruit_SHT4x sht4 = Adafruit_SHT4x();

void setup() {
    Serial.begin(115200);
    if (!sht4.begin()) {
        Serial.println("Не найден SHT4x!");
        while (1) delay(10);
    }
    Serial.println("Найден датчик SHT4x");
}

void loop() {
    sensors_event_t humidity, temp;
    sht4.getEvent(&humidity, &temp);
    
    Serial.print("Температура: ");
    Serial.print(temp.temperature);
    Serial.println(" °C");
    
    Serial.print("Влажность: ");
    Serial.print(humidity.relative_humidity);
    Serial.println(" %");
    
    delay(2000);
}

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

Итоги SHT40

Датчик SHT40 — это отличный выбор для батарейных IoT-проектов благодаря сверхнизкому энергопотреблению и широкому диапазону питания. Высокая точность и компактный размер делают его идеальным решением для портативных устройств и систем удалённого мониторинга.

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

Сверхнизкое питание 1.08-3.6V, минимальное энергопотребление 0.4 мкА, высокая точность ±0.2°C, компактный размер.

Ограничения

Фиксированный I2C адрес 0x44, требует модуль для 3.3V.

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

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