摘要
使用生物识别技术保护您的项目-这款多功能光学指纹传感器将使添加指纹检测和验证变得超级简单。这些模块通常用于保险箱中——有一个高性能的DSP芯片,可以执行图像渲染、计算、特征搜索和搜索。使用TTL串行连接到任何微控制器或系统,发送数据包用于拍照、检测打印、哈希和搜索。您也可以直接注册一个新的手指-多达162个指纹可以存储在板载闪存中。
我们喜欢这种特殊的传感器,因为它不仅易于使用,而且附带了相当简单的Windows软件,这使得模块的测试变得容易——你甚至可以使用这种软件在计算机屏幕上注册和查看指纹图像。但是,当然,我们不会给你数据表和“好运”!-我们已经编写了一个完整的Arduino库,因此您可以在10分钟内开始运行。该库可以注册和搜索,因此非常适合任何项目。我们还写了一个关于布线和使用的详细教程。这是迄今为止你能得到的最好的指纹传感器。
电源电压:3.6-6.0伏直流电
工作电流:最大120毫安。
峰值电流:最大150毫安。
指纹成像时间:“1.0秒
窗户面积:14毫米x 18mm毫米
签名文件:256字节
模板文件:512字节
存储容量:162个模板
安全级别(1-5低到高的安全性)
错误接受率:0.001%(安全级别3)
错误拒绝率:1.0%(安全级别3)
接口:TTL串行
波特率:9600,19200,28800,38400,57600(默认为57600)。
工作温度等级:-20C至50C
工作湿度:相对湿度40%-85%
全尺寸:56 x 20 x 21.5mm毫米
曝光尺寸(放在盒子里):21毫米x 21毫米x 21毫米三角形
重量:20克
注册和搜索
使用光学指纹传感器基本上有两个要求。首先,你需要登记你的指纹——这意味着给每一个指纹分配一个ID号以备将来参考。在注册所有的照片后,您可以轻松地“搜索”传感器,并要求它识别当前正在拍摄的ID(如果有)。
可以用Windows软件注册(最简单最简单的方法就是显示)。
或者使用Arduino sketches(适合在没有Windows机器或在路上注册的情况下使用)。
向Windows注册新用户。
注册新指纹最简单的方法是使用Windows软件。不幸的是,这个接口/测试软件只用于Windows,但你只需要使用一次注册就可以获得要存储在模块中的指纹。
首先,您需要通过USB串行转换器将传感器连接到计算机。最简单的方法是直接连接到Arduino中的USB/串行转换器。要做到这一点,你需要上传一张“空白草图”,对于“传统”的Arduino(比如Uno和Mega)来说非常有效:
下载:项目Zip或blank.ino |在Github上查看。
复制代码
//这个草图可以让你绕过Atmega芯片
//并将指纹传感器直接连接到USB/Serial
//芯片转换器。
//红色连接到5V
//黑色接地
//白色变为数字0
//绿色转到数字1
void setup() {}
void loop() {}
//这个草图可以让你绕过Atmega芯片
//并将指纹传感器直接连接到USB/Serial
//芯片转换器。
//红色连接到5V
//黑色接地
//白色变为数字0
//绿色转到数字1
void setup() {}
void loop() {}
“空白”草图不适用于基于Leonard、Micro、Zero等“原生USB”的Arduino!如果你用的是Leonardo,Micro,Yun,Zero或者其他基于ATSAMD21或者ATmega32U4的原生USB设备,请改用Leo_passthru sketch!
控制器,请使用Leo_passthru草图,而不是“空白”草图。
下载:Github上的Project Zip或Leo_passthru.ino | View。
复制代码
//Leo_passthru
//允许Leonardo在指纹读取器和Windows之间传递串行数据。
//
//红色连接到5V
//黑色接地
//绿色变为数字0
//白色转到数字1
void setup() {
//将您的安装代码放在这里,运行一次:
serial 1 . begin(57600);
serial . begin(57600);
}
void循环(){
while(serial . avail())
serial 1 . write(serial . read());
while (Serial1.available())
serial . write(serial 1 . read());
}//利奥_通行证
//允许Leonardo在指纹读取器和Windows之间传递串行数据。
//
//红色连接到5V
//黑色接地
//绿色变为数字0
//白色转到数字1
void setup() {
//将您的安装代码放在这里,运行一次:
serial 1 . begin(57600);
serial . begin(57600);
}
void循环(){
while(serial . avail())
serial 1 . write(serial . read());
while (Serial1.available())
serial . write(serial 1 . read());
}
上传草图后,根据草图注释中的接线图连接传感器。因为传感器的导线太细太短,我们把导线剥开一点,熔化一些焊料,使其接触更好,但如果接触不良,我们可能需要把导线焊接到插头或类似的端子上。插上电源后,您可能会看到LED闪烁,表示传感器正在工作。
如果传感器的所有导线颜色相同,则左起第一根导线接地,接着是两个数据引脚,然后通电。
RX与白线相同
TX与绿线相同
如果传感器使用不同的线,左边的线要先用黑线接地,然后是两个数据引脚,RX是白线,TX是绿线,然后是红色电源线。
启动SFGDemo软件,然后点击左下角的打开设备。选择Arduino使用的COM端口。
,然后按确定。您应该看到下面的内容,在底部角落有一条蓝色的成功消息和一些设备统计信息。您可以在左下角更改波特率和“安全级别”(它的灵敏度),但我们建议您不要更改这些波特率,直到您一切正常并想尝试。它们应该默认为57600波特和安全级别3,所以如果您出错,请设置它们。
如果在打开设备时出现错误,请检查接线,并尝试交换传感器上的RX和TX线,这是一种常见的混合现象!
让我们注册一个新的手指!单击“预览”复选框,然后按下旁边的“注册”按钮(如果您希望有多个手指注册,则“注册”表示“连续”注册)。当对话框出现时,输入要使用的ID号。您最多可以使用162个身份证号码。
软件会要求你将手指按在传感器上。
然后,您可以查看指纹的预览(如果选中了“预览”复选框)。
然后,你将不得不重复这一过程,以获得第二个干净的打印。用同一个手指!
成功了,会通知你的。
,如果出现打印质量或图像不佳的问题,必须重新操作。
用软件搜索
一旦你注册了你的手指,最好有一个快速测试,以确保你能在数据库中找到它。单击右侧的搜索按钮。
出现提示时,按传感器上的另一个/同一个手指。
如果是同一个手指,应该和ID #一样
如果不是数据库中的一个手指,你会收到一个失败通知。
Arduino的布线
测试完传感器后,您现在可以在草图中使用它来验证指纹。我们需要重新连接传感器。将绿线与白线断开,然后将绿线插入数字2,白线插入数字3。(对于ESP8266,请使用4和5,对于带硬件UART的设备,请使用0和1。)
通电后,传感器正常闪烁的LED将很快消失,直到您开始向其请求数据。
如果您的传感器使用不同的导线,左起第一根导线应该是黑色接地导线,然后是两个数据引脚,RX是白色导线,TX是绿色导线,然后是红色电源线。你必须切割、剥皮和焊接电线。
如果传感器的所有导线颜色相同,则左起第一根导线接地,接着是两个数据引脚,然后通电。
RX与白线相同
TX与绿线相同
Arduino UNO和兼容布线
该示例草图使用引脚2和3作为软件串行(默认情况下在ATmega328P板上),并非所有板都支持软件。所有引脚都是串行的,请参考主板文档!例如,在ESP8266上,我们使用4和5。
您可以用3.3V或5V为传感器供电。
在下图中,我们显示了直接插入电线的电线。Arduino的然而,这并不好用,因为电线太细,它们不接触。你应该在每根电线上焊一根粗的实心电线,以达到良好的接触。注意:指纹传感器插入电缆的两端-在切割任何东西之前,请确保正确的一端已被移除。您的布线顺序应该与上图相符,指纹传感器朝上。
硬件串行连接
如果您的设备有硬件序列号,您应该使用它。通常是引脚# 0和# 1。
接下来,你需要安装Adafruit指纹传感器库(也可以从github获得)。
打开Arduino库管理器:
输入指纹,直到Adafruit指纹库出现!
点击“安装”!仅仅.现在你应该可以选择文件例子Adafruit_Fingerprint指纹样本草图。
软硬连载
默认情况下,草图使用软件序列(Arduino UNO和兼容版本)。如果你用的是带硬件串口的设备,比如没有USB串口转换芯片,请改用!通常这些位于引脚0和1。
下载:文件
复制代码
//在Leonardo/Micro或者其他有硬件串口的上,用那些!#0是绿色电线,#1是白色电线
//取消对此行的注释:
#定义我的序列序列1
//对于UNO等没有硬件串口的,一定要用软件串口。
//引脚#2来自传感器(绿线)
//引脚#3从arduino输出(白线)
//如果使用硬件串行,请注释这两行
//#包含
//SoftwareSerial mySerial(2,3);//在Leonardo/Micro或者其他有硬件串口的上,用那些!#0是绿色电线,#1是白色电线
//取消对此行的注释:
#定义我的序列序列1
//对于UNO等没有硬件串口的,一定要用软件串口。
//引脚#2来自传感器(绿线)
//引脚#3从arduino输出(白线)
//如果使用硬件串行,请注释这两行
//#包含
//SoftwareSerial mySerial(2,3);
如有必要,取消注释/注释行以支持硬件串行。
上传
照常上传到Arduino。以9600波特打开串行监视器,并在出现提示时将手指放在注册的传感器上。
您应该看到以下内容:
“置信度”是一个分数(从0到255),表示印刷品的匹配度越高越好。请注意,完全匹配意味着传感器非常有信心,所以您不必关注置信度,除非它对高安全性应用有意义。
当然,你得先有注册指纹!如果你用一个Windows程序来做这个,那太好了。如果还没打印,至少把找到的指纹传感器打印出来!您可以继续下一步注册指纹。
如果您没有找到指纹传感器:(检查接线,您可能要交换RX和TX线,因为这是一个常见的问题。
如果您想要更详细的报告,请更改循环()以运行getFingerprintID()而不是getFingerprintIDez(),这将为您提供一份详细的报告,说明传感器在搜索过程中的每个点上检测到了什么。
向Arduino注册
我们确实做了一个通过Arduino注册新手指的简单草图——它不像Windows程序那样容易使用,但它可以使用!
运行文件示例Adafruit_Fingerprint注册草图并上传到Arduino,使用与上面相同的接线。
当你打开串行监视器时,它会要求你输入你想要注册的ID-在顶部的框中输入一个数字,然后单击发送。
然后按照说明完成注册过程。成功注册手指后,它会打印保存的!
当您完成注册以确保一切正常时,不要忘记进行搜索测试!
Python和CircuitPython
配合Python和CircuitPython和Adafruit Circuit Python指纹模块使用光学指纹传感器很方便。该模块允许您轻松编写Python代码来读取、注册或删除指纹。
由于我们的CircuitPython- Adafruit_Blinka,您可以将该传感器与任何CircuitPython微控制器板或具有GPIO和Python的计算机配合使用。For-Python兼容库。
传感器接线
如果您的传感器有不同的电线,从左边开始的第一根电线应该是黑色电线,然后是两个数据引脚,RX是白色电线,TX是绿色电线,然后是红色电源线。你必须将较粗的电线切割、剥离并焊接到当前的电线上。
如果传感器的所有导线颜色相同,则左起第一根导线接地,接着是两个数据引脚,然后通电。
RX与白线相同
TX与绿线相同
在下面的图片中,我们显示插入的电线直接放入饰品中。然而,这并不好用,因为电线太细,它们不接触。你应该在每根电线上焊一根粗的实心电线,以达到良好的接触。注意:指纹传感器插入电缆的两端-在切割任何东西之前,请确保正确的一端已被移除。您的布线顺序应该与上面的图像相匹配,指纹传感器朝下。
CircuitPython微控制器布线
首先,以与Arduino前几页完全相同的方式将指纹传感器连接到电路板。这是一个使用UART将小饰品M0连接到传感器的示例:
每个CircuitPython板都有一个硬件UART。检查写在产品页面或搜索板上的RX和TX。记住,来自传感器的RX到达电路板上的TX!遇到问题请尽量交流,这是常见的错误。
Python计算机布线
由于有几十种Linux电脑/主板可供选择,我们将展示树莓的布线盖。对于其他平台,请访问Linux上的CircuitPython指南,查看您的平台是否受支持。
这里,您有两种选择:外部USB到串行转换器或USB上的内置UART。pi的TX/RX引脚。以下是将USB连接到串行转换器的示例:
传感器VCC(红线)到USB 5V或3v(USB控制台电缆上的红线)
传感器GND(黑线)到USB接地(黑线)
传感器RX(白线)至USB TX(绿线)
传感器TX(绿线)至USB RX(白线)
下面是一个使用Pi的内置UART示例:
Pi GND到传感器GND(黑色k线)
Pi TX至传感器RX(白线)
Pi RX至传感器TX(绿线)
Pi 3.3v至传感器VCC(红线)
如果要使用内置UART,需要在raspi-config中禁用串行控制台并启用串行端口硬件。有关如何操作的详细说明,请参见《Raspberry Pi上CircuitPython指南》的UART/串行部分。
请注意,除Raspberry Pi之外的SBC板在I/O引脚上可能有也可能没有可用的硬件UART,或者它们可能已经永久映射到控制台。请参考您的主板文档,查看是否有硬件UART、它的位置、启用模式以及它是否可用于除控制台之外的串行设备编程。
CircuitPython指纹库安装
要使用指纹传感器,您需要在Adafruit Circuitp板上安装CircuitPython指纹库。
首先确保您运行的是开发板的最新版本Adafruit CircuitPython。
接下来,你需要安装必要的库来使用硬件——小心地跟着他一步一步地从Adafruit的CircuitPython库捆绑包中找到并安装这些库。在我们的入门指南中有一个很棒的页面,介绍了如何为快速加载板和非快速加载板安装库包。
将必要的文件从库包复制到《您的 lib 文件夹中strong》 CIRCUITPY驱动器:
adafruit_fingerprint.mpy
在继续之前,请确保将adafruit_fingerprint.mpy文件复制到主板的lib文件夹中。
接下来,连接到开发板的串行REPL,这样你就在CircuitPython上了。
指纹数据库的Python安装
您需要安装阿达果_布林卡库,该库在计算机编程语言中提供了CircuitPython支持。这可能还需要在您的平台上启用硬件通用异步收发器(请参见上面的红色说明)并确认您正在运行Python3。由于每个平台都略有不同,并且Linux操作系统操作系统经常更改,请访问Linux操作系统操作系统上的CircuitPython指南以使您的计算机准备就绪!
完成后,从命令行运行以下命令:
sudo pip3安装ada fruit-circuit python-指纹
如果您的默认设置计算机编程语言是版本3,您可能需要运行匹普。只要确保您不尝试在Python 2.x上使用CircuitPython,就不支持它!
CircuitPython和计算机编程语言的用法
为演示传感器的用法,我们将使用该库附带的示例大蟒脚本。该传感器非常复杂,因此仅通过取代很难运行。
CircuitPython微控制器用法
一旦安装了库,请运行此code.py在CircuitPython开发板上的示例。
使用计算机编程语言的Linux/电脑/树莓派
如果您在树莓派(或任何计算机)上运行指纹_简单测试。py,则必须进行一些更改。
在树莓派上,注释掉uart=busio .通用异步收发器(.)行,并取消注释相应的导入序列和uart=串行。连续的.)行,具体取决于您使用的是通用串行总线串行还是硬件UART。现在,您可以使用以下命令运行该程序:
下载:文件
复制代码
python 3指纹_简单测试。py python 3指纹_ simpletest。巴拉圭
示例代码
下载:项目活力或fingerprint_simpletest.py |在开源代码库上查看
复制代码
导入时间
进口委员会
进口业务
从数字电视进口到洋地黄毒苷,方向
导入水果_指纹
led=DigitalInOut(板D13)
方向=方向。输出
uart=busio .通用异步收发器(板. TX,板. RX,波特率=57600)
#如果使用带有USB/串行转换器的计算机,如Linux/RaspberryPi、Mac、Windows:
#导入序列
#uart=串行。串行("/dev/ttyUSB0",波特率=57600,超时=1)
#如果使用Linux/树莓Pi和硬件UART:
#导入序列
#uart=串行。串行("/dev/ttyS0",波特率=57600,超时=1)
手指=阿达果_指纹Adafruit_Fingerprint(uart)
##################################################
def get _ fingerprint():
"""获取一个指纹图像,模板化,看看是否匹配!"""
打印(“等待图像。")
while finger.get_image()!=adafruit_fingerprint .好的:
及格
打印(“模板。")
if finger.image_2_tz(1)!=adafruit_fingerprint .好的:
返回错误的
打印("搜索。")
if finger.finger_fast_search()!=adafruit_fingerprint .好的:
返回错误的
返回真实的
# pylint:disable=太多分支
def get _ fingerprint _ detail():
"""获取一个指纹图像,模板化,看看是否匹配!
这一次,打印出每一个错误,而不只是在失败时返回""
打印(“获取图像。",end="",flush=True)
i=finger.get_image()
如果i==adafruit_fingerprint .好的:
打印("拍摄的图像")
否则:
如果i==adafruit_fingerprint .无手指:
打印("未检测到手指")
elif i==adafruit_fingerprint .图像失败:
打印("成像错误")
否则:
打印("其他错误")
返回错误的
打印(“模板。",end="",flush=True)
i=finger.image_2_tz(1)
如果i==adafruit_fingerprint .好的:
打印("模板化")
否则:
如果i==adafruit_fingerprint .图像混乱:
打印("图像太乱")
elif i==adafruit_fingerprint .功能失败:
打印("无法识别特征")
elif i==adafruit_fingerprint .无效图像:
打印("图像无效")
否则:
打印("其他错误")
返回错误的
打印("搜索。",end="",flush=True)
i=finger.finger_fast_search()
# pylint: disable=no-else-return
#这个块可以测试的时候需要重构。
如果i==adafruit_fingerprint .好的:
打印(“找到指纹了!")
返回真实的
否则:
如果i==adafruit_fingerprint .未找到:
打印("未找到匹配项")
否则:
打印("其他错误")
返回错误的
# pylint:disable=太多语句
定义注册_手指(位置):
"""拍摄两个手指的图像并制作模板,然后存储在"位置""""
对于范围(1,3)内的手指:
如果fingerimg==1:
打印(“将手指放在传感器上。",end="",flush=True)
否则:
打印(“再次放置相同的手指。",end="",flush=True)
虽然正确:
i=finger.get_image()
如果i==adafruit_fingerprint .好的:
打印("拍摄的图像")
破裂
elif i==adafruit_fingerprint .无手指:
打印(".end="",flush=True)
elif i==adafruit_fingerprint .图像失败:
打印("成像错误")
返回错误的
否则:
打印("其他错误")
返回错误的
打印(“模板。",end="",flush=True)
i=finger.image_2_tz(fingerimg)
如果i==adafruit_fingerprint .好的:
打印("模板化")
否则:
如果i==adafruit_fingerprint .图像混乱:
打印("图像太乱")
elif i==adafruit_fingerprint .功能失败:
打印("无法识别特征")
elif i==adafruit_fingerprint .无效图像:
打印("图像无效")
否则:
打印("其他错误")
返回错误的
如果fingerimg==1:
打印("移除手指")
时间。睡眠(1)
而我!=adafruit_fingerprint .无手指:
i=finger.get_image()
打印(“创建模型。",end="",flush=True)
i=finger.create_model()
如果i==adafruit_fingerprint .好的:
打印("已创建")
否则:
如果i==adafruit_fingerprint .注册不匹配:
打印("打印不匹配")
否则:
打印("其他错误")
返回错误的
打印(“存储模型#%d .”% location,end="",flush=True)
i=finger.store_model(位置)
如果i==adafruit_fingerprint .好的:
打印("存储")
否则:
如果i==adafruit_fingerprint .错误位置:
打印("错误的存储位置")
elif i==adafruit_fingerprint .闪光器:
打印("闪存错误")
否则:
打印("其他错误")
返回错误的
返回真实的
##################################################
极好的获取数量():
"""使用输入()获取一到127之间的有效数字。重试直到成功!"""
i=0
而(我《127》)或(我《1》:
尝试:
i=int(input("Enter ID # from 1-127:"))
除了值错误:
及格
返回我
虽然正确:
打印("-")
if finger.read_templates()!=adafruit_fingerprint .好的:
引发RuntimeError("无法读取模板")
打印(“指纹模板:",finger.templates)
打印(“e”)注册打印")
打印(“f”)查找打印")
打印(“d”)删除打印")
打印("-")
c=输入("")
如果c=='e '
enroll_finger(get_num())
如果c=='f '
if get_fingerprint():
print("Detected #",finger.finger_id,"with confidence",finger.confidence)
否则:
打印("找不到手指")
如果c=='d '
如果手指。delete _ model(get _ num())==adafruit _ fingerprint .好的:
打印("已删除!")
否则:
打印("未能删除")
导入时间
进口委员会
进口业务
从数字电视进口到洋地黄毒苷,方向
导入水果_指纹
led=DigitalInOut(板D13)
方向=方向。输出
uart=busio .通用异步收发器(板. TX,板. RX,波特率=57600)
#如果使用带有USB/串行转换器的计算机,如Linux/RaspberryPi、Mac、Windows:
#导入序列
#uart=串行。串行("/dev/ttyUSB0",波特率=57600,超时=1)
#如果使用Linux/树莓Pi和硬件UART:
#导入序列
#uart=串行。串行("/dev/ttyS0",波特率=57600,超时=1)
手指=阿达果_指纹Adafruit_Fingerprint(uart)
##################################################
def get _ fingerprint():
"""获取一个指纹图像,模板化,看看是否匹配!"""
打印(“等待图像。")
while finger.get_image()!=adafruit_fingerprint .好的:
及格
打印(“模板。")
if finger.image_2_tz(1)!=adafruit_fingerprint .好的:
返回错误的
打印("搜索。")
if finger.finger_fast_search()!=adafruit_fingerprint .好的:
返回错误的
返回真实的
# pylint:disable=太多分支
def get _ fingerprint _ detail():
"""获取一个指纹图像,模板化,看看是否匹配!
这一次,打印出每一个错误,而不只是在失败时返回""
打印(“获取图像。",end="",flush=True)
i=finger.get_image()
如果i==adafruit_fingerprint .好的:
打印("拍摄的图像")
否则:
如果i==adafruit_fingerprint .无手指:
打印("未检测到手指")
elif i==adafruit_fingerprint .图像失败:
打印("成像错误")
否则:
打印("其他错误")
返回错误的
打印(“模板。",end="",flush=True)
i=finger.image_2_tz(1)
如果i==adafruit_fingerprint .好的:
打印("模板化")
否则:
如果i==adafruit_fingerprint .图像混乱:
打印("图像太乱")
elif i==adafruit_fingerprint .功能失败:
打印("无法识别特征")
elif i==adafruit_fingerprint .无效图像:
打印("图像无效")
否则:
打印("其他错误")
返回错误的
打印("搜索。",end="",flush=True)
i=finger.finger_fast_search()
# pylint: disable=no-else-return
#这个块可以测试的时候需要重构。
如果i==adafruit_fingerprint .好的:
打印(“找到指纹了!")
返回真实的
否则:
如果i==adafruit_fingerprint .未找到:
打印("未找到匹配项")
否则:
打印("其他错误")
返回错误的
# pylint:disable=太多语句
定义注册_手指(位置):
"""拍摄两个手指的图像并制作模板,然后存储在"位置""""
对于范围(1,3)内的手指:
如果fingerimg==1:
打印(“将手指放在传感器上。",end="",flush=True)
否则:
打印(“再次放置相同的手指。",end="",flush=True)
虽然正确:
i=finger.get_image()
如果i==adafruit_fingerprint .好的:
打印("拍摄的图像")
破裂
elif i==adafruit_fingerprint .无手指:
打印(".end="",flush=True)
elif i==adafruit_fingerprint .图像失败:
打印("成像错误")
返回错误的
否则:
打印("其他错误")
返回错误的
打印(“模板。",end="",flush=True)
i=finger.image_2_tz(fingerimg)
如果i==adafruit_fingerprint .好的:
打印("模板化")
否则:
如果i==adafruit_fingerprint .图像混乱:
打印("图像太乱")
elif i==adafruit_fingerprint .功能失败:
p
elif i == adafruit_fingerprint.INVALIDIMAGE:
print(“Image invalid”)
else:
print(“Other error”)
return False
if fingerimg == 1:
print(“Remove finger”)
time.sleep(1)
while i != adafruit_fingerprint.NOFINGER:
i = finger.get_image()
print(“Creating model.。.”, end=“”, flush=True)
i = finger.create_model()
if i == adafruit_fingerprint.OK:
print(“Created”)
else:
if i == adafruit_fingerprint.ENROLLMISMATCH:
print(“Prints did not match”)
else:
print(“Other error”)
return False
print(“Storing model #%d.。.” % location, end=“”, flush=True)
i = finger.store_model(location)
if i == adafruit_fingerprint.OK:
print(“Stored”)
else:
if i == adafruit_fingerprint.BADLOCATION:
print(“Bad storage location”)
elif i == adafruit_fingerprint.FLASHERR:
print(“Flash storage error”)
else:
print(“Other error”)
return False
return True
##################################################
def get_num():
“”“Use input() to get a valid number from 1 to 127. Retry till success!”“”
i = 0
while (i 》 127) or (i 《 1):
try:
i = int(input(“Enter ID # from 1-127: ”))
except ValueError:
pass
return i
while True:
print(“----------------”)
if finger.read_templates() != adafruit_fingerprint.OK:
raise RuntimeError(‘Failed to read templates’)
print(“Fingerprint templates:”, finger.templates)
print(“e) enroll print”)
print(“f) find print”)
print(“d) delete print”)
print(“----------------”)
c = input(“》 ”)
if c == ‘e’:
enroll_finger(get_num())
if c == ‘f’:
if get_fingerprint():
print(“Detected #”, finger.finger_id, “with confidence”, finger.confidence)
else:
print(“Finger not found”)
if c == ‘d’:
if finger.delete_model(get_num()) == adafruit_fingerprint.OK:
print(“Deleted!”)
else:
print(“Failed to delete”)
虽然相当长,但是它可以帮助您设置和测试传感器!
首次启动时,您应该得到以下内容:
如果出现类似RuntimeError: Failed to read data from sensor的错误,则表明出现了问题-检查接线和波特率!
此菜单系统非常简单,您可以做三件事
注册打印-您将用手指拍摄图像并将模型“存储”在传感器中
查找打印-det确定是否知道并存储了指纹
删除打印-清除模型
注册指纹
注册指纹很容易。键入 e 开始该过程。您需要选择一个位置。该传感器最多可以存储127个打印位置。选择一个有效的数字,然后手指两次注册。
请注意,成功后,指纹模板:[。..] 打印输出将包括新的模板ID。
如果发生错误,传感器将为您提供一个错误,例如,如果两个打印件不匹配,或者存储或生成模型失败:
查找指纹
一旦您注册了指纹,就可以对其进行测试。运行 f ind命令,然后尝试各种手指!识别出指纹ID后,它会告诉您位置编号,在这种情况下为#5
删除指纹
如果输入有误,可以从数据库中删除指纹模型。例如,以下是删除#5的方法。请注意指纹模板:[。..] 打印输出更改!
下载
github上的Arduino接口库
用户手册
数据表(它并不是一个很好的数据表,
英文版的《用户手册》
“ SFGDemo”仅用于Windows的测试软件