이 튜토리얼은 다음의 일부입니다: 디지털 상대 습도 및 온도 센서 HTU21D
디지털 상대 습도 및 온도 센서 HTU21D 관련 동영상입니다. 다른 동영상 링크는 이 글 아래에 있습니다.
제35과: Arduino와 함께 HTU21D 온도 센서 사용하기
레슨 35: Arduino와 HTU21D 온도 센서 사용하기
이 튜토리얼에서는 HTU21D 온도 센서를 Arduino와 연결하는 방법을 배웁니다. 이 센서는 I2C 통신을 사용하여 온도와 습도를 정확하게 측정할 수 있어 다양한 프로젝트에 쉽게 통합할 수 있습니다. 이 레슨이 끝나면 센서에서 온도와 습도 값을 읽고 시리얼 모니터에 표시할 수 있게 됩니다.

이 프로젝트에서는 HTU21D 센서와 통신하는 간단한 방법을 제공하는 Adafruit 라이브러리를 사용합니다. 배선 설정 방법, 코드 작성 방법, 프로그램에서 사용되는 주요 식별자 이해 방법을 배우게 됩니다. 과정의 어떤 부분에 대해 설명이 필요하면 비디오(비디오 0:00)를 참조할 수 있습니다.
하드웨어 설명
HTU21D는 디지털 습도 및 온도 센서입니다. 1.5V ~ 3.6V의 전압 범위에서 작동하여 3.3V 및 5V 시스템 모두에 적합합니다. 센서는 I2C를 통해 통신하며 데이터 전송에 SDA(직렬 데이터 라인)와 SCL(직렬 클록 라인) 두 개의 와이어만 필요합니다. 이 센서는 대기 시 0.02 µA, 측정 중 최대 450 µA만 소비하는 매우 낮은 전력 소비를 특징으로 합니다.
센서 외에도 Arduino 보드와 모든 것을 연결할 점퍼 와이어가 필요합니다. 연결은 간단합니다: 센서에 전원을 공급하고 데이터 라인을 연결하면 준비 완료입니다. 통신 문제를 피하기 위해 연결이 안전한지 확인하세요.
데이터시트 세부 정보
| 제조업체 | 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)을 확인하세요.
- 필요한 경우 SDA 및 SCL 라인에 풀업 저항을 사용하세요.
- I2C 통신의 노이즈를 최소화하려면 배선을 짧게 유지하세요.
- 플로팅 입력을 피하려면 연결을 주의 깊게 확인하세요.
- 최대 온도 한계 근처에서 작동하는 경우 방열판을 사용하세요.
배선 지침

HTU21D 센서를 Arduino에 배선하려면 전원 핀을 연결하는 것부터 시작하세요. 센서의 왼쪽 핀을 Arduino의 3.3V 출력에 연결하세요. 두 번째 핀은 접지(GND)에 연결해야 합니다. 다음으로 센서의 SDA 핀을 I2C 통신의 데이터 라인 역할을 하는 Arduino의 A4 핀에 연결하세요. 마지막으로 센서의 SCL 핀을 클록 라인 역할을 하는 Arduino의 A5 핀에 연결하세요. 안정적인 통신을 유지하려면 모든 연결이 안전한지 확인하세요.
다른 보드를 사용하는 경우 SDA 및 SCL 핀이 다를 수 있으므로 보드 사양을 확인하세요. 비디오에서 대체 배선 옵션이 간략히 논의됩니다(비디오 1:30).
코드 예제 및 설명
이제 HTU21D 센서와 인터페이스하는 코드를 살펴보겠습니다. 먼저 I2C 통신과 HTU21D 센서에 필요한 라이브러리를 포함해야 합니다. 다음 발췌문은 설정 함수를 보여줍니다:
void setup() {
Serial.begin(9600);
if (!htu.begin()) {
Serial.println("Couldn't find sensor!");
while (1);
}
}
여기서 9600의 보드 속도로 시리얼 모니터를 초기화합니다. 그런 다음 htu.begin()으로 센서 초기화를 시도합니다. 센서를 찾지 못하면 프로그램은 오류 메시지를 출력하고 중지합니다.
다음으로 루프 함수에서 온도와 습도 값을 지속적으로 읽습니다:
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()로 습도를 읽습니다. 그런 다음 값은 500밀리초마다 시리얼 모니터에 출력됩니다.
더 구조화된 접근 방식을 위해 읽기를 처리하는 함수를 정의할 수 있습니다. 전체 코드는 이 기사 아래에 로드되어 논의된 모든 기능에 대한 완전한 액세스를 제공합니다.
데모 / 기대 효과
코드를 Arduino에 업로드하고 시리얼 모니터를 열면 온도와 습도의 연속적인 판독값이 표시되어야 합니다. 값은 0.5초마다 업데이트됩니다. 센서가 최대 한계인 125 °C 이상의 온도를 감지하면 0 또는 잘못된 값을 표시할 수 있습니다. 이는 테스트 중 주의해야 할 일반적인 함정입니다(비디오 4:30).
비디오 타임스탬프
- [00:00] 소개
- [00:22] 센서 개요
- [01:22] 데이터시트 검토
- [02:28] 배선
- [03:03] 라이브러리 설치
- [04:05] 코드 설명(1부)
- [08:33] 코드 설명(2부)
- [07:34] 라이브 데모
이 튜토리얼은 다음의 일부입니다: 디지털 상대 습도 및 온도 센서 HTU21D
- 레슨 35-1: HTU21D 온도 센서 사용하기
- 레슨 35-2: HTU21D 온도 센서 사용자 정의 코드 사용하기
- 레슨 36: HTU21D 온도 센서를 LCD 아두이노와 함께 사용하기 단계별 과정
- 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);
}
필요할 수 있는 것들
-
아마존
-
이베이Purchase HTU21D from eBayebay.us
-
알리익스프레스Purchase HTU21D or SHT21 from AliExpresss.click.aliexpress.com
자원 및 참고자료
-
외부Adafruit HTU21D Library (GitHub)github.com
-
외부Difference between HTU21DF and HTU21D (image)robojax.com
-
외부HTU21D Datasheet (PDF)cdn-shop.adafruit.com
파일📁
아두이노 라이브러리 (zip)
-
Adafruit HTU21DF library (Robojax.com)
robojax_HTU21DF_Adafruit_HTU21DF_Library-master.zip0.01 MB