Home IoT Hub Series · 07
[7편] 욕실 습도 - DHT22로 곰팡이 예방 센서
![[7편] 욕실 습도 - DHT22로 곰팡이 예방 센서 대표 이미지](/iot-lab/assets/bathroom-humidity-dht22-hero.png)
또 DHT22다. 이번에는 욕실 습도만 측정해서 19번 슬롯(Bath Hum)으로 보낸다. 습도가 70%를 넘으면 환기가 필요하다는 신호다. 코드는 6편에서 습도 버전으로 살짝만 바꾼다.

준비물과 가격
| 부품 | 수량 | 개당 가격 |
|---|---|---|
| Wemos D1 Mini | 1개 | 2,000원 |
| DHT22 | 1개 | 2,000원 |
| 점퍼 와이어 3개 | — | — |
| 합계 | 4,000원 |
핀 연결
| 센서/모듈 | 보드 연결 |
|---|---|
| VCC | 3.3V |
| DATA | D1 (GPIO5) |
| GND | GND |
6편과 동일: DHT22 VCC→3.3V, DATA→D1(GPIO5), GND→GND.
전체 코드
[7편] 욕실 습도 - DHT22로 곰팡이 예방 센서 - 전체 코드
#include <ESP8266WiFi.h> #include <ESP8266HTTPClient.h> #include <DHT.h> const char* ssid = "IoT_Hub_Net"; const char* password = "iothub1234"; const char* hubURL = "http://192.168.1.1"; #define DHTPIN 5 #define DHTTYPE DHT22 #define SLOT_NO 19 // 두뇌 19번 슬롯 = Bath Hum #define INTERVAL 30000 DHT dht(DHTPIN, DHTTYPE); void setup() { Serial.begin(115200); dht.begin(); WiFi.mode(WIFI_STA); WiFi.begin(ssid, password); Serial.print("Connecting to IoT_Hub_Net"); while (WiFi.status() != WL_CONNECTED) { delay(500); Serial.print("."); } Serial.println("\nConnected!"); } void loop() { float hum = dht.readHumidity(); if (isnan(hum)) { Serial.println("Read failed"); delay(2000); return; } Serial.print("Bath Hum: "); Serial.print(hum); Serial.println(" %"); WiFiClient client; HTTPClient http; String url = String(hubURL) + "/set?no19=" + String(hum); http.begin(client, url); http.GET(); http.end(); Serial.println("HTTP -> " + url); delay(INTERVAL); }
업로드 및 확인
시리얼 모니터에서 Bath Hum: 62.0 %, 두뇌 OLED 19번 Bath Hum 확인.
안 될 때 체크포인트
3편과 동일. 욕실에 설치할 때는 DHT22가 샤워기 물에 직접 맞지 않도록 주의한다.
다음 글 예고
보일러 + 온수 배관 온도. DS18B20 두 개를 하나의 D1 Mini에 연결한다.
준비물: Wemos D1 Mini (2,000원), DS18B20 × 2 (3,000원), 4.7kΩ 저항 (100원)