Raspberry Pi 는 전자 엔지니어 및 애호가를 위해 설계된 ARM Cortex 기반 인기 개발 보드입니다. 처리 속도와 메모리 덕분에 Raspberry Pi는 일반 PC처럼 한 번에 다른 기능을 수행하는 데 사용할 수 있으므로 손바닥에있는 Mini Computer라고합니다. Raspberry Pi로 처음부터 시작한 다음 Raspberry Pi를 사용하여 높은 수준의 IoT 프로젝트를 생성하기 위해 일련의 Raspberry Pi 자습서를 만들었습니다.
이번에는 이미지 캡처 기능 이있는 방문자 모니터링 시스템 이라는 다음 흥미로운 프로젝트가 있습니다. 여기에서는 Pi 카메라와 Raspberry Pi 를 연결하여 게이트 또는 문을 통해 들어온 모든 방문자의 이미지를 캡처합니다. 이 프로젝트에서는 어떤 사람이 게이트에 도착할 때마다 버튼을 눌러 게이트를 열어야하며, 버튼을 누르 자마자 자신의 사진이 캡처되어 날짜와 함께 시스템에 저장됩니다. 및 항목의 시간. 이것은 보안 및 감시 목적에 매우 유용 할 수 있습니다.
이 시스템은 방문자에 대한 방문자 출입 기록이 유지되고 직원에 대한 출석 기록이 유지되는 사무실이나 공장에서 매우 유용합니다. 이 모니터링 시스템은 전체 방문자 입장 및 출석을 디지털화하고 자동화하므로 수동으로 유지 관리 할 필요가 없습니다. 이 시스템은 사람이 직접 조작하거나 매우 방문자를 위해 버튼을 누르는 운영자가있을 수 있습니다. 이것은 Pi 카메라를 시작하고 Raspberry Pi와 인터페이스하기 위한 좋은 프로젝트입니다.
필요한 구성 요소:
- 라즈베리 파이
- 파이 카메라
- 16x2 LCD
- DC 모터
- IC L293D
- 부저
- LED
- 브레드 보드
- 저항기 (1k, 10k)
- 커패시터 (100nF)
- 누름 단추
- 전선 연결
- 10k 냄비
- 전원 공급
작동 설명:
이 Raspberry Pi 모니터링 시스템의 작동 은 간단합니다. 여기에서 Pi 카메라 는 푸시 버튼을 누르거나 트리거 할 때 방문자의 이미지를 캡처하는 데 사용됩니다. DC 모터는 게이트로서 사용된다. 누군가가 그 자리에 들어가고 싶을 때마다 버튼을 눌러야합니다. 버튼을 누른 후 Raspberry Pi는 Pi Camera에 사진을 클릭하고 저장하라는 명령을 보냅니다. 그 후 잠시 문이 열렸다가 다시 닫힙니다. 버저는 버튼을 눌렀을 때 소리를내는 데 사용되며 LED는 라즈베리 파이가 푸시 버튼 누름을 수락 할 준비가되었음을 나타내는 데 사용됩니다. 즉, LED가 켜지면 시스템이 작동 할 준비가 된 것입니다.
여기에서 방문자의 사진은 입장 시간과 날짜가 포함 된 이름으로 Raspberry Pi에 저장됩니다. 촬영 한 사진의 이름으로 시간과 날짜를 지정했기 때문에 다른 장소에 따로 날짜와 시간을 저장할 필요가 없음을 의미합니다. 아래 이미지를 참조하십시오. 우리는 여기 방문자로서 상자의 이미지를 가져 왔고, 마지막 비디오 에서 전체 데모를 확인합니다.
회로 설명:
이 Raspberry Pi 방문자 감시 시스템의 회로 는 매우 간단합니다. 여기에서 LCD (Liquid Crystal Display)는 방문자 입장 시간 / 날짜 및 기타 메시지를 표시하는 데 사용됩니다. LCD는 4 비트 모드에서 Raspberry Pi에 연결됩니다. LCD의 핀 RS, EN, D4, D5, D6, D7은 Raspberry Pi GPIO 핀 번호 18, 23, 24, 16, 20, 21 에 연결됩니다. Pi 카메라 모듈 은 Raspberry Pi의 카메라 슬롯에 연결됩니다. 버저는 표시 목적으로 Raspberry Pi의 GPIO 핀 26에 연결됩니다. LED는 1k 저항을 통해 GPIO 핀 5에 연결되고 , 푸시 버튼 은 접지와 관련하여 GPIO 핀 19에 연결되어 카메라를 트리거하고 게이트를 엽니 다. DC 모터 (게이트)모터 드라이버 IC (L293D)를 통해 Raspberry Pi GPIO 핀 17 및 27과 연결됩니다 . 나머지 연결은 회로도에 나와 있습니다.
Pi 카메라를 연결하려면 Pi 카메라의 리본 케이블을 카메라 슬롯에 삽입하고 RPi 보드에있는 커넥터의 탭을 약간 위로 당긴 다음 리본 케이블을 슬롯에 삽입 한 다음 탭을 다시 부드럽게 눌러 리본 케이블을 고정합니다.
Raspberry Pi 구성 및 프로그래밍 설명:
우리가 사용하는 파이썬 언어 여기에 프로그램을. 코딩하기 전에 사용자가 Raspberry Pi를 구성해야합니다. Raspberry Pi 시작하기 및 Pi에서 Raspbian Jessie OS 설치 및 구성에 대한 두 개의 자습서 아래에 있어야합니다.
- Raspberry Pi 시작하기-소개
- Raspberry Pi 시작하기-구성
Raspberry Pi에 Raspbian OS를 성공적으로 설치 한 후 Raspberry pi에서이 프로젝트를 실행 하려면 Pi 카메라 라이브러리 파일 을 설치 해야합니다. 이렇게하려면 주어진 명령을 따라야합니다.
$ sudo apt-get install python-picamera $ sudo apt-get install python3-picamera
그 후에 사용자는 Raspberry Pi 소프트웨어 구성 도구 (raspi-config)를 사용하여 Raspberry Pi 카메라 를 활성화 해야합니다.
$ sudo raspi-config
그런 다음 카메라 활성화 및 활성화를 선택 합니다.
그런 다음 사용자는 sudo reboot 를 실행하여 Raspberry Pi 를 재부팅 해야 새 설정을 사용할 수 있습니다. 이제 Pi 카메라를 사용할 준비가되었습니다.
$ sudo 재부팅
이 프로젝트의 Python 프로그램은 모든 작업을 수행하는 데 매우 중요한 역할을합니다. 우선 필요한 라이브러리를 포함하고 변수를 초기화하며 LCD, LED, 모터 및 기타 구성 요소에 대한 핀을 정의합니다.
RPi.GPIO를 gpio로 가져 오기 picamera 가져 오기 시간 m11 = 17 m12 = 27 led = 5 buz = 26 button = 19 RS = 18……………
def capture_image () 함수 는 시간과 날짜 로 방문자의 이미지 를 캡처 하기 위해 생성 됩니다.
def capture_image (): lcdcmd (0x01) lcdprint ("기다려주십시오.."); data = time.strftime ("% d_ % b_ % Y \ % H: % M: % S") camera.start_preview () time.sleep (5) 인쇄 데이터 camera.capture ('/ home / pi / Desktop / Visitors /%s.jpg'%data) camera.stop_preview () lcdcmd (0x01) lcdprint ("이미지 캡처") lcdcmd (0xc0) lcdprint ("성공적으로") time.sleep (2)
여기서 Gate로 사용되는 DC 모터 를 구동하기 위해 def gate () 함수 가 작성되었습니다.
def gate (): lcdcmd (0x01) lcdprint ("Welcome") gpio.output (m11, 1) gpio.output (m12, 0) time.sleep (1.5) gpio.output (m11, 0) gpio.output (m12, 0) time.sleep (3) gpio.output (m11, 0) gpio.output (m12, 1) time.sleep (1.5) gpio.output (m11, 0) gpio.output (m12, 0) lcdcmd (0x01); lcdprint ("감사합니다") time.sleep (2)
같은 일부 기능들은 LCD에 정의 DEF 시작 () 함수는 LCD를 초기화하는데 사용된다 DEF lcdcmd (CH2) 기능, LCD에 명령을 전송하기 위해 사용되는 DEF lcdwrite (CH2) 함수는 LCD 및 데이터 전송에 사용되는 DEF lcdprint을 (STR) 기능은 데이터 문자열을 LCD로 보내는 데 사용됩니다. 나중에 주어진 코드에서 이러한 모든 기능을 확인할 수 있습니다.
그런 다음 LCD 및 Pi 카메라를 초기화하고 while 루프를 사용하여 계속해서 푸시 버튼 을 읽습니다. 누름 버튼을 누를 때마다 출입문을 열기 위해 방문객의 이미지가 캡처되어 날짜 및 시간과 함께 라즈베리 파이에 저장되며 출입문이 열립니다. 아래의 전체 코드 및 데모 비디오를 확인하십시오.
while 1: d = time.strftime ("% d % b % Y") t = time.strftime ("% H: % M: % S") lcdcmd (0x80) lcdprint ("시간: % s"% t) lcdcmd (0xc0) lcdprint ("날짜: % s"% d) gpio.output (led, 1) if gpio.input (button) == 0: gpio.output (buz, 1) gpio.output (led, 0) time.sleep (0.5) gpio.output (buz, 0) capture_image () gate () time.sleep (0.5)
이 카메라 모니터링 시스템 은 소프트웨어가 Computer Vision 또는 OpenCV에 내장되어 방문자의 캡처 된 사진을 이미 저장된 이미지와 일치시키고 일치하는 항목이 발견 된 경우에만 방문자를 승인하는 것처럼 업그레이드 할 수있는 많은 범위가 있습니다. 권한있는 사람들을 위해 문을 엽니 다.