몇 년 전 Sci-Fi 영화에서 보았던 지문 센서 는 이제 다양한 목적으로 사람의 신원을 확인하는 데 매우 일반적이되었습니다. 현재 우리는 사무실 출석, 은행 직원 확인, 현금 인출 또는 ATM 입금, 관공서 신원 확인 등과 같은 일상 생활의 모든 곳에서 지문 기반 시스템을 볼 수 있습니다. 이미 Arduino와 인터페이스했습니다. 오늘 우리는 Raspberry Pi와 FingerPrint Sensor 를 인터페이스 할 것 입니다. 이 Raspberry Pi 지문 인식 시스템을 사용하여 시스템에 새 지문을 등록하고 이미 공급 된 지문을 삭제할 수 있습니다. 시스템의 완전한 작동 은 기사 마지막에 제공된 비디오에 나와 있습니다.
필수 구성 요소:
- 라즈베리 파이
- USB to Serial 변환기
- 지문 모듈
- 푸시 버튼
- 16x2 LCD
- 10k 냄비
- 브레드 보드 또는 PCB (JLCPCB에서 주문)
- 점퍼 와이어
- LED (옵션)
- 저항 150ohm -1kohm (옵션)
회로도 및 설명:
이 Raspberry Pi 지문 센서 인터페이스 프로젝트 에서는 4 개의 푸시 버튼을 사용했습니다. 하나는 새 지문 등록 용, 하나는 이미 공급 된 지문 삭제 용, 나머지 2 개는 이미 공급 된 지문 위치의 증가 / 감소를위한 것입니다. LED는 지문 센서는 손가락 매칭을 수행 할 준비가되었음을 표시에 사용된다. 여기서는 UART에서 작동하는 지문 모듈을 사용했습니다. 그래서 여기서 우리는 USB to Serial 변환기를 사용하여이 지문 모듈을 Raspberry Pi와 인터페이스했습니다.
따라서 먼저 아래의 회로도에 표시된대로 필요한 모든 연결을 만들어야합니다. 연결은 간단합니다. USB to Serial 변환기를 사용하여 지문 모듈을 Raspberry Pi USB 포트에 연결했습니다. 16x2 LCD는 모든 메시지를 표시하는 데 사용됩니다. LCD와 함께 10k 포트를 사용하여 동일한 대비를 제어합니다. 16x2 LCD 핀 RS, EN, d4, d5, d6 및 d7은 각각 Raspberry Pi의 GPIO 핀 18, 23, 24, 25, 8 및 7과 연결됩니다. 4 개의 푸시 버튼이 Raspberry Pi의 GPIO 핀 5, 6, 13 및 19에 연결됩니다. LED는 RPI의 26 번 핀에도 연결됩니다.
지문 센서 용 라이브러리 설치:
모든 연결을 마친 후 Raspberry Pi의 전원을 켜고 터미널을 열어 준비해야합니다. 이제 아래 단계에 따라 Python 언어로 Raspberry Pi 용 지문 라이브러리 를 설치 해야 합니다.
1 단계: 이 라이브러리를 설치하려면 루트 권한이 필요합니다. 따라서 먼저 주어진 명령 으로 루트 에 들어갑니다.
sudo bash
2 단계: 그런 다음 주어진 명령을 사용하여 몇 가지 필수 패키지 를 다운로드 합니다.
wget –O – http://apt.pm-codeworks.de/pm-codeworks.de.gpg-apt-key 추가 – wget http://apt.pm-codeworks.de/pm-codeworks.list -P / etc / apt / sources.list.d /
3 단계: 그런 다음 Raspberry pi 를 업데이트하고 다운로드 한 지문 센서 라이브러리를 설치해야합니다.
sudo apt-get 업데이트 sudo apt-get install python-fingerprint –yes
4 단계: 라이브러리를 설치 한 후 다음 명령을 사용하여 지문 센서가 연결된 USB 포트 를 확인 해야합니다.
ls / dev / ttyUSB *
이제 USB 포트 번호를 화면에 표시된 USB 포트로 교체하고 파이썬 코드에서 교체하십시오. 이 프로젝트의 끝에 완전한 Python 코드 가 제공됩니다.
Raspberry Pi를 사용한 지문 센서 작동:
이 프로젝트의 운영은 파이썬 코드를 실행하고 거기에 LCD를 통해 일부 소개 메시지가 될 것입니다 후 사용자에게 메시지가 표시됩니다, 간단 장소 손가락 지문 센서에. 이제 지문 모듈 위에 손가락을 대면 지문이 이미 저장되어 있는지 확인할 수 있습니다. 지문이 저장되면 LCD에 ' Fount at Pos: 2' 와 같이 지문 저장 위치와 함께 메시지가 표시되고 그렇지 않으면 'No Match Found' 가 표시됩니다 .
지금 손가락 등록하기 인쇄, 프레스 등록 버튼에 대한 사용자의 요구와 LCD 화면의 지시 메시지를 따릅니다.
사용자가 지문 을 삭제하려면 삭제 버튼 을 눌러야 합니다. 그 후 LCD는 삭제할 지문의 위치를 묻습니다. 이제 증가 및 감소를 위해 또 다른 두 개의 푸시 버튼을 사용하여 사용자는 저장된 지문의 위치를 선택하고 등록 버튼 (이 때 등록 버튼 이 확인 버튼으로 동작 함)을 눌러 해당 지문을 삭제할 수 있습니다. 더 많은 이해 를 위해 프로젝트 마지막 에 제공된 비디오를 보십시오.
Python 프로그래밍:
파이썬 RPI와 지문 센서 인터페이스는 지문 라이브러리 함수를 사용하여 간단합니다. 그러나 사용자가 직접 인터페이스하고 싶다면 처음에는 조금 어려울 것입니다. 지문 센서 데이터 시트에는 동일한 모듈을 인터페이스하는 데 필요한 모든 것이 제공됩니다. GitHub 코드를 사용하여 지문 센서로 Raspberry pi를 테스트 할 수 있습니다.
여기에서는 라이브러리를 사용 했으므로 라이브러리 함수를 호출하면됩니다. 코드에서 먼저 지문, GPIO 및 시간과 같은 라이브러리를 가져온 다음 LCD, LED 및 푸시 버튼에 대한 핀 을 정의 해야 합니다.
pyfingerprint.pyfingerprint에서 가져 오기 시간 import PyFingerprint RPi.GPIO as gpio RS = 18 EN = 23 D4 = 24 D5 = 25 D6 = 8 D7 = 7 enrol = 5 delet = 6 inc = 13 dec = 19 led = 26 HIGH = 1 낮음 = 0
그런 다음 초기화하고 선택한 핀에 방향을 제공 해야합니다.
gpio.setwarnings (False) gpio.setmode (gpio.BCM) gpio.setup (RS, gpio.OUT) gpio.setup (EN, gpio.OUT) gpio.setup (D4, gpio.OUT) gpio.setup (D5, gpio.OUT) gpio.setup (D6, gpio.OUT) gpio.setup (D7, gpio.OUT) gpio.setup (enrol, gpio.IN, pull_up_down = gpio.PUD_UP) gpio.setup (delet, gpio.IN, pull_up_down = gpio.PUD_UP) gpio.setup (inc, gpio.IN, pull_up_down = gpio.PUD_UP) gpio.setup (dec, gpio.IN, pull_up_down = gpio.PUD_UP) gpio.setup (led, gpio.OUT)
이제 지문 센서를 초기화했습니다.
try: f = PyFingerprint ('/ dev / ttyUSB0', 57600, 0xFFFFFFFF, 0x00000000) if (f.verifyPassword () == False): raise ValueError ('주어진 지문 센서 암호가 잘못되었습니다!') 예외를 제외하고 e: print ('예외 메시지:'+ str (e)) exit (1)
LCD를 초기화하고 구동하는 몇 가지 기능을 작성했습니다. 아래 코드 섹션에서 전체 코드를 확인하십시오.
def begin (), def lcdcmd (ch), def lcdwrite (ch), def lcdprint (Str), def setCursor (x, y)
모든 LCD 드라이버 기능을 작성한 후 지문 등록, 검색 및 삭제 기능을 배치했습니다.
def enrollFinger () 함수는 새 지문을 등록하거나 저장하는 데 사용됩니다.
def searchFinger () 함수는 이미 저장된 지문을 찾아내는 데 사용됩니다.
def deleteFinger () functinos는 해당 푸시 버튼을 눌러 이미 저장된 지문을 찾아내는 데 사용됩니다.
위의 모든 함수의 코드는 아래 주어진 파이썬 코드로 제공됩니다.
그 후, 마지막으로, 필요 시스템 초기화 에 의해 잠시 1 개 에 요청하여 루프 찾는 손가락 이 손가락이 유효한 인쇄 여부를 따라 결과를 표시할지 여부를 확인한다 지문 센서 후 시스템.
begin () lcdcmd (0x01) lcdprint ("FingerPrint") lcdcmd (0xc0) lcdprint ("Interfacing") time.sleep (3) lcdcmd (0x01) lcdprint ("Circuit Digest") lcdcmd (0xc0) lcdprint ("Welcomes You") time.sleep (3) flag = 0 lcdclear () while 1: gpio.output (led, HIGH) lcdcmd (1) lcdprint ("Place Finger") if gpio.input (enrol) == 0: gpio.output (led, LOW) enrollFinger () elif gpio.input (delet) == 0: gpio.output (led, LOW) while gpio.input (delet) == 0: time.sleep (0.1) deleteFinger () else: searchFinger ()
완전한 Python 코드와 작업 비디오 가 아래에 제공됩니다.