Home IoT Hub Series · 07

[7편] 욕실 습도 - DHT22로 곰팡이 예방 센서

[7편] 욕실 습도 - DHT22로 곰팡이 예방 센서 대표 이미지

또 DHT22다. 이번에는 욕실 습도만 측정해서 19번 슬롯(Bath Hum)으로 보낸다. 습도가 70%를 넘으면 환기가 필요하다는 신호다. 코드는 6편에서 습도 버전으로 살짝만 바꾼다.

ESP-01과 온습도 센서, 충전 모듈, 소형 배터리를 한 보드에 올린 욕실 습도 노드 테스트 사진
욕실 습도 노드를 소형 배터리 버전으로 구성한 테스트 사진이다. 전력 소모와 크기를 줄이려고 Wemos D1 Mini 대신 ESP-01 모듈을 사용했고, 온습도 센서·충전 모듈·소형 배터리를 한 보드에 올렸다. ESP-01 옆 핀헤더는 업로드와 디버깅용이며, 최종 납땜 버전에서는 보이지 않게 정리할 수 있다.

준비물과 가격

부품수량개당 가격
Wemos D1 Mini1개2,000원
DHT221개2,000원
점퍼 와이어 3개
합계4,000원

핀 연결

[7편] 욕실 습도 - DHT22로 곰팡이 예방 센서 배선도
센서/모듈보드 연결
VCC3.3V
DATAD1 (GPIO5)
GNDGND

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원)