HDC1080 / GY-213V-HDC1080 Датчик Температуры и Влажности

Полное руководство по датчику HDC1080: характеристики, распиновка, схемы подключения к ESP32, документация и примеры кода для Arduino, ESP-IDF, ESPHome и MicroPython.

Окружающая среда I2C

Назад к датчикам

Окружающая среда I2C

Обзор

Цифровой датчик HDC1080 от Texas Instruments — это высокоточный комбинированный сенсор температуры и влажности с низким энергопотреблением. Благодаря заводской калибровке и компактному исполнению, он идеально подходит для систем умного дома, метеостанций и носимых устройств.

HDC1080 / GY-213V-HDC1080 обеспечивает точность измерения относительной влажности ±2% и температуры ±0.2°C. Датчик потребляет всего 1.3 мкА в режиме сна, что делает его отличным выбором для устройств с батарейным питанием.

Датчик HDC1080
Где купить

Приобретите HDC1080 / GY-213V-HDC1080 Датчик Температуры и Влажности

Техническая часть

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

Полные технические параметры датчика температуры и влажности GY-213V-HDC1080.

Интерфейс
I2C (до 400 кГц)
Поддержка стандартного и скоростного режимов.
Точность
±0.2°C / ±2% RH
14-битное разрешение для обоих параметров.
Диапазон
-40...125°C / 0...100% RH
Широкий температурный диапазон эксплуатации.
Питание
2.7В – 5.5В
Сверхнизкое потребление: 1.3 мкА в покое.
Скачать полный Datasheet (TI)
Визуальная схема

Распиновка HDC1080

Основные выводы датчика для подключения по шине I2C.

Распиновка HDC1080
Советы по подключению
  • Для шины I2C на линиях SDA и SCL требуются подтягивающие резисторы (обычно 4.7кОм или 10кОм).
  • Рекомендуется устанавливать блокировочный конденсатор 0.1 мкФ между VDD и GND максимально близко к датчику.
Конфигурация

Модули GY-213V обычно поставляются с установленными резисторами, что упрощает подключение. Проверьте схему вашего модуля перед сборкой.

Пин Имя Тип Описание
1 GND Power Общий минус системы.
2 VDD Power Питание датчика (2.7В - 5.5В).
3 SDA I2C Линия данных I2C.
4 SCL I2C Линия тактового сигнала I2C.
Руководство

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

Схема и таблица соединений для работы датчика с микроконтроллером ESP32.

Схема подключения ESP32 к HDC1080

Схема подключения I2C (SDA — GPIO 21, SCL — GPIO 22)

Состояние
Проверено
Протокол
I2C
Напряжение
3.3V
HDC1080 Пин Контакт ESP32 Пин Примечание
VDD 3.3V Питание (3.3В для ESP32).
GND GND Общая земля.
SDA GPIO 21 Резистор 10кОм к VDD.
SCL GPIO 22 Резистор 10кОм к VDD.
Решение проблем

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

Частые ошибки при работе с датчиком и способы их решения.

Влажность зависла на 100%

Проблема: Датчик постоянно сообщает о влажности 100%, независимо от реальных условий. Это случается из-за насыщения сенсора при длительном воздействии высокой влажности или конденсата.

Решение: Поместите датчик в сухую среду для восстановления. Можно активировать встроенный нагреватель HDC1080 для удаления влаги с поверхности сенсора. Убедитесь, что на датчике нет пыли или остатков флюса после пайки.

Датчик возвращает 0xFFFF по I2C

Проблема: Попытки чтения приводят к получению значения `0xFFFF`, что означает ошибку связи или занятость сенсора.

Решение: Проверьте адрес I2C (обычно `0x40`). Убедитесь, что вы соблюдаете временную задержку между командой на измерение и чтением результата (около 15 мс для 14 бит). Проверьте надежность контактов и наличие подтягивающих резисторов.

Погрешность влажности до +6%

Проблема: Со временем показания смещаются, или датчик показывает завышенные значения влажности.

Решение: Используйте встроенный нагреватель для периодической просушки датчика в условиях высокой влажности. Защищайте датчик от паров органических растворителей и клеев при монтаже в корпус.

Datasheet (PDF)
Техническая документация и рекомендации TI.
Программирование

Примеры кода HDC1080

Готовые примеры для работы с основными платформами на русском языке.

Arduino

Arduino IDE C++

Для ESP32 и Arduino UNO

Этот скетч использует библиотеку `ClosedCube_HDC1080` для чтения данных каждые 2 секунды.

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

ClosedCube_HDC1080 hdc1080;

void setup() {
  Wire.begin();
  Serial.begin(115200);   // Установите скорость 115200 в Serial Monitor
  
  // Инициализация датчика (адрес по умолчанию 0x40)
  hdc1080.begin(0x40);
  Serial.println("HDC1080 инициализирован.");
}

void loop() {
  // Чтение температуры в градусах Цельсия
  float temperature = hdc1080.readTemperature();
  // Чтение влажности в процентах
  float humidity = hdc1080.readHumidity();

  Serial.print("Температура: ");
  Serial.print(temperature, 2);
  Serial.println(" °C");

  Serial.print("Влажность: ");
  Serial.print(humidity, 2);
  Serial.println(" %");

  delay(2000); // Ожидание 2 секунды
}
ESP-IDF

ESP-IDF C (Native)

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

Реализация прямого управления шиной I2C через стандартный драйвер ESP-IDF.

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

#define I2C_MASTER_SCL_IO    22    /*!< Пин для I2C тактового сигнала */
#define I2C_MASTER_SDA_IO    21    /*!< Пин для I2C данных */
#define I2C_MASTER_NUM       I2C_NUM_0 
#define I2C_MASTER_FREQ_HZ   100000 
#define HDC1080_SENSOR_ADDR  0x40  

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,
    };
    i2c_param_config(I2C_MASTER_NUM, &conf);
    return i2c_driver_install(I2C_MASTER_NUM, conf.mode, 0, 0, 0);
}

void read_hdc1080() {
    uint8_t data[4];
    uint8_t cmd = 0x00; // Указатель на регистр температуры
    
    // Запуск измерения
    i2c_master_write_to_device(I2C_MASTER_NUM, HDC1080_SENSOR_ADDR, &cmd, 1, pdMS_TO_TICKS(100));
    vTaskDelay(pdMS_TO_TICKS(15)); // Ждем завершения измерения

    // Чтение 4 байт (2 байта температуры + 2 байта влажности)
    i2c_master_read_from_device(I2C_MASTER_NUM, HDC1080_SENSOR_ADDR, data, 4, pdMS_TO_TICKS(100));

    uint16_t raw_temp = (data[0] << 8) | data[1];
    uint16_t raw_humidity = (data[2] << 8) | data[3];

    float temp = (raw_temp / 65536.0) * 165.0 - 40.0;
    float hum = (raw_humidity / 65536.0) * 100.0;

    printf("Температура: %.2f °C, Влажность: %.2f %%\n", temp, hum);
}

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

ESPHome YAML

Для Home Assistant

Конфигурация для быстрого добавления HDC1080 в вашу систему умного дома.

i2c:
  sda: 21
  scl: 22

sensor:
  - platform: hdc1080
    temperature:
      name: "Температура в комнате"
    humidity:
      name: "Влажность в комнате"
    update_interval: 60s
MicroPython

MicroPython Python

Простота и скорость отладки

from machine import I2C, Pin
import time

# Инициализация I2C
i2c = I2C(0, scl=Pin(22), sda=Pin(21))
ADDR = 0x40

def read_data():
    # Отправляем команду измерения
    i2c.writeto(ADDR, b'\x00')
    time.sleep_ms(20) # Ждем готовности
    
    # Читаем 4 байта
    data = i2c.readfrom(ADDR, 4)
    
    raw_temp = (data[0] << 8) | data[1]
    raw_hum = (data[2] << 8) | data[3]
    
    t = (raw_temp / 65536.0) * 165.0 - 40.0
    h = (raw_hum / 65536.0) * 100.0
    return t, h

while True:
    temp, hum = read_data()
    print("Температура: {:.2f} °C".format(temp))
    print("Влажность: {:.2f} %".format(hum))
    time.sleep(2)

Итоги и рекомендации

Датчик HDC1080 / GY-213V-HDC1080 — это надежное и энергоэффективное промышленное решение, которое значительно превосходит дешевые датчики серии DHT.

Лучшие практики
  • • Используйте спящий режим для экономии энергии в батарейных проектах.
  • • Активируйте нагреватель только при необходимости (например, раз в день или при влажности >90%).
  • • Держите датчик подальше от источников тепла самого микроконтроллера.
Безопасность
  • • Никогда не превышайте напряжение 5.5В.
  • • Не трогайте поверхность сенсора руками — жир пальцев может исказить показания влажности.
  • • Избегайте прямого контакта с жидкостями и агрессивными газами.

Готовы собрать проект?

Интегрируйте HDC1080 в свое устройство на базе ESP32 и начните мониторинг микроклимата уже сегодня.