This tutorial is part of: Дигитален сензор за релативна влажност и температура HTU21D
Видеа поврзани со дигитален сензор за релативна влажност и температура HTU21D. Линкови до други видеа се наоѓаат под оваа статија.
Лекција 35: Користење на HTU21D температурен сензор со Arduino
Лекција 35: Користење на HTU21D температурен сензор со Arduino
Во ова упатство, ќе научиме како да го поврземе HTU21D температурниот сензор со Arduino. Овој сензор овозможува прецизно мерење на температура и влажност користејќи I2C комуникација, што го прави лесен за интегрирање во различни проекти. До крајот на оваа лекција, ќе можете да читате вредности на температура и влажност од сензорот и да ги прикажувате на Serial Monitor.

За овој проект, ќе ја користиме Adafruit библиотеката, која обезбедува едноставен начин за комуникација со HTU21D сензорот. Ќе научите како да го поставите поврзувањето, да го напишете кодот и да ги разберете клучните идентификатори користени во програмата. Ако ви треба појаснување за кој било дел од процесот, можете да се повикате на видеото (во видео на 0:00).
Објаснување на хардверот
HTU21D е дигитален сензор за влажност и температура. Работи на напонски опсег од 1.5V до 3.6V, што го прави погоден и за 3.3V и за 5V системи. Сензорот комуницира преку I2C, барајќи само две жици за пренос на податоци: Serial Data Line (SDA) и Serial Clock Line (SCL). Сензорот има многу ниска потрошувачка на енергија, трошејќи само 0.02 µA кога е во мирување и до 450 µA за време на мерења.
Покрај сензорот, ќе ви треба Arduino плоча и неколку jumper жици за да поврзете сè. Поврзувањата се едноставни: напојте го сензорот, поврзете ги линиите за податоци и сте подготвени. Осигурете се дека вашите поврзувања се сигурни за да избегнете какви било комуникациски проблеми.
Детали од datasheet
| Производител | TE Connectivity |
|---|---|
| Број на дел | HTU21D-F |
| Логички/IO напон | 1.5 - 3.6 V |
| Напон на напојување | 3.3 V |
| Излезна струја (типична) | 0.02 µA (мирување), 450 µA (активна) |
| Температурен опсег | -40 до +125 °C |
| Опсег на влажност | 0 до 100 % RH |
| Резолуција (температура) | 0.01 °C |
| Резолуција (влажност) | 0.04 % RH |
| Пакет | DFN-8 |
- Осигурете соодветен напон на напојување (1.5 - 3.6 V) за да избегнете оштетување.
- Користете pull-up отпорници на SDA и SCL линиите ако е потребно.
- Држете ги жиците кратки за да го минимизирате шумот во I2C комуникацијата.
- Проверете ги поврзувањата внимателно за да избегнете лебдечки влезови.
- Користете ладилник ако работите блиску до максималните температурни граници.
Инструкции за поврзување

За да го поврзете HTU21D сензорот со вашиот Arduino, започнете со поврзување на пиновите за напојување. Поврзете го левиот пин на сензорот со 3.3V излезот на Arduino. Вториот пин треба да биде поврзан со земја (GND). Потоа, поврзете го SDA пинот на сензорот со A4 пинот на Arduino, кој служи како линија за податоци за I2C комуникација. Конечно, поврзете го SCL пинот на сензорот со A5 пинот на Arduino, кој дејствува како линија за часовник. Осигурете се дека сите поврзувања се сигурни за да одржите доверлива комуникација.
Ако користите друга плоча, SDA и SCL пиновите може да варираат, па проверете ги спецификациите на вашата плоча. Во видеото, накратко се дискутираат алтернативни опции за поврзување (во видео на 1:30).
Примери на код и објаснување
Сега ќе го разгледаме кодот што комуницира со HTU21D сензорот. Прво, треба да ги вклучиме потребните библиотеки за I2C комуникација и HTU21D сензорот. Следниот извадок ја покажува setup функцијата:
void setup() {
Serial.begin(9600);
if (!htu.begin()) {
Serial.println("Couldn't find sensor!");
while (1);
}
}
Овде, го иницијализираме Serial Monitor со брзина на пренос од 9600. Потоа се обидуваме да го иницијализираме сензорот со htu.begin(). Ако сензорот не е пронајден, програмата ќе испечати порака за грешка и ќе запре.
Следно, континуирано читаме вредности на температура и влажност во loop функцијата:
void loop() {
float temp = htu.readTemperature();
float rel_hum = htu.readHumidity();
Serial.print("Temperature: "); Serial.print(temp); Serial.println(" C");
Serial.print("Humidity: "); Serial.print(rel_hum); Serial.println(" %");
delay(500);
}
Во оваа јамка, ја читаме температурата користејќи htu.readTemperature() и ја складираме во променливата temp. Слично, ја читаме влажноста со htu.readHumidity(). Вредностите потоа се печатат на Serial Monitor секои 500 милисекунди.
За поструктуриран пристап, можете да дефинирате функции за обработка на читањата. Целосниот код ќе се вчита подолу во оваа статија, обезбедувајќи ви целосен пристап до сите функционалности дискутирани.
Демонстрација / Што да очекувате
Кога ќе го поставите кодот на вашиот Arduino и ќе го отворите Serial Monitor, треба да видите континуирани читања на температура и влажност. Вредностите ќе се ажурираат секоја половина секунда. Ако сензорот детектира температури над неговата максимална граница од 125 °C, може да прикаже нула или погрешни вредности. Ова е вообичаена замка на која треба да внимавате за време на тестирање (во видео на 4:30).
Временски ознаки на видеото
- [00:00] Вовед
- [00:22] Преглед на сензорот
- [01:22] Преглед на datasheet
- [02:28] Поврзување
- [03:03] Инсталација на библиотека
- [04:05] Објаснување на код (Дел 1)
- [08:33] Објаснување на код (Дел 2)
- [07:34] Демонстрација во живо
This tutorial is part of: Дигитален сензор за релативна влажност и температура HTU21D
- Lesson 35-1: Using the HTU21D Temperature Sensor
- Lesson 35-2: Using the HTU21D Temperature Sensor Custom Code
- Lesson 36: Using the HTU21D Temperature Sensor with an LCD Arduino Step-by-Step Course
- Using Two More HTU21DF Humidity and Temperature Sensors with Arduino
- Displaying Temperature from an HTU21D on an LCD
- Displaying Temperature from an HTU21D as a Bar Graph on an LCD
- How to Use the HTU21DF Humidity and Temperature Sensor with Arduino (Basic Code)
- How to Use the HTU21DF Humidity and Temperature Sensor with Arduino (Custom Code)
++
/***************************************************
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);
}
Things you might need
-
Amazon
-
eBayPurchase HTU21D from eBayebay.us
-
AliExpressPurchase HTU21D or SHT21 from AliExpresss.click.aliexpress.com
Resources & references
-
ExternalAdafruit HTU21D Library (GitHub)github.com
-
ExternalDifference between HTU21DF and HTU21D (image)robojax.com
-
External
-
ExternalHTU21D Datasheet (PDF)cdn-shop.adafruit.com
Files📁
Arduino Libraries (zip)
-
Adafruit HTU21DF library (Robojax.com)
robojax_HTU21DF_Adafruit_HTU21DF_Library-master.zip0.01 MB