안녕하세요 나도메이커의 나도비입니다
오늘은 라즈베리파이에서 인체 감지센서를 이용하여
LED를 ON/OFF 해보겠습니다!
인체 감지 센서에 대해 아시나요?
아래 링크를 가셔서 쉽게 확인 하실수 있습니다!
빨강색은 VCC
검은색은 GND
노랑색은 Signal
보라색은 LED +
입니다.
sudo nano pir.py 명령어로 파일을 열어줍니다!
import RPi.GPIO as GPIO import time GPIO.setmode(GPIO.BCM) PIR_PIN = 7 LED = 13 // LED GPIO 13번 GPIO.setup(PIR_PIN, GPIO.IN) GPIO.setup(LED,GPIO.OUT) // LED GPIO setup try: print "PIR module test (CTRL+C to exit)" time.sleep(2) print "ready" while True: if GPIO.input(PIR_PIN) == GPIO.HIGH: GPIO.output(LED,GPIO.HIGH) //LED ON t = time.localtime() print " %d:%d:%d motion detected!" % (t.tm_hour, t.tm_min, t.tm_sec) time.sleep(0.5) else : // 추가 GPIO.output(LED,GPIO.LOW) // LED OFF except KeyboardInterrupt: print " quit" GPIO.cleanup()
소스코드를 작성해 주세요!
소스코드에 기본 PIR센서의 값을 출력 하는것 말고
파이썬의 IF 문과 else문을 사용한 것을 볼수 있습니다!
모션 감지센서가 감지하면 LED가 켜지는 것을 볼 수 있습니다!
오늘은 PIR센서와 LED 와 연동한 실습이였는데요
간단한 구현이였습니다.
다음시간에는 자동문 예제를 가져오도록 하겠습니다!
그럼 안녕~
Python-센서/GPIO
라즈베리파이로 모션감지 (PIR센서 + 파이카메라)
1. 라즈베리파이와 모션센서 연결하기
PIR 모션센서는 가정의 현관 및 공용 화장실에 많이 설치되어 있는 센서로, 사람의 움직임에 반응하여 조명을 켜거나 끌 수 있습니다.
라즈베리파이에 연결하여, 사람의 움직임이 발생했을 때, 사진을 찍거나 영상을 전송하는 예제를 구현해보도록 하겠습니다.
■ 필요한 준비물
PIR 모션센서
//mechasolution.com/shop/goods/goods_view.php?goodsno=88&category=
라즈베리파이
만약, 라즈베리파이를 처음 사용하신다면, 교재와 함께 학습할 수 있는 키트를 소개해드립니다.
스타터키트
파이카메라
■ 하드웨어 연결 (라즈베리파이와 모션센서)
■ 프로그래밍
먼저 위와 같이 nano 에디터를 이용하여 pir01.py라는 파이썬 파일을 만듭니다.
그리고, 다음의 소스코드를 붙여넣습니다.
import RPi.GPIO as GPIO
import time
GPIO.setmode(GPIO.BCM)
pirPin = 7
GPIO.setup(pirPin, GPIO.IN, GPIO.PUD_UP)
while True:
if GPIO.input(pirPin) == GPIO.LOW:
print "Motion detected!"
else:
print "No motion"
time.sleep(0.2)
위의 파일을 작성한 후에는 Ctrl + X , Y, 엔터 순으로 저장하고, 파이썬 코드를 실행합니다.
실행하기 위해서는 다음의 명령어를 입력합니다.
PIR 센서 위로 움직이는 것에 센서가 반응하는 것을 확인할 수 있습니다.
2. 움직임이 있을 때, 사진 찍기
■ 프로그래밍
먼저, 모션감지 코드가 포함될 것이기 때문에, cp라는 명령어를 이용하여 pir01.py를 pir02.py로 복사하겠습니다.
import RPi.GPIO as GPIO
import time
from picamera import PiCamera
GPIO.setmode(GPIO.BCM)
pirPin = 7
GPIO.setup(pirPin, GPIO.IN, GPIO.PUD_UP)
camera = PiCamera()
counter = 1
while True:
if GPIO.input(pirPin) == GPIO.LOW:
try:
camera.start_preview()
time.sleep(1)
camera.capture('/home/pi/image%s.jpg' % counter)
counter = counter + 1
camera.stop_preview()
except:
camera.stop_preview()
time.sleep(3)
3. 움직임이 있을 때, 동영상 찍기
■ 프로그래밍
마찬가지로 pir03.py를 복사를 통해서 생성해보겠습니다.
import RPi.GPIO as GPIO
import time
from picamera import PiCamera
GPIO.setmode(GPIO.BCM)
pirPin = 7
GPIO.setup(pirPin, GPIO.IN, GPIO.PUD_UP)
camera = PiCamera()
counter = 1
while True:
if GPIO.input(pirPin) == GPIO.LOW:
try:
camera.start_preview()
camera.start_recording('/home/pi/video%s.h264' % counter)
counter = counter + 1
time.sleep(5)
camera.stop_recording()
camera.stop_preview()
except:
camera.stop_preview()
time.sleep(3)
출처: //www.meccanismocomplesso.org/en/picamera-pir-movement-detector-un-sistema-di-sorveglianza/