기기 코딩 25 / 31
온습도계 만들기
DHT11 센서로 온도와 습도를 재서 2초마다 시리얼 모니터에 보여 줘요.
- 준비물: DHT11 온습도 센서 모듈(다리 3개) 1개, 점퍼선 3개
- 라이브러리: 도구 → 라이브러리 관리에서 'DHT sensor library'(Adafruit)를 설치해요. 함께 설치할지 물으면 '모두 설치'를 눌러요.
| 센서 다리 | 아두이노 Uno | ESP32 |
|---|---|---|
| S 또는 DATA (신호) | 4번 | GPIO 4 |
| + 또는 VCC | 5V | 3V3 |
| − 또는 GND | GND | GND |
// 온습도계#include <DHT.h>← 설치한 DHT 라이브러리 불러오기const int DHT_PIN = 4;← Uno·ESP32 모두 4번DHT dht(DHT_PIN, DHT11);← 4번 핀에 DHT11 센서가 있어요void setup() { Serial.begin(115200); dht.begin();← 센서 준비}void loop() { delay(2000);← DHT11은 2초에 한 번만 읽을 수 있어요 float t = dht.readTemperature();← 온도 (°C). float = 소수점 있는 숫자 float h = dht.readHumidity();← 습도 (%) if (isnan(t) || isnan(h)) {← 읽기에 실패하면 (숫자가 아니면) Serial.println("센서를 읽지 못했어요. 연결을 확인해 주세요."); return;← 이번 반복은 여기서 끝 } Serial.print("온도: "); Serial.print(t); Serial.print("°C 습도: "); Serial.print(h); Serial.println("%");}- 확인: 시리얼 모니터(115200)에 2초마다 '온도: 24.00°C 습도: 41.00%'처럼 나와요.
- 센서에 입김을 불면 습도가 올라가요.
- 다리가 4개인 센서(모듈이 아닌 것)는 신호선과 +사이에 10kΩ 저항이 하나 더 필요해요.
바꿔 보기: ① 28°C가 넘으면 빨간 LED 켜기 ② 습도가 높으면 부저로 알림 ③ 시리얼 플로터로 온도 그래프 보기
💬 막히면 도우미에게 물어보세요
오류가 나면 오류 문구를 그대로 붙여 넣으면 더 정확해요. 예: “온습도계에서 '센서를 읽지 못했어요'만 계속 나와요”