티스토리 뷰

카테고리 없음

부모 검출기

뽀로로친구에디 2018. 8. 20. 00:15

부모 검출기

당신의 방에 누가 있었는지 알아 내기 위해 라즈베리 파이를 사용하는 방법! 모션 센서를 사용하여 라즈베리 파이 카메라 모듈을 통해 비디오 녹화를 시작하는 부모 탐지기를 만드십시오.


필요한 것

Raspberry Pi 및 모든 표준 주변 장치뿐만 아니라 다음이 필요합니다.


하드웨어

라스베리 파이 카메라 모듈

PIR 모션 센서 모듈 

3 개 이상의 암 - 암 점퍼 와이어


추가 

카메라 보드 360 Gooseneck Mount (modmypi.com에서 제공) 또는 동급 제품


PIR 모션 센서 연결

이 프로젝트에서는 수동 적외선 (PIR) 모션 센서를 사용할 예정입니다.



PIR 모션 센서란 무엇입니까?

PIR 모션 센서 정보

이 프로젝트에서는 수동 적외선 (PIR) 모션 센서를 사용할 예정입니다. 그들이 도난 경보 시스템에 자주 사용되기 때문에 이전에 이러한 것을 보았을 것입니다.

물체 또는 생물체의 온도가 절대 영 (-273.15 ° C!) 이상이면 적외선이 방출됩니다. 적외선 파장은 사람의 눈에는 보이지 않지만 PIR 센서 내부의 전자 장치로 감지 할 수 있습니다.

센서는 움직임을 감지하기 위해 신호를 보내지 않으므로 수동으로 간주됩니다. 방의 적외선 서명을 조정 한 다음 변경 사항을 감시하여 작동합니다. 실내를 움직이는 물체는 적외선 신호를 방해하고 PIR 모듈은이 방해를 감지합니다.

PIR sensor

우리는 모션 센서의 내부 동작에 대해 걱정할 필요가 없습니다. 우리가 관심을 갖는 것은 3 개의 핀이며,이 핀을 사용하여 Raspberry Pi에 연결할 수 있습니다.



PIR 센서를 GPIO 4에 연결하십시오.

PIR 모션 센서 연결

일부 PIR 센서에서는 핀이 회로 보드에 명확하게 표시되어 있습니다. 다른 사람들은 모자 아래에 숨겨진 레이블을 가지고 있습니다. 이것이 센서의 경우라면, 핀을 구별 할 수 있도록 조심스럽게 캡을 튀어 나오십시오.


세 암 - 암 점퍼 케이블을 사용하여 각 PIR 센서 핀을 Raspberry Pi의 해당 핀에 연결하십시오.

VCC라고 표시된 PIR 센서의 핀을 Raspberry Pi의 5V 핀에 연결합니다. 이것은 PIR 센서에 전원을 공급합니다.

GND라고 표시된 것을 Pi의 접지 핀 (GND라고도 함)에 연결하십시오. 이것으로 회로가 완성됩니다.

OUT으로 표시된 것을 Pi의 번호가 매겨진 GPIO 핀에 연결하십시오. 이 예에서는 GPIO 4를 선택했습니다. 센서가 동작을 감지하면 OUT 핀은 전압을 출력합니다. 전압은 다음 라스베리 파이에 의해 받게됩니다.

PIR connection

PIR 모듈에는 필립스 스크루 드라이버 (위 참조)에 맞는 소켓이있는 두 개의 주황색 구성 요소가 있어야합니다. 포텐시오 미터는 센서의 감도와 감지 시간을 조정할 수 있습니다. 감도 볼륨을 최대로 설정하고 시간 가변기를 최소로 설정하여 시작해야합니다. 원하는 경우 나중에 변경할 수 있습니다.

PIR potentiometers



카메라 연결

1. Raspberry Pi를 켜기 전에 카메라 모듈을 연결하십시오.

라스베리 파이 카메라 모듈 연결

라스베리 파이 카메라 모듈을 사용하여 고화질 비디오와 사진을 찍을 수 있습니다. 카메라 모듈을 사용하려면 먼저 카메라 모듈을 Raspberry Pi에 연결해야합니다.

시작하기 전에 라즈베리 파이를 전원에서 분리하십시오.

카메라의 플렉스 케이블이 은색 커넥터가 HDMI 포트를 향하게하여 이더넷 포트와 HDMI 포트 사이의 커넥터에 삽입됩니다

커넥터 윗부분의 탭을 위쪽으로 당긴 다음 플렉시블 케이블 커넥터를 열고 이더넷 포트쪽으로 당깁니다.

너무 날카로운 각도에서 구부러지지 않도록주의하면서 커넥터에 플렉스 케이블을 단단히 연결하십시오

플렉스 케이블을 제자리에 잡은 채로 커넥터의 윗부분을 HDMI 커넥터쪽으로 밀고 아래로 밉니다

Raspberry Pi를 재부팅 한 다음 카메라가 활성화되어 있는지 확인하십시오.

Menu를 클릭 한 다음 Preferences에서 Raspberry Pi Configuration을 선택하십시오. 그런 다음 인터페이스 탭의 카메라에 대한 라디오 버튼이 선택되었는지 확인하십시오.

마지막으로, 카메라가 작동하는지 테스트하고 싶을 것입니다. 가장 쉬운 방법은 터미널 창을 열고 다음을 입력하는 것입니다.

raspistill -k

미리보기 이미지가 화면에 표시되어야합니다. x를 입력하고 Enter를 눌러 raspistill 프로그램을 종료 할 수 있습니다.


PIR 모션 센서 테스트

우리는 PIR 센서가 움직임을 감지했을 때 "움직임 감지!"를 출력하기위한 코드를 작성하려고합니다.


1. 전원 케이블을 연결하고 Raspberry Pi를 부팅합니다.

2. IDLE을 열고 새 파일을 만들고 parent-detector.py로 저장하십시오.



1. GPIO 4에서 PIR 센서를 설정하는 코드를 작성하십시오.

gpiozero 라이브러리를 사용하여 올바른 GPIO pi에 연결된 MotionSensor를 생성해야합니다.


from gpiozero import MotionSensor


pir = MotionSensor(4)


1.PIR 센서가 동작을 감지하면 "동작 감지 됨"이 화면에 표시되도록 코드를 추가하십시오.


pir.wait_for_motion()

print("Motion detected!")


1. 코드를 저장하고 F5 키를 눌러 실행하십시오. Motion이라는 단어가 표시되어야합니다! 모션 센서가 트리거되면

화면에 나타납니다.

2. 현재 코드는 한 번만 움직임을 감지하고 프로그램이 종료됩니다. 무한 루프 안에 코드를 넣어 파이썬이 모션센서로부터의 신호를

기다리며 모션 감지를 인쇄합니다! 센서가 트리거 될 때마다 프로그램을 종료하려면 Ctrl + F6을 누릅니다.



카메라 미리보기 설정


1. 프로그램 시작시 picamera 라이브러리에서 Picamera 클래스를 가져와 코드를 사용하여 카메라 모듈을 제어 할 수 있습니다.


from picamera import PiCamera


2. PiCamera 객체를 생성하는 코드 줄을 추가하십시오. 이 코드 줄이 무한 루프 위에 있는지 확인하십시오.


camera = PiCamera()


3.센서가 활성화되었을 때 카메라 미리보기를 시작하고 움직임이 감지되지 않을 때 미리보기를 중지하려면 기존 코드에

추가하십시오.


✪ PiCamera로 사진 찍기


Python과 picamera 모듈을 사용하여 Raspberry Pi와 카메라 모듈로 사진을 찍을 수 있습니다.


PiCamera 클래스를 가져 와서 카메라 객체를 만듭니다.


  from picamera import PiCamera
  camera = PiCamera()

사진을 찍으려면 capture () 메소드를 사용할 수 있습니다. 이렇게하려면 사진을 저장할 위치와 호출 할 위치를 
Python에 알려줘야합니다. 아래의 예제에서 사진은 selfie.png라고 불리며 / home / pi / 디렉토리에 저장됩니다.

  from picamera import PiCamera

  camera = PiCamera()
  camera.capture('home/pi/selfie.png')
  camera.close()

코드를 실행 한 다음 파일 관리자나 터미널을 사용하여 selfie.png파일을 찾습니다.


카메라 미리보기를 시작하기 위해 추가하는 코드가 파이썬이 루프 안에 있음을 알 수 있도록 들여 쓰기되어 있는지 확인하십시오.


카메라 미리보기를 시작하는 코드는 다음과 같습니다. 미리보기를 중단하기 위해 코드를 연습 할 수 있습니까?


camera.start_preview()


아래는 센서가 움직임이 감지되기를 기다리라는 코드입니다. 센서에 모션이 감지되지 않을 때까지 기다리라는 코드를 만들 수

있습니까?


pir.wait_for_motion()


다음은 필요한 코드 행입니다. 그러나 그들은 올바른 순서로 있지 않습니다.


pir.wait_for_motion()

pir.wait_for_no_motion()

camera.start_preview()

camera.stop_preview()

완성 된 코드는 다음과 같습니다.


while True:

pir.wait_for_motion()

print("Motion detected!")

camera.start_preview()

pir.wait_for_no_motion()

camera.stop_preview()



코드를 저장하고 F5 키를 눌러 실행하십시오. 모션 센서가 활성화되면 카메라 미리보기가 나타나고 모션 센서가 더 이상

작동하지 않을 때 카메라의 미리보기가 테스트됩니다.



비디오를 파일로 기록


그들이 방안에있는 동안 카메라 미리보기의 화면에서 침입자를 보는 것은별로 도움이되지 않습니다. 대신, 집에 도착했을 때 나중에 볼 수있는

침입자의 비디오를 녹화 해 봅시다.


1. 무한 루프 안에 filename이라는 변수를 만들어 비디오 파일의 이름을 저장하십시오.

filename = "intruder.h264"

궁금한 점이 있으시면, .h264는 비디오 포맷입니다.


2. 카메라 미리보기를 시작하는 코드 줄을 찾아 비디오 녹화를 시작하는 코드 줄로 바꿉니다.

camera.start_recording(filename)

3. 카메라 미리보기를 멈추는 코드 줄을 찾아 녹음을 멈추는 코드 줄로 바꾸십시오.

녹화을 시작하는 데 사용한 코드 줄을보십시오. 녹화을 멈추기 위해 코드를 만들 수 있는지 확인하십시오.

완성된 코드입니다.

while True:

filename = "intruder.h264"

pir.wait_for_motion()

camera.start_recording(filename)

pir.wait_for_no_motion()

camera.stop_recording()


1. 프로그램을 저장하고 F5 키를 눌러 실행하십시오. intruder.h264라는 파일이 parent-detector.py 파일과 동일한 폴더에 있는지 확인하십시오.

새로운 침입자가 모션 센서를 트리거 할 때마다 비디오 파일을 덮어 씁니다. 당신의 방에 들어오는 성가신 부모님이나 형제 자매가 많이 있다면, 그들 모두의 비디오를 보관하고 싶습니다. 현재 날짜와 시간을 자동으로 찾아서 비디오 파일의 이름에 추가하는 코드를 작성할 수 있습니까? 그런 다음 녹화하는 각 동영상의 파일 이름이 달라집니다.


✪ 파이썬으로 타임 스탬프 생성하기

때로는 파일이나 데이터에 고유 한 이름을 부여하는 것과 같이 현재 날짜와 시간을 문자열로 가져올 수도 있습니다. datetime 모듈은 이러한 타임 스탬프를 만드는 데 매우 유용합니다.

먼저 datetime 모듈, 특히 datetime 클래스를 가져와야합니다.

from datetime import datetime


파일에 이름을 지정하려면 타임 스탬프를 사용하려면 다음과 같이 사용하십시오.

filename = "{0:%Y}-{0:%m}-{0:%d}".format(now)


{}는 문자열 내에서 자리 표시자로 사용됩니다.

0은 전달 된 0 번째 객체를 사용하도록 print 명령에 지시합니다. 이 경우 개체가 지금입니다.

: % Y 코드는 datetime.now () 객체에서 전체 연도를 가져 오도록 print 명령에 지시합니다.



동영상 재생

방으로 돌아 오면 OMXPlayer 소프트웨어를 사용하여 부모 감지기로 만든 모든 비디오를 재생할 수 있습니다.

✪ OMXPlayer로 비디오 재생하기

창에 다음 명령을 입력하고 filename을 재생할 파일 이름으로 바꿉니다. 그런 다음 Enter 키를 누릅니다.

omxplayer filename

예를 들어, 파일 이름이 test.h264 인 경우이 명령을 입력 한 다음 Enter 키를 누릅니다.

omxplayer test.h264


과제 : 스텔스 모드

부모 감지기를 완성했는데 스텔스 모드로 사용하여 다음 단계로 가져가 보지 않으시겠습니까?

보통 Python 프로그램을 시작할 때 나타나는 카메라 보드의 빨간색 LED를 비활성화 할 수 있습니다.

이것은 부팅 폴더에있는 config.txt 라 불리는 Raspberry Pi 구성 파일에 명령을 추가하여 수행 할 수 있습니다.

터미널 창을 열고 다음 명령을 입력하여 config.txt 파일 편집을 시작하십시오.

sudo nano /boot/config.txt

파일 끝에 다음 행을 추가하십시오.

disable_camera_led = 1

Ctrl + O를 눌러 저장하고 Ctrl + X를 눌러 종료하십시오. 변경 사항은 재부팅 후에 만 적용됩니다. 이렇게하려면 터미널에 다음 명령을 입력하십시오.

sudo reboot

카메라 미리보기는 침입자에게 그들이 발견되었음을 알려줍니다. 스크립트에서 카메라 미리보기 코드를 제거 할 수 있습니까?


댓글
최근에 달린 댓글
글 보관함
«   2025/02   »
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28
Total
Today
Yesterday
    뽀로로친구에디
    최근에 올라온 글