Raspberry PI + Fingerprint Sensor

문지원·2024년 5월 13일
1

라즈베리파이와 지문인식 센서를 통해서 지문인식 결과를 문자열로 변환하여 데이터베이스에 저장하고 다음 인식 될 지문과 일치율을 구하는 코드를 짜보았다.

데이터베이스에 저장하는 부분은 구현하지 않았다.
조만간 구글의 Firebase를 통해 구현 할 예정이다.

먼저 파이썬을 통해 구현을 하였다.
다음의 라이브러리를 사용하였고, 라이브러리를 사용하기 위해 사용 가능한 지문인식 센서는 다음과 같다.
ZFM-20, ZFM-60, ZFM-70, ZFM-100, R302, R303, R305, R306, R307, R551, FPM10A
위 지문인식 모델들에서 사용이 가능하다.
필자는 R307 모델을 사용하였다 (프로세서는 AS608)
먼저 쉘을 통해 라이브러리를 설치한다.

pip install pyfingerprint

위와 같이 입력하면 설치가 진행된다.
이제 라즈베리파이와 지문인식 센서를 결선할건데 다음과 같이 결선을 하면 된다.

TX와 RX를 잘 보고 결선해야한다.
위 처럼 결선하고 다음의 명령어를 입력한다

ls -al /dev |  grep serial


다음과 같이 ttyAMA0이 나오면 정상적으로 결선이 완료된 것이다.
이제 코딩을 진행하면 된다.

import time # 기다리기를 위해 참조
from pyfingerprint.pyfingerprint import PyFingerprint # 지문인식 라이브러리
try:
    f = PyFingerprint('/dev/ttyAMA0',57600, 0xFFFFFFFF, 0x00000000) # 지문인식센서와 통신
    if(f.verifyPassword() == False):
        raise ValueError('Password wrong!')
except Exception as e:
    print(str(e))
    exit(1)

try:
    print('Waiting for finger...') # 지문 기다리기 안내
    while(f.readImage() == False): # 지문 인식될때까지 기다리기
        pass
    f.convertImage(0x01) # 인식 된 지문을 버퍼 0x01 주소에 저장
    characterics = str(f.downloadCharacteristics(0x01)).encode('utf-8') # 0x01에 저장된 값을 문자열로 변환
    print(characterics) # 문자열로 변환한 지문 값을 출력
except Exception as e:
    print('error')
    print(str(e))
    exit(1)

time.sleep(1)

try:
    print('Verifying for finger...') # 위에서 인식한 지문과 일치한지 검사 시작
    while(f.readImage() == False): # 지문 인식 기다리기
        pass
    f.convertImage(0x01) # 인식 된 지문을 버퍼 0x01주소에 저장
    print(f.uploadCharacteristics(0x02,eval(characterics))) # 이전에 입력한 지문을 0x02주소에 넣고 출력
    score = f.compareCharacteristics() # 0x01 지문과 0x02 주소의 지문을 비교
    print(score) # 일치율 출력
except Exception as e:
    print('error')
    print(str(e))
    exit(1)

위와 같이 하면 다른 손가락은 일치율이 0이 나오고 손가락은 같고 위치만 바뀌었을때는 60이상 출력된다.

profile
인문계 고등학교에서 코딩하는 학생입니다 👋

0개의 댓글

관련 채용 정보