Home IoT Hub Series · 15
[15편] 비 오는 줄 모르고 창문 열어두지 않게 - 우적 센서 빗물 감지 노드
![[15편] 비 오는 줄 모르고 창문 열어두지 않게 - 우적 센서 빗물 감지 노드 대표 이미지](/iot-lab/assets/rain-sensor-hero.png)
이 글은 2편: 두뇌 만들기에서 구축한 중앙 NodeMCU 서버에 연결되는 우리집 IoT 허브 구성 문서입니다. 우적 센서가 빗물 접촉 상태를 보내 창문·빨래·외부 노드 보호 판단에 활용됩니다. 수집된 데이터는 로컬 무선망
IoT_Hub_Net을 통해 중앙 서버의 18번 빗물 감지 슬롯(/set?no18=값)을 갱신하며, 20채널 스마트홈 통합 컨트롤러의 판단 근거로 사용됩니다.우적 센서는 빗방울이 감지판에 닿으면 저항이 낮아지는 원리로 동작합니다. 18번 Rain 슬롯으로 0(맑음) 또는 1(비 옴)을 보냅니다.
준비물과 가격
| 부품 | 수량 | 개당 가격 |
|---|---|---|
| Wemos D1 Mini | 1개 | 2,000원 |
| 우적 센서 모듈 | 1개 | 1,000원 |
| 점퍼 와이어 3개 | — | — |
| 합계 | 3,000원 |
핀 연결
| 센서/모듈 | 보드 연결 |
|---|---|
| VCC | 3.3V |
| GND | GND |
| AOUT | A0 |
전체 코드
아날로그 값을 읽어 임계값 이하면 비가 온 것으로 판정한다. 건조한 상태: 900~1023, 젖은 상태: 400 이하.
#include <ESP8266WiFi.h> #include <ESP8266HTTPClient.h> const char* ssid = "IoT_Hub_Net"; const char* password = "iothub1234"; const char* hubURL = "http://192.168.1.1"; #define RAIN_PIN A0 #define SLOT_NO 18 #define THRESHOLD 500 // 500 이하 = 비 옴 #define INTERVAL 10000 void setup() { Serial.begin(115200); pinMode(RAIN_PIN, INPUT); 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() { int raw = analogRead(RAIN_PIN); int rain = (raw < THRESHOLD) ? 1 : 0; Serial.print("Rain: "); Serial.print(raw); Serial.print(" -> "); Serial.println(rain ? "RAINING" : "DRY"); WiFiClient client; HTTPClient http; String url = String(hubURL) + "/set?no" + String(SLOT_NO) + "=" + String(rain); http.begin(client, url); http.GET(); http.end(); Serial.println("HTTP -> " + url); delay(INTERVAL); }
업로드 및 확인
USB 데이터 케이블로 Wemos D1 Mini를 PC에 연결하고, Arduino IDE에서 ESP8266 보드와 포트를 선택한 뒤 소스를 업로드합니다. 업로드가 끝나면 툴 → 시리얼 모니터를 열고 보드레이트를 115200으로 맞춥니다.
시리얼 모니터
업로드가 끝나면 Arduino IDE의 툴 → 시리얼 모니터를 열고 보드레이트를 115200으로 맞춥니다. 다음은 정상 동작을 확인하기 위한 시리얼 모니터 출력 예시입니다. 이 로그는 실제 캡처가 아니라, 센서 부식 방지를 위한 간헐 전원 공급과 18번 슬롯 전송 흐름 예시입니다.
[BOOT] Home IoT Node #15 - Rain sensor [POWER] rain board VCC=ON for 800 ms [SENSOR] rain_raw=736 threshold=500 rain=NO [POWER] rain board VCC=OFF to prevent corrosion [HTTP] GET /set?no18=0 [HUB] 200 OK - slot no18=DRY [LOOP] next rain check in 300000 ms
Connected또는connected가 보이면 Wi-Fi 연결 단계는 통과한 것입니다.HTTP 200또는200 OK가 보이면 두뇌 서버에 값이 전달된 것입니다.- 값이 갱신되지 않으면 먼저 URL의 슬롯 번호와 센서 배선을 함께 확인합니다.
확인
마른 손가락으로 감지판을 만지면 DRY, 젖은 손가락으로 만지면 RAINING이 표시됩니다. 베란다 바깥쪽에 설치할 때는 감지판이 위로 향하도록 배치합니다.
다음 글 예고
거실 조명 상태와 현관문 잠금 상태를 함께 확인하는 구성입니다. 조도센서로 조명 ON/OFF를, 도어락 센서로 잠금 상태를 확인합니다.
우적 센서, 활용 기준
감지판에 빗방울이 닿으면 맑음/비옴을 알려주는 우적 센서는 단순하지만 생활 밀착형 자동화의 방아쇠 역할을 톡톡히 합니다. 우리집 IoT 허브에 연결해두면 다음과 같은 상황에서 진가를 발휘합니다.
안 될 때 체크포인트
이 노드는 코드만 보면 짧아 보일 수 있지만, 실제 집에 붙이면 센서 위치·전원·무선망·노이즈 때문에 값이 쉽게 흔들립니다. 아래 항목은 두뇌 서버에 잘못된 판단 근거가 들어가지 않도록 현장에서 먼저 점검할 내용입니다.
| 증상 | 가능한 원인 | 현장 해결 방법 |
|---|---|---|
| 센서 전극이 며칠 만에 부식됨 | 빗물 상태에서 5V를 계속 흘려 전기분해가 발생함 | VCC를 디지털 핀으로 제어해 5분에 한 번만 켜고 측정 직후 LOW로 내려 부식을 줄입니다. |
| 비가 그쳤는데 계속 비로 표시됨 | 기판 표면의 물막이나 먼지가 저항값을 낮게 유지함 | 기판을 약간 기울여 물이 고이지 않게 하고, 해제 조건은 연속 건조값 기준으로 둡니다. |
| 이슬이나 안개에도 비로 잡힘 | 우적 센서는 강수량이 아니라 표면 젖음 상태를 감지함 | 빗물 판단은 민감도를 낮추고, 외부 온습도나 시간 조건과 함께 해석합니다. |
| 겨울에 값이 불안정함 | 얼음·성에가 전극 위에 남아 저항이 이상하게 변함 | 겨울철에는 즉시 제어보다 참고값으로 쓰고, 필요하면 방수형 광학 빗물 센서로 교체합니다. |
활용 방안
- 빨래·창문·베란다 알림: 외출 중 비가 시작되면 스마트폰으로 알림을 받아 널어둔 빨래나 열린 창문을 떠올릴 수 있습니다.
- 자동 차양·스마트플러그 연동: 허브의 규칙으로 비옴 신호가 뜨면 전동 차양을 접거나, 야외 콘센트에 물린 스마트플러그를 차단해 감전·누전 위험을 줄입니다.
- 화분 자동관수 판단: 비가 오는 날에는 관수 펌프 동작을 건너뛰어 물 낭비와 과습을 막습니다. 텃밭·베란다 정원에 특히 유용합니다.
- 캠핑·차박: 타프나 텐트 위에 두면 새벽에 내리는 비를 미리 감지해 대비할 수 있습니다.
추천 설치 장소
- 하늘이 탁 트여 빗물이 직접 닿는 곳에 두되, 처마 밑·차양 안쪽처럼 비를 가리는 위치는 피하는 것이 좋습니다.
- 감지판은 반드시 15~30도 기울여 설치해 빗물이 고이지 않고 흘러내리게 합니다. 수평으로 두면 물이 마른 뒤에도 오래 '비옴'으로 남습니다.
- 에어컨 실외기·배수 호스 근처는 금물입니다. 응결수나 드레인 물방울을 비로 오인합니다. 잔디 스프링클러 사정권도 피하는 것이 좋습니다.
실전 팁과 주의점
- 청소 주기: 감지판의 구리 패턴은 시간이 지나면 먼지·황사·산화막이 쌓여 감도가 떨어집니다. 한두 달에 한 번 마른 솔이나 알코올 면봉으로 닦아주세요.
- 임계값 조정: 디지털 출력만 쓰지 말고 아날로그 값을 함께 읽으면 '이슬비'와 '소나기'를 구분할 수 있습니다. 모듈의 가변저항으로 오탐이 잦은 환경에 맞게 문턱값을 낮추거나 높이세요.
- 이슬·서리 오탐: 새벽 결로나 서리도 물이라 비옴으로 잡힙니다. 알림 규칙에 '몇 분 이상 지속될 때만' 조건을 걸면 오탐이 크게 줄어듭니다.
- 방수와 배선 보호: 감지판은 젖어도 되지만 기판·커넥터는 절대 침수 금지입니다. 컨트롤러는 방수함에 넣고, 케이블은 아래로 물이 떨어지도록 U자 처짐(드립 루프)을 만들어 배선 틈으로 물이 타고 들어오지 않게 합니다.
자주 묻는 질문
Q. 비가 그쳤는데 계속 '비옴'으로 나와요.
감지판에 물이 남아 있어서입니다. 각도를 더 세우고, 아날로그 임계값을 조금 높여 물기가 얇아지면 빠르게 맑음으로 돌아오게 합니다.
Q. 눈도 감지하나요?
마른 눈은 잘 못 잡고, 감지판 위에서 녹아 물이 될 때 반응합니다. 겨울철 강수 감지는 보조 수단으로만 참고합니다.
Q. 감지판 수명은 얼마나 되나요?
실외에서 6개월~1년쯤 쓰면 부식으로 감도가 떨어집니다. 감지판만 저렴하게 교체할 수 있으니 반응이 둔해지면 새것으로 바꾸세요.
이 글은 2편의 중앙 두뇌 서버와 3~19편의 분산 엣지 노드가 함께 구성하는 20채널 홈 IoT 시스템의 일부입니다. 필요한 편으로 이동해 슬롯과 센서 흐름을 함께 확인합니다.
[1편] 우리집 IoT 허브 전체 그림[2편] 중앙 두뇌 서버 만들기 · 슬롯 1~20[3편] 집 안 온습도, 감으로 보지 말고 숫자로 보자 · 슬롯 1·2[4편] 문 닫았나 계속 신경 쓰일 때 · 슬롯 9[5편] 냉장고가 제대로 돌고 있는지 눈으로 확인하자 · 슬롯 12[6편] 창문 열어도 될까? · 슬롯 3[7편] 욕실 곰팡이 생기기 전에 습도부터 잡자 · 슬롯 19[8편] 보일러가 실제로 도는지 배관 온도로 확인하자 · 슬롯 5·17[9편] 외출했는데 가스레인지가 켜져 있지 않을까? · 슬롯 6[10편] 가스 냄새가 나기 전에 먼저 경고받자 · 슬롯 7[11편] 집을 비웠을 때 불꽃 징후를 먼저 잡자 · 슬롯 8[12편] 머리가 멍한 이유가 공기 때문인지 확인하자 · 슬롯 13·14[13편] 전기세 무지 나오네, 이번 기회에 눈으로 보자 · 슬롯 15[14편] 물 새는지, 얼마나 쓰는지 숫자로 보자 · 슬롯 16[15편] 비 오는 줄 모르고 창문 열어두지 않게 · 슬롯 18[16편] 불 껐나, 문 잠갔나 한 번에 확인하자 · 슬롯 11·10[17편] 리모컨 없이 에어컨을 IoT 허브에서 제어하자 · 슬롯 4[18편] 강아지 밥그릇이 비었는지 눈으로 보자 · 슬롯 20[19편] 사람 있을 때만 시원하게, 없을 땐 아끼자 · 슬롯 1·4[20편] 집 안 상태가 한 화면에 보이기 시작했다 · 슬롯 전체