Этот учебник является частью: Цифровой датчик относительной влажности и температуры HTU21D
Видеоролики, посвященные цифровому датчику относительной влажности и температуры HTU21D. Ссылки на другие видеоролики находятся ниже этой статьи.
Использование двух датчиков влажности и температуры HTU21DF с Arduino
В этом уроке мы научимся подключать и использовать два датчика температуры и влажности HTU21DF с Arduino. Датчик HTU21DF известен своей точностью и низким потреблением энергии, что делает его идеальным для различных приложений. К концу этого урока вы сможете считывать значения температуры и влажности с обоих датчиков и отображать их на последовательном мониторе.

Для начала мы кратко рассмотрим аппаратные компоненты, участвующие в этом проекте. Датчики HTU21DF общаются по I2C, что требует только двух линий данных в дополнение к подключениям питания и заземления. Arduino будет считывать данные с датчика и выводить результаты на последовательный монитор, что позволит вам наблюдать изменения температуры и влажности в реальном времени.
Для более ясного понимания процесса проводки и кодирования рассмотрите возможность просмотра связанного видео (в видео на 01:30). Давайте углубимся в детали!
Аппаратное обеспечение объяснено
Основным компонентом этого проекта является датчик HTU21DF, который измеряет температуру и относительную влажность. Этот датчик работает с использованием I2C-связи, что упрощает проводку, так как требуется всего две линии передачи данных. Он способен измерять температуры от -40°C до 125°C и уровни влажности от 0% до 100% с разрешением 0,04%.
Когда датчик не активно измеряет, он потребляет всего 0,04 µA, что делает его подходящим для приложений на батарейном питании. При измерении потребление тока составляет около 400 µA, что все еще относительно низко для большинства проектов.
Технические характеристики
| Производитель | TE Connectivity |
|---|---|
| Номер детали | HTU21DF |
| Логическое/входное-выходное напряжение | 1.5 - 3.6 В |
| Сетевое напряжение | 3.3 В |
| Выходной ток (на канал) | 0.4 мА (измерение) |
| Пиковый ток (на канал) | 450 мкА (макс) |
| Руководство по частоте ШИМ | Не применимо |
| Входные логические пороги | 0.3 x VDDдо 0,7 x VDD |
| Падение напряжения / RДС(включено)/ насыщение | N/A |
| Термальные ограничения | от -40°C до +125°C |
| Пакет | 6-контактный DFN |
| Заметки / варианты | Доступно в разных размерах упаковки |
- Источник питания: рекомендуется 3,3 В для оптимальной работы.
- Подключите SCL к пину тактового сигнала I2C (A5 на Arduino UNO).
- Подключите SDA к ножке данных I2C (A4 на Arduino UNO).
- Обеспечьте правильное подключение для избежания плавающих входов.
- Контролируйте потребление энергии во время измерения, чтобы управлять временем работы батареи.
- Рассмотрите возможность использования подтягивающих резисторов, если это необходимо для линий I2C.
Инструкции по проводке

Для подключения датчиков HTU21DF начните с соединения VCCподключите вывод каждого датчика к выводу 3.3 В на Arduino. Затем подключите вывод GND каждого датчика к общему заземлению. Для I2C-связи соедините вывод SDA обоих датчиков с выводом A4 на Arduino, а вывод SCL с выводом A5. Убедитесь, что датчики правильно питаются, и что соединения данных надежны для обеспечения связи.
Если вы используете дополнительные датчики или компоненты, убедитесь, что их проводка не мешает шине I2C. Датчики HTU21DF можно подключить параллельно к одной и той же шине I2C, что позволяет Arduino считывать данные с обоих датчиков без путаницы.
Примеры кода и пошаговое руководство
Следующий код инициализирует датчики HTU21DF и считывает их значения температуры и влажности. Сначала мы подключаем необходимые библиотеки и создаем экземпляры для обоих датчиков:
#include
#include "Adafruit_HTU21DF.h"
Adafruit_HTU21DF htu1 = Adafruit_HTU21DF(); // create object for first sensor
Adafruit_HTU21DF htu2 = Adafruit_HTU21DF(); // create object for second sensor
Вышеуказанный код настраивает необходимые библиотеки и создает два объекта сенсоров,htu1иhtu2, который будет использоваться для чтения данных с каждого датчика независимо.
Далее, в рамкахsetup()в функции мы инициализируем серийный монитор и проверяем, подключены ли датчики:
void setup() {
Serial.begin(9600);
if (!htu1.begin() || !htu2.begin()) {
Serial.println("Couldn't find sensor!");
while (1);
}
}
Этот раздел кода инициализирует последовательное соединение на скорость 9600 бод и проверяет, работают ли оба датчика. Если датчик не обнаружен, будет выведено сообщение об ошибке, и программа остановится.
В основном цикле мы считываем значения температуры и влажности с обоих датчиков и отображаем их:
void loop() {
float temp1 = htu1.readTemperature();
float rel_hum1 = htu1.readHumidity();
float temp2 = htu2.readTemperature();
float rel_hum2 = htu2.readHumidity();
Serial.print("Sensor 1 Temp: "); Serial.print(temp1); Serial.print(" C");
Serial.print("\tSensor 1 Humidity: "); Serial.print(rel_hum1); Serial.println(" %");
Serial.print("Sensor 2 Temp: "); Serial.print(temp2); Serial.print(" C");
Serial.print("\tSensor 2 Humidity: "); Serial.print(rel_hum2); Serial.println(" %");
delay(500);
}
Этот цикл непрерывно считывает и выводит температуру и влажность с обоих датчиков каждые 500 миллисекунд. Вы можете наблюдать, как значения изменяются в ответ на изменения условий окружающей среды.
Демонстрация / Чего ожидать
Когда вы запускаете код, последовательный монитор будет отображать значения температуры и влажности для обоих датчиков. Вы можете применить тепло, например, от тепловой пушки, чтобы наблюдать, как значения температуры увеличиваются, в то время как уровень влажности может снижаться (в видео на 12:30). Если температура превышает максимальный измеряемый предел в 125°C, датчик может вернуть ноль или ошибку, указывая на то, что он не может считать значение.
Обратите внимание на ошибки подключения, такие как перепутанные соединения или плавающие входы, которые могут привести к неправильным показаниям. Следуя шагам, изложенным в этом руководстве, вы должны успешно внедрить датчики HTU21DF и эффективно контролировать их показания.
Временные метки видео
- 00:00- Введение
- 01:30- Объяснение проводки
- 02:45- Объяснение кода
- 12:30- Демонстрация с термофеном
- 14:00- Заключение
Этот учебник является частью: Цифровой датчик относительной влажности и температуры HTU21D
- Урок 35-1: Использование датчика температуры HTU21D
- Урок 35-2: Использование датчика температуры HTU21D - собственный код
- Урок 35: Использование датчика температуры HTU21D с Arduino
- Урок 36: Использование датчика температуры HTU21D с LCD Arduino пошаговый курс
- Отображение температуры с HTU21D на ЖК-дисплее
- Отображение температуры с HTU21D в виде столбчатой диаграммы на ЖК-дисплее
- Как использовать датчик влажности и температуры HTU21DF с Arduino (базовый код)
- Как использовать датчик влажности и температуры HTU21DF с Arduino (пользовательский код)
++
/***************************************************
This is an example for the HTU21D-F Humidity & Temperature Sensor
Designed specifically to work with the HTU21D-F sensor from Adafruit
----> https://www.adafruit.com/products/1899
These module use I2C to communicate; 2 pins are required to
interface
****************************************************/
#include <Wire.h>
#include "Adafruit_HTU21DF.h"
// Connect Vin to 3-5VDC
// Connect GND to ground
// Connect SCL to I2C clock pin (A5 on UNO)
// Connect SDA to I2C data pin (A4 on UNO)
Adafruit_HTU21DF htu1 = Adafruit_HTU21DF();//create object for first HTU21DF sensor
Adafruit_HTU21DF htu2 = Adafruit_HTU21DF();//create object for second HTU21DF sensor
//Adafruit_HTU21DF htu3 = Adafruit_HTU21DF();//create object for third HTU21DF sensor (disabled, remove // from begging of code)
void setup() {
Serial.begin(9600);
Serial.println("HTU21D-F test for two modules");
if (!htu.begin()) {
Serial.println("Couldn't find sensor!");
while (1);
}
}
void loop() {
//get value for sensor 1
float temp1 = htu1.readTemperature();
float rel_hum1 = htu1.readHumidity();
//get value for sensor 2
float temp2 = htu2.readTemperature();
float rel_hum2 = htu2.readHumidity();
//get value for sensor 3
float temp3 = htu3.readTemperature();
float rel_hum3 = htu3.readHumidity();
//print values for sensor 1
Serial.print("Sensor 1 Temp : "); Serial.print(temp1); Serial.print(" C");
Serial.print("\t\t");
Serial.print("Sensor 1 Humidity: "); Serial.print(rel_hum1); Serial.println(" %");
//print values for sensor 2
Serial.print("Sensor 2 Temp : "); Serial.print(temp2); Serial.print(" C");
Serial.print("\t\t");
Serial.print("Sensor 2 Humidity: "); Serial.print(rel_hum2); Serial.println(" %");
//print values for sensor 3
//Serial.print("Sensor 3 Temp : "); Serial.print(temp3); Serial.print(" C");
//Serial.print("\t\t");
//Serial.print("Sensor 3 Humidity: "); Serial.print(rel_hum3); Serial.println(" %");
delay(500);
}
Вещи, которые могут вам понадобиться
-
АмазонкаКупите модуль HTU21D на Amazon.amzn.to
-
eBayКупите HTU21D на eBayebay.us
-
АлиЭкспрессПриобретите HTU21D или SHT21 на AliExpress.s.click.aliexpress.com
Ресурсы и ссылки
-
ВнешнийБиблиотека Adafruit HTU21D (GitHub)github.com
Файлы📁
Технический паспорт (pdf)
-
HTU21D_даташит_температуры_и_влажности
HTU21D_temerature_humidity_datasheet.pdf0.96 MB