라즈베리파이 홈 보안 시스템: PIR 모션 감지 + 카메라 이메일 알림
하드웨어 구성 요소
- 카메라 모듈
- PIR 모션 센서 (JST 커넥터)
- 라즈베리파이 3 모델 B
소프트웨어 및 서비스
- Gmail 계정 (발신자 및 수신자)
- 원격 설정을 위한 SSH 접속
프로젝트 개요
이 프로젝트에서는 라즈베리파이 3 모델 B에 카메라 모듈과 PIR 모션 센서를 연결합니다. 모션이 감지되면 카메라가 이미지를 촬영하고, 지정된 이메일 주소로 Gmail을 통해 전송합니다.
배선도
센서의 5V 핀을 라즈베리파이 핀 3(5V)에, GND 핀을 핀 5(GND)에, OUT 핀을 GPIO 23에 연결합니다. 다른 GPIO 핀을 사용하려면 파이썬 코드도 그에 맞게 수정해야 합니다.
파이썬 구현
다음 스크립트는 핵심 로직을 보여줍니다. 실행 전 이메일 주소와 Gmail 비밀번호(또는 앱 비밀번호)를 반드시 업데이트하세요.
from picamera import PiCamera
from time import sleep
import smtplib
import time
from datetime import datetime
from email.mime.image import MIMEImage
from email.mime.multipart import MIMEMultipart
import RPi.GPIO as GPIO
TO_EMAIL = '수신자_이메일'
FROM_EMAIL = '발신자_이메일'
PASSWORD = '비밀번호' # Gmail 계정 비밀번호 또는 앱 비밀번호
GPIO.setmode(GPIO.BCM)
GPIO.setup(23, GPIO.IN)
camera = PiCamera()
camera.resolution = (1024, 768)
camera.start_preview()
while True:
if GPIO.input(23):
print("모션 감지됨...")
time.sleep(2) # 카메라 예열 시간
camera.capture('movement.jpg')
time.sleep(10) # 디바운스 기간
msg = MIMEMultipart()
msg['Subject'] = '보안 알림'
msg['From'] = FROM_EMAIL
msg['To'] = TO_EMAIL
with open('movement.jpg', 'rb') as fp:
img = MIMEImage(fp.read())
msg.attach(img)
server = smtplib.SMTP('smtp.gmail.com', 587)
server.starttls()
server.login(FROM_EMAIL, PASSWORD)
server.send_message(msg)
server.quit()
자세한 단계는 전체 가이드 참조: 카메라와 PIR 센서를 이용한 라즈베리파이 홈 보안 시스템.