Home IoT Hub Series · 05

[5편] 냉장고가 제대로 돌고 있는지 눈으로 확인하자 - DS18B20 냉장실 온도 감시

[5편] 냉장고가 제대로 돌고 있는지 눈으로 확인하자 - DS18B20 냉장실 온도 감시 대표 이미지
시스템 아키텍처 및 데이터 파이프라인 안내
이 글은 2편: 두뇌 만들기에서 구축한 중앙 NodeMCU 서버에 연결되는 우리집 IoT 허브 구성 문서입니다. DS18B20 방수 프로브가 냉장실 온도를 측정해 식품 보관 상태와 냉장고 이상 여부를 판단하게 합니다. 수집된 데이터는 로컬 무선망 IoT_Hub_Net을 통해 중앙 서버의 12번 냉장고 온도 슬롯(/set?no12=값)을 갱신하며, 20채널 스마트홈 통합 컨트롤러의 판단 근거로 사용됩니다.

[4편] 문 닫았나 계속 신경 쓰일 때. 이번 편에서는 냉장고 온도를 측정합니다. DS18B20 방수형 센서를 냉장실 안에 넣어 실시간 온도를 두뇌로 보내면, 냉장고가 꺼졌는지 또는 온도가 너무 높게 설정되어 있는지 한눈에 확인할 수 있습니다.

준비물과 가격

부품수량개당 가격비고
Wemos D1 Mini (ESP8266)1개2,000원센서 노드 본체
DS18B20 방수형1개2,000원스테인리스 프로브, 1m 케이블
4.7kΩ 저항1개100원풀업용
점퍼 와이어3개
Micro USB 케이블 + 충전기1세트
합계4,100원

핀 연결

[5편] 냉장고가 제대로 돌고 있는지 눈으로 확인하자 - DS18B20 냉장실 온도 감시 배선도
센서/모듈보드 연결
빨간색 (VCC)3.3V
검은색 (GND)GND
노란색 (DATA)D1 (GPIO5)
4.7kΩ 저항은 DATA와 VCC 사이에 반드시 연결해야 합니다. 이 풀업 저항이 없으면 데이터 신호가 불안정해집니다. 저항에는 극성이 없으므로 방향과 관계없이 연결할 수 있습니다.

선행 작업

라이브러리검색어
OneWireOneWire
DallasTemperatureDallasTemperature

🚨 코드 넣기 전에 반드시!!

두뇌가 켜져 있어야 한다. 센서 프로브를 냉장고 문에 끼워 넣을 때 케이블이 눌리지 않게 주의. DS18B20 케이블은 얇아서 문틈 사이로 잘 들어간다. 데이터는 12번 슬롯(Fridge Temp)으로 들어간다.

전체 코드

[5편] 냉장고가 제대로 돌고 있는지 눈으로 확인하자 - DS18B20 냉장실 온도 감시 - 전체 코드
#include <ESP8266WiFi.h>
#include <ESP8266HTTPClient.h>
#include <OneWire.h>
#include <DallasTemperature.h>

const char* ssid     = "IoT_Hub_Net";
const char* password = "iothub1234";
const char* hubURL   = "http://192.168.1.1";

#define ONE_WIRE_BUS 5  // D1 (GPIO5)
#define SLOT_NO      12 // 두뇌 12번 슬롯 = Fridge Temp
#define INTERVAL     30000 // 30초 간격

OneWire oneWire(ONE_WIRE_BUS);
DallasTemperature sensors(&oneWire);

void setup() {
  Serial.begin(115200);
  sensors.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! IP: " + WiFi.localIP().toString());
}

void loop() {
  sensors.requestTemperatures();
  float temp = sensors.getTempCByIndex(0);

  if (temp == DEVICE_DISCONNECTED_C || temp < -50 || temp > 50) {
    Serial.println("Sensor read error, retrying...");
    delay(2000);
    return;
  }

  Serial.print("Fridge: "); Serial.print(temp); Serial.println(" C");

  WiFiClient client;
  HTTPClient http;
  String url = String(hubURL) + "/set?no" + String(SLOT_NO) + "=" + String(temp);
  http.begin(client, url);
  int code = http.GET();
  http.end();

  Serial.print("HTTP "); Serial.print(code);
  Serial.print(" -> "); Serial.println(url);
  Serial.println();

  delay(INTERVAL);
}

업로드 및 확인

1. 툴 → 보드 → LOLIN(WEMOS) D1 R2 & mini, 업로드. 2. 시리얼 모니터 115200. Fridge: 3.5 C 같은 값이 찍히고 HTTP 200이면 성공. 3. 두뇌 OLED에서 12번 Fridge Temp3.5로 표시되는지 확인.

시리얼 모니터

업로드가 끝나면 Arduino IDE의 툴 → 시리얼 모니터를 열고 보드레이트를 115200으로 맞춥니다. 다음은 정상 동작을 확인하기 위한 시리얼 모니터 출력 예시입니다. 이 로그는 실제 캡처가 아니라, 냉장고 내부 온도와 12번 슬롯 전송 흐름을 확인하기 위한 정상 출력 예시입니다.

[BOOT] Home IoT Node #05 - Fridge temperature
[WIFI] connected to IoT_Hub_Net, ip=192.168.1.52
[1-WIRE] DS18B20 found, parasite_power=OFF
[SENSOR] fridge_temp=3.8C
[HTTP] GET /set?no12=3.8
[HUB] 200 OK - slot no12 updated
[CHECK] gasket cable route OK, next sample in 60000 ms
  • Connected 또는 connected가 보이면 Wi-Fi 연결 단계는 통과한 것입니다.
  • HTTP 200 또는 200 OK가 보이면 두뇌 서버에 값이 전달된 것입니다.
  • 값이 갱신되지 않으면 먼저 URL의 슬롯 번호와 센서 배선을 함께 확인합니다.

안 될 때 체크포인트

증상원인해결
-127.0만 나옴풀업 저항 누락4.7kΩ 저항이 DATA-3.3V 사이에 꽂혔는지 확인
Sensor read error접촉 불량점퍼 와이어가 DS18B20 리드선에 단단히 물렸는지 확인
값이 85.0 고정전원 노이즈DS18B20이 리셋된 상태. 전원을 뺐다가 다시 꽂는다

현장 추가 체크포인트

이 노드는 코드만 보면 짧아 보일 수 있지만, 실제 집에 붙이면 센서 위치·전원·무선망·노이즈 때문에 값이 쉽게 흔들립니다. 아래 항목은 두뇌 서버에 잘못된 판단 근거가 들어가지 않도록 현장에서 먼저 점검할 내용입니다.

증상가능한 원인현장 해결 방법
냉장고 문이 잘 안 닫힘센서 케이블이 고무 패킹을 두껍게 밀어 냉기가 새는 구조문 정면 패킹을 피하고 힌지 쪽의 눌림이 적은 틈으로 얇은 케이블을 빼며, 닫은 뒤 종이 끼움 테스트로 밀폐를 확인합니다.
온도가 실제보다 늦게 반응함프로브가 공기 중에 떠 있거나 벽면 플라스틱에 닿아 열 지연이 큼선반 뒤 공기 흐름 위치에 매달고, 경보는 순간값보다 5~10분 이동평균으로 판단합니다.
-127℃ 또는 85℃가 나옴DS18B20 통신 실패 또는 전원 인가 직후 기본값4.7kΩ 풀업 저항과 GND 공통을 확인하고, 부팅 직후 첫 측정값은 버립니다.
Wi-Fi가 냉장고 주변에서 약함금속 외장과 압축기 주변 구조가 전파를 가림D1 Mini 본체는 냉장고 내부가 아니라 상단/측면 외부에 두고, 프로브만 내부로 넣습니다.

지금까지 구성한 흐름

  • DS18B20 방수형 센서로 냉장고 온도를 30초마다 측정합니다.
  • 냉장실 안에 프로브를 넣고, D1 Mini는 냉장고 위나 옆에 둡니다.
  • 두뇌 12번 슬롯에 3.5 같은 실제 온도값이 표시됩니다.

다음 글 예고

바깥(베란다) 온도 센서는 3편과 같은 DHT22 패턴을 사용하되, 슬롯 번호만 3번으로 바꾸는 구성입니다.

준비물: Wemos D1 Mini (2,000원), DHT22 (2,000원)

냉장고 온도 감시 활용법 (DS18B20 방수형)

냉장고는 하루 종일 조용히 돌아가는 것 같지만, 실제 내부 온도는 문을 여닫을 때마다 크게 출렁입니다. DS18B20 방수형 센서를 우리집 IoT 허브에 물려두면 이 변화를 실시간으로 지켜보고, 식품이 상하기 전에 미리 손을 쓸 수 있습니다.

활용 방안

  • 적정온도 감시: 냉장실이 5℃를 넘거나 냉동실이 -15℃보다 따뜻해지면 알림을 보내, 온도 이탈을 눈으로 확인하기 전에 잡아냅니다.
  • 문 열림·정전 경보: 온도가 짧은 시간에 급상승하면 문이 덜 닫혔거나 정전이 발생한 신호입니다. 외출 중에도 휴대폰으로 바로 알 수 있습니다.
  • 식품 안전: 여름철 장시간 정전 후 '이 음식을 먹어도 되나' 판단할 때, 그동안의 온도 그래프가 근거가 됩니다. 냉장 5℃ 이상이 2시간 넘게 지속됐다면 상하기 쉬운 식품은 폐기하는 것이 안전합니다.
  • 김치냉장고: 발효 온도가 맛을 좌우하므로, 숙성 모드(약 -1~0℃)와 보관 모드가 제대로 유지되는지 추적하면 김치 맛 관리에 유용합니다.

추천 설치 장소

  • 냉장실 중앙 선반: 문쪽은 여닫을 때마다 3~5℃ 이상 출렁이므로, 평균 온도를 보려면 안쪽 중앙이 가장 대표성이 높습니다.
  • 문쪽 도어 포켓: 반대로 '가장 취약한 지점'을 감시하려면 문쪽이 좋습니다. 우유·계란 등 온도에 민감한 식품이 놓이는 곳입니다.
  • 냉동실: -18℃ 극저온에서도 DS18B20은 동작하지만(-55℃까지 지원), 케이블 피복이 딱딱해져 반복 굽힘에 약해지니 여유 있게 배선합니다.
  • 방수팁 위치: 금속 프로브 끝이 실제 측정 지점입니다. 선반 벽면에 붙이지 말고 공기 중이나 식품 옆 대표 위치에 두는 것이 좋습니다.

실전 팁·주의점

  • 응답 지연: 방수형은 스테인리스 하우징 때문에 열 반응이 수십 초~1분가량 느립니다. 순간 온도가 아닌 추세를 본다는 관점으로 읽습니다.
  • 문틈 배선: 케이블을 가스켓(고무 패킹) 사이로 통과시키면 편하지만, 눌림으로 밀폐가 깨져 성에·전기료 상승을 부릅니다. 납작한 평면 케이블을 쓰거나 문틈 가장 눌림이 적은 경첩 쪽으로 빼는 것이 좋습니다. 반복 여닫힘에 피복이 벗겨지지 않는지 주기적으로 확인합니다.
  • 다중 센서: OneWire는 병렬로 여러 개를 한 핀에 물릴 수 있어, 냉장·냉동·김냉을 센서 하나씩 두고 동시에 감시할 수 있습니다. 주소(ROM ID)로 구분됩니다.
  • 기준 온도: 냉장 0~5℃, 냉동 -18℃ 이하가 식품 보관 표준입니다. 이 범위를 알림 임계값으로 설정해 두는 것이 좋습니다.

자주 묻는 질문

Q. 냉장고 문을 닫으면 케이블이 눌려 문이 안 닫히지 않나요?
얇은 리본 케이블(약 1mm 이하)이면 대부분의 가스켓이 흡수합니다. 다만 한 지점에 집중되지 않도록 경첩 근처로 빼는 것을 권합니다.

Q. 냉동실 성에가 센서에 껴도 괜찮나요?
방수형이라 성에·결로에는 안전합니다. 다만 성에가 두껍게 얼면 열 전달이 느려져 측정이 더 둔해질 수 있으니, 주기적으로 성에를 제거합니다.

Q. 값이 실제 온도계보다 조금 높게/낮게 나와요.
센서 위치의 공기 흐름과 응답 지연 차이입니다. 별도 온도계와 비교해 소프트웨어에서 오프셋(보정값)을 더해주면 됩니다.

우리집 IoT HUB 20슬롯 시스템 맵

이 글은 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편] 집 안 상태가 한 화면에 보이기 시작했다 · 슬롯 전체