Skip to contentSkip to main navigation Skip to footer

Arduino и датчик HTU21D

Описание


HTU21D – точный цифровой датчик температуры и влажности, в виде модуля существует версия 3.3V и 5V (со стабилизатором):

Набор GyverKIT (начиная с партии 003) комплектуется датчиком версии 5V. Характеристики:

  • Температура:
    • Диапазон: -40.. 125°С
    • Точность: 0.3°С
    • Разрешение: 11.. 14 bit
  • Влажность:
    • Диапазон: 0.. 100%
    • Точность: 2%
    • Разрешение: 8.. 12 bit

Подключение


Модуль подключается на шину I2C и питание, как и любой другой модуль такого типа:

  • Arduino: SDA – A4, SCL – A5
  • Wemos: SDA – D2, SCL – D1

Библиотеки


Для данного датчика существует несколько библиотек:

В примерах на этом сайте мы будем использовать GyverHTU21D как наиболее лёгкую и удобную в использовании. Библиотека идёт в архиве к набору GyverKIT, а свежую версию всегда можно установить/обновить из встроенного менеджера библиотек Arduino по названию GyverHTU21D . Краткая документация находится по ссылке выше, базовые примеры есть в самой библиотеке.

Примеры


Данный датчик требует следующую последовательность опроса данных:

  • Запросить измерение (температура или влажность)
  • Подождать, пока измерения будут готовы (3-50 мс в зависимости от разрешения)
  • Прочитать значение (температура или влажность)

В библиотеке GyverHTU21D реализован автоматический асинхронный опрос датчика. Получать показания можно следующим образом:

#include <GyverHTU21D.h>
GyverHTU21D htu;

void setup() {
  Serial.begin(9600);
  htu.begin();   // запустить датчик
}

void loop() {
  // функция опрашивает датчик по своему таймеру
  if (htu.readTick()) {
    // можно забирать значения здесь или в другом месте программы
    Serial.println(htu.getTemperature());
    Serial.println(htu.getHumidity());
    Serial.println();
  }
}

Домашнее задание


  • Изучить примеры к библиотеке GyverHTU21D, попробовать другие способы работы с датчиком

Полезный пример?

Похожие примеры
26 Комментариев
  • Приветствую. Если я правильно понял, то два датчика подключить не получится на одну шину. По крайней мере без костылей.

  • Жаль, что не получается подключить дисплей, так как они приходятся на одни и те же пины, а гибкой настройки нет(или это невозможно?). Подскажите пожалуйста(или ссылочку) как поменять пины. Расковырять в библиотеках не смог.

    • Тоже искал решение этого вопроса, если используете  OLED дисплей можно попробовать использовать библиотеку OLED_I2C

    • нашел еще решение погуглите подключение 2 устройств к i2c с разными адресами, если адреса совпадает при запайке пинает на платах их можно поменять, но насколько я понял они будут разными.
      И да я глянул библиотеку которая я предлагал, мне не очень зашла.

    • Еще дополнение я взял часть питания от макетной платы на 1 вывел питание от ардуины, а на вторую на + scl, а на – sda

  • Есть психрометр вит2, его показания влажности 56%, показания htu21d 18-20%,
    причем заказывал два датчика, оба примерно одно и тоже показывают. Если вынести на балкон,то показания сразу растут, к примеру по погоде из интернета влажность 82%, датчик показывал 65%, дальше я просто ждать не стал пока ещё вврастет. Не пойму в чем дело, использую его в погодной метеостанции с этого же сайта+bmp280 и 15-18% влажности это стандартная тема для него.
    Может кто сталкивался с подобным?

    • В общем после сравнения с поверенным прибором оказалось, что вит2 врёт.

      Htu21d 19,2 humidity; 24,9 trmp
      Bmp280 25,4 temp
      Поверенный 23,9 temp 17% humidity

      • а проверенный по чему калибровался? Влажность то ладно, там заявленная точность 2%. А вот по температуре как то сильно уходит!

  • Не очень понимаю как у нас работает I2C по данной схеме. Должен же быть подтягивающий резистор, причем подтяжка, согласно даташиту, должна быть к 3.3V. Будет ли пятивольтовая ATmega328P нормально работать с этим датчиком? Судя по тому, что никто не жалуется, эта схема как-то работает…

    • Смог разобраться почему это работает и не сгорает. А также почему на шину с ним нельзя подключить некоторые другие датчики.

      Данные платы уже несут в себе подтягивающий резистор на 3.3V. То есть сторонний подтягивающий нам не нужен. А работает это из-за того что I2C работает по принципу открытого коллектора, и МК никогда не выставляет на шину логическую единицу и, следовательно, датчик живет нормально.

      На одну I2C шину с этим датчиком нельзя повесить некоторые датчики, так как у них возможно подтяжка до 5V. Это также может вывести этот датчик из строя. Так как максимум на него разрешается подавать 3.6V на дата входы.

Оставить комментарий

Ваш адрес email не будет опубликован.