라즈베리 파이 2에서 DS18B20으로 온도 읽기
환영합니다! 이 가이드 라즈베리 파이 2에 DS18B20 디지털 온도 센서 연결해 실내 온도 정확 측정법 보여줍니다.
필요 물품
- DS18B20 방수 센서 (온라인 구매)
- 4.7kΩ 풀업 저항 (노랑-보라-빨강-금)
- 점퍼 와이어
- 라즈베리 파이 2 (GPIO 탑재 모든 모델)
1단계 – 센서 배선
DS18B20 1-와이어 인터페이스 사용. 다음 연결:
- 빨강선(VDD) → 파이 3.3V 레일
- 검정선(GND) → 파이 그라운드 레일
- 노랑선(DQ) → GPIO 4 (물리 핀 7)
3.3V 라인과 DQ 라인 사이 4.7kΩ 저항 배치해 풀업 역할. 저항 '3.3V' 끝이 빨강(VDD) 쪽 닿게.
2단계 – 1-와이어 인터페이스 활성화
1. 부트 설정 파일 편집:
sudo nano /boot/config.txt
2. 다음 줄 추가 또는 주석 해제:
dtoverlay=w1-gpio
3. 저장·종료 후 재부팅:
sudo reboot
3단계 – 커널 모듈 로드
파이 재시작 후 1-와이어 드라이버 로드:
sudo modprobe w1-gpio
sudo modprobe w1_therm
4단계 – 센서 감지 확인
디바이스 트리 센서 ID 확인:
ls -l /sys/bus/w1/devices/
28-로 시작하는 폴더 보여야 함, 예: 28-000006dfa76c.
5단계 – 온도 읽기
각 센서 w1_slave로 데이터 노출. 보기:
cat /sys/bus/w1/devices/28-000006dfa76c/w1_slave
출력 두 줄; 두 번째 줄 끝 t=XXXXX, XXXXX 천분위도 섭씨 온도. 예: t=23450 = 23.450°C.
옵션 – 스크립트로 값 파싱
원시 읽기값 °C 변환 빠른 파이썬 스니펫:
#!/usr/bin/env python3
import time, glob
sensor = glob.glob('/sys/bus/w1/devices/28-*/w1_slave')[0]
while True:
with open(sensor, 'r') as f:
lines = f.readlines()
if lines[0].strip().endswith('YES'):
temp_raw = lines[1].split('t=')[1]
temp_c = float(temp_raw) / 1000.0
print(f"Temperature: {temp_c:.3f} °C")
else:
print("Reading error")
time.sleep(2)
temp_read.py로 저장, 실행 권한 부여, 실행해 실시간 온도 업데이트 확인.
이 단계 따라하면 라즈베리 파이 2에서 신뢰성 높은 온도 모니터 구동.
더 깊은 통찰 Adafruit DS18B20 가이드 참조.