1.首先在连接好usb-ttl模块,在win系统上用串口助手测试
可以直接用资料里的上位机直接测试,我这里只是为了熟悉下各种指令。 根据手册,我们可以知道,发送EF 01 FF FF FF FF 01 00 03 01 00 05代表探测手指并录入图像 发送过去可以看到返回了EF 01 FF FF FF FF 07 00 03 02 00 0C ,确认码是02,是因为我没有放手指。 说明模块正常使用,我这里只测试这个指令,其他指令大家自行测试。
2.指纹录入
因为我的项目 只需要识别指纹,所以录入指纹直接用了上位机录入
现在已经录入好了三个指纹
3.用树莓派和python实现指纹识别
3.1指纹模块接好usb_ttl连接到树莓派,输入ls -l /dev/ttyUSB* 查看串口号 3.2编写python程序
实现的功能是自动验证指纹,其他功能同理
# -*- coding: utf-8 -*-#
import binascii
import serial
import serial.tools.list_ports
import time
serial = serial.Serial('/dev/ttyUSB0', 57600, timeout=0.5) #串口号和波特率要填写正确
if serial.isOpen() :
print("open success")
else :
print("open failed")
def recv(serial):
while True:
data = serial.read_all()
if data == '':
continue
else:
break
return data
def PS_Identify(): #自动验证指纹函数,对应数据册里的17
#serial.write(0)
#time.sleep(1)
#自动验证指纹的请求数据
sen_data = "EF 01 FF FF FF FF 01 00 03 11 00 15"
#把'00'转换成'\x00'并发送
serial.write(bytes.fromhex(sen_data))
time.sleep(1)
recv_data =recv(serial)
print(recv_data)
#把'\x00'转换成'=00'
recv_data_str=str(binascii.b2a_hex(recv_data))[20:22] #[20:22]是确认码的位置
print('recv_data_str= '+recv_data_str)
if recv_data_str == "00": #00表示搜索到,01表示收包有错 09表示没搜索到
usr=str(binascii.b2a_hex(recv_data))[24:26] #表示返回的页码,即哪个用户
print("搜索到用户"+usr)
return 1
elif recv_data_str == "01":
print("收包错误,请重试")
return "收包错误,请重试"
elif recv_data_str == "09":
print("未搜索到用户")
return 0
elif recv_data_str == "03":
print("未检测到手指")
return "未检测到手指"
else:
print("请重试")
return "请重试"
if __name__ == '__main__':
PS_Identify()
3.4运行结果
|