라즈베리 파이로 서버실 정확한 온도 모니터링하기
문제점
홈 오피스를 리노베이션한 후 모든 전자기기(서버, NAS, AV 리시버 등)를 위한 전용 옷장을 만들었습니다. 뜨거운 공기를 인접 오피스로 배출하는 배기 팬을 설치했지만, 팬 가동 중에도 옷장 내부 온도가 약 90°F (32°C)로 유지됩니다. 대부분의 하드웨어 사양 내지만 원하는 것보다 따뜻합니다. 추가 냉각이 필요한지 판단하기 위해 며칠간 온도 변화를 안정적으로 기록할 방법이 필요했습니다.
이 작업에 라즈베리 파이가 제격입니다. 이전에는 아두이노에서 아날로그 TMP36GZ 센서를 사용했지만, 파이의 GPIO 핀은 디지털만 지원하므로 추가 ADC 없이는 아날로그 센서를 쓸 수 없습니다. 즉시 코딩을 시작할 수 있는 간단한 솔루션을 원했습니다.
DS18B20 디지털 온도 센서가 이 문제를 해결했습니다. 단일 와이어 버스로 통신하며 파이의 BCM GPIO4 (핀 7)과 완벽하게 맞습니다. 리눅스 터미널에서 직접 센서에 접근할 수 있고, 여러 DS18B20이 같은 데이터 라인을 공유할 수 있습니다.
제작 과정
- 짧은 CAT5e 케이블을 사용해 DS18B20의 세 핀을 납땜: 주황 = +3.3V, 갈색 = GND, 녹색 = DATA.
- 3.3V와 데이터 라인 사이에 4.7 kΩ 풀업 저항 설치.
- 노출된 배선을 전기 테이프로 감고 수축 튜브로 마감해 보호.
- 케이블 끝에 암 점퍼 커넥터를 달아 분배기에 빠르게 연결.
- 두 개의 2-수-1-암 Y-분배기로 두 센서의 VDD, GND, DATA를 파이의 단일 핀에 결합.
- 분배기를 파이에 연결: 3.3V → 핀 1, GND → 핀 6, DATA → 핀 7.
- 센서를 옷장 안 배기 팬 양쪽에 배치해 온도 변화 포착.
완성된 빌드 사진입니다. 세 개의 분배기가 파이 GPIO 핀에 깔끔하게 꽂혀 있는 것을 볼 수 있습니다.
터미널에서 센서 읽기
DS18B20 배선이 완료되면 파일 시스템에서 직접 출력을 읽을 수 있습니다. 다음 명령으로 커널 모듈을 로드하고, 사용 가능한 장치를 나열하고, 선택한 센서의 온도 데이터를 표시합니다.
# 1-Wire 드라이버 로드
sudo modprobe w1-gpio
sudo modprobe w1-therm
# 연결된 장치 나열 (예: 28-0000055f311a)
ls /sys/bus/w1/devices
# 특정 센서에서 온도 읽기
cat /sys/bus/w1/devices/28-0000055f311a/w1_slave
w1_slave 파일은 두 줄을 반환합니다. 첫 줄은 CRC 체크, 둘째 줄은 t=XXXXX로 끝나며 XXXXX는 천 분의 1 도 단위의 섭씨 온도입니다. 원하면 화씨로 변환하세요.
이 설정으로 CSV 파일에 판독값을 기록하거나 원격 서버로 데이터를 전송하거나 임계값 초과 시 알림을 트리거할 수 있습니다. DS18B20의 정확도는 ±0.5°C로 일반적인 하드웨어 모니터링에 충분합니다.
더 자세한 지침과 샘플 코드는 라즈베리 파이 GPIO 문서와 Adafruit의 DS18B20 가이드를 참조하세요.