라즈베리 파이 포토셀 로깅 & 알림 시스템 – 파이썬으로 저전력 조도 센서 만들기
개요
이 가이드는 라즈베리 파이 기반 포토센서를 구축해 조도 레벨을 기록하고 알림을 트리거하는 과정을 안내합니다. 옷장이나 장비 보관함 같은 어두운 공간 모니터링이나 단순히 주변 조도 추적에 적합합니다.
출력 표시기로 LED를 사용하지만, 회로는 릴레이, 부저, 알림 서비스 제어용으로도 적용 가능합니다. 필요한 모든 것이 포함된 Adafruit RPi 스타터 키트(비용 효율적 번들)를 사용하거나 아래 자재 목록으로 직접 조립할 수 있습니다.
자재 목록
- 10mm 디퓨즈드 LED 3개 (빨강, 파랑, 초록)
- 1µF 커패시터 1개
- 포토셀(포토레지스터) 1개
- 560Ω 저항 3개
- 파이 코블러 브레이크아웃 1개
- 브레드보드 점퍼 와이어 10개
- 풀사이즈 납땜 없는 브레드보드 1개
일반적인 마이크로컨트롤러와 달리 라즈베리 파이에는 온보드 아날로그-디지털 컨버터가 없습니다. 포토셀을 통한 커패시터 충전 시간을 측정하는 저렴한 RC 타이밍 기법으로 이를 극복해 신뢰성 있는 판독값을 얻습니다.
사전 요구사항
프로그래밍은 파이썬으로 합니다. RPi.GPIO 라이브러리와 파이용 사전 컴파일 모듈이 포함된 Adafruit의 Occidentalis 배포판 사용을 권장합니다. 최소 설정 선호 시 pip로 RPi.GPIO만 설치해도 됩니다.
회로 소비 전류가 매우 적어 표준 파이 전원 공급기로 충분합니다. 보정을 위해 가변 광원(예: 밝기 조절 가능한 책상 스탠드)을 준비하면 센서가 다양한 조도 레벨에 어떻게 반응하는지 확인하기 좋습니다.
1단계 – RC 회로 배선
- 코블러를 브레드보드에 꽂되, 어떤 핀도 같은 전원 레일에 닿지 않게 합니다. 그렇지 않으면 파이가 쇼트될 수 있습니다.
- 3.3V 핀을 브레드보드 양극 레일에, GND 핀을 음극 레일에 연결합니다.
- 포토셀을 브레드보드 중앙 간격에 배치합니다.
- 포토셀 한 쪽을 3.3V 레일에, 다른 쪽을 파이의 18번 핀에 연결합니다.
- 1µF 커패시터를 18번 핀에서 GND로 연결합니다. 이로써 RC 네트워크가 완성됩니다.
이 시점에서 센서 보정을 진행할 수 있습니다.
2단계 – 보정 및 테스트
다음 파이썬 스크립트를 실행합니다. 포토셀을 통한 커패시터 충전 시간을 지속적으로 측정합니다. 반환값은 조도가 증가할수록 감소합니다.
#!/usr/bin/env python
import RPi.GPIO as GPIO
import time
GPIO.setmode(GPIO.BCM)
RC_PIN = 18
def rc_time(pin):
GPIO.setup(pin, GPIO.OUT)
GPIO.output(pin, GPIO.LOW)
time.sleep(0.1) # 커패시터 완전 방전
GPIO.setup(pin, GPIO.IN)
count = 0
while GPIO.input(pin) == GPIO.LOW:
count += 1
return count
while True:
print(rc_time(RC_PIN))
time.sleep(0.5)
광원을 변화시키면 명확한 수치 추세를 관찰할 수 있습니다: 조도가 높을수록 판독값이 낮아집니다. 어두운 곳과 일반적인 조명에서 몇 가지 샘플을 캡처해 알림 트리거용 임계값을 설정하세요.
3단계 – 알림 구현
임계값이 정의되면 스크립트를 수정해 LED 온/오프, 파일 로깅, 이메일 또는 MQTT 알림 전송 등을 수행할 수 있습니다. 예를 들어 방이 밝아질 때 빨간 LED를 깜빡이게 하려면:
RED_LED = 17
GPIO.setup(RED_LED, GPIO.OUT)
while True:
level = rc_time(RC_PIN)
if level < THRESHOLD:
GPIO.output(RED_LED, GPIO.HIGH)
else:
GPIO.output(RED_LED, GPIO.LOW)
time.sleep(1)
더 복잡한 워크플로를 위해 Home Assistant, Node-RED, 커스텀 Flask 웹 서비스와의 통합을 고려하세요.
안전 및 모범 사례
- 파이 전원 투입 전 핀 연결을 항상 이중 확인하세요.
- RC 네트워크에는 3.3V 전원 사용; 5V는 파이 GPIO를 손상시킬 수 있습니다.
- 커패시터 값은 낮게(1µF) 유지해 긴 충전 시간으로 스크립트 속도가 느려지는 것 방지
- 보정 데이터 문서화; 향후 문제 해결과 조정 용이
이 설정으로 조도 변화를 기록하고 반응하는 신뢰성 높고 저전력 조도 센서를 갖게 되었습니다. 여러 센서 추가, 데이터베이스 로깅, 웹 대시보드 시각화 등으로 프로젝트를 확장해 보세요.