这篇文章是有关如何在Arduino上使用指纹传感器模块的入门指南。我们将向您展示如何注册新的指纹ID,以及如何找到指纹匹配项。
指纹传感器模块介绍
(如下图所示)使指纹识别更易于访问,并且易于添加到您的项目中。这意味着超级容易进行指纹收集,注册,比较和搜索。
这些模块带有闪存以存储指纹,并可以与任何具有TTL串行的微控制器或系统一起使用。这些模块可以添加到安全系统,门锁,考勤系统等中。
技术指标
这是我们正在使用的的规格(您应该检查传感器数据表或供应商提供的规格-它们应该与这些没有太大不同):
· 电源电压:DC 3.6至6.0V
· 电流供应:<120mA
· 背光颜色:绿色
· 接口:UART
· 不良率:9600
· 安全级别:五(从低到高:1,2,3,4,5)
· 错误接受率(FAR):<0.001%(安全级别3)
· 错误拒绝率(FRR):<1.0%(安全级别3)
· 能够存储127种不同的指纹
传感器引脚排列
传感器有六个引脚,如下图所示。
该项目中使用的指纹传感器模块的导线非常细,因此需要焊接面包板连接的导线。我们建议根据引脚功能使用不同的颜色。在我们的情况下:
· DNC –白线
· VCC –红线
· TX –蓝线
· RX –绿线
· GND –黑线
安装Adafruit指纹传感器库
使用Arduino控制指纹传感器模块的最简单方法是使用该传感器的Adafruit库。按照以下说明安装库:
1. 您应先下载库文件Adafruit库,您的下载文件夹中应该有一个.zip文件夹
2. 解压缩.zip文件夹,您应该获得Adafruit-fingerprint-Sensor-Library-master文件夹
3. 重命名文件夹 到 Adafruit_Fingerprint_Sensor_Library文件夹
4. 将文件夹移到Arduino IDE安装库文件夹
5. 最后,重新打开您的Arduino IDE
注册新指纹
将指纹传感器模块连接到Arduino,按照以下步骤注册新的指纹。确保之前已安装Adafruit指纹传感器库。
1.在Arduino IDE中,转到文件 > 示例 > Adafruit 指纹 传感器 库 > 。
2.上载代码,然后以9600的波特率打开串行监视器。
3.您应该输入指纹的ID。因为这是您的第一个指纹,所以在左上角键入1,然后单击" 发送"按钮。
4.将手指放在扫描仪上,然后按照串行监视器上的说明进行操作。
系统会要求您将同一根手指两次放在扫描仪上。如果您得到" 输出匹配!"消息,如下所示,您的指纹已成功存储。如果没有,请重复该过程,直到成功。
使用此方法可以存储尽可能多的指纹。
寻找比赛
现在,您应该在不同的ID上保存了多个指纹。要与指纹传感器匹配,请遵循以下说明。
1.在Arduino IDE中,转到文件 > 示例 > Adafruit 指纹 传感器 库 > 然后将代码上传到Arduino板。
2. 以9600的波特率打开串行监视器。您应该看到以下消息:
3. 将要识别的手指放在扫描上。
4.在串行监视器上,您可以看到与指纹匹配的ID。它还显示置信度–置信度越高,指纹与存储的指纹相似。
项目示例–在OLED显示屏上显示指纹匹配
在此项目示例中,我们将注册来自两个不同人员的两个指纹。然后,我们将在OLED显示屏上显示与找到的匹配项相对应的问候消息。
所需零件
对于此示例,您将需要以下部分:
原理图
这是您为该项目制作电路时应遵循的接线图。
安装0.96英寸OLED库
1.打开您的Arduino IDE并转到 草图 > 包含库 > 管理库。库管理器应打开。
2. 在搜索框中键入" SSD1306 ",然后从Adafruit安装SSD1306库。
3.从Adafruit安装SSD1306库后,在搜索框中键入" GFX "并安装该库。
4.安装库之后,重新启动Arduino IDE。
程序代码
在上传代码之前,您需要注册来自不同人员的不同指纹。转到上方的" 注册新指纹"部分,上传给定代码,然后按照说明注册两个指纹。
然后,修改代码,以使指纹ID与注册人员的姓名匹配–向下滚动至页面以获取代码说明。最后,您可以上传提供的代码。
#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#define OLED_RESET 4
Adafruit_SSD1306 display(OLED_RESET);
#include <Adafruit_Fingerprint.h>
#include <SoftwareSerial.h>
SoftwareSerial mySerial(2, 3);
Adafruit_Fingerprint finger = Adafruit_Fingerprint(&mySerial);
int fingerprintID = 0;
String IDname;
void setup(){
//Fingerprint sensor module setup
Serial.begin(9600);
// set the data rate for the sensor serial port
finger.begin(57600);
if (finger.verifyPassword()) {
Serial.println("Found fingerprint sensor!");
}
else {
Serial.println("Did not find fingerprint sensor :(");
while (1) { delay(1); }
}
//OLED display setup
Wire.begin();
display.begin(SSD1306_SWITCHCAPVCC, 0x3C);
//displays main screen
displayMainScreen();
}
void loop(){
displayMainScreen();
fingerprintID = getFingerprintIDez();
delay(50);
if(fingerprintID == 1 || fingerprintID == 3 || fingerprintID == 4 || fingerprintID == 5){
IDname = "Sara";
displayUserGreeting(IDname);
}
else if(fingerprintID == 2){
IDname = "Rui";
displayUserGreeting(IDname);
}
}
// returns -1 if failed, otherwise returns ID #
int getFingerprintIDez() {
uint8_t p = finger.getImage();
if (p != FINGERPRINT_OK) return -1;
p = finger.image2Tz();
if (p != FINGERPRINT_OK) return -1;
p = finger.fingerFastSearch();
if (p != FINGERPRINT_OK) return -1;
// found a match!
Serial.print("Found ID #");
Serial.print(finger.fingerID);
Serial.print(" with confidence of ");
Serial.println(finger.confidence);
return finger.fingerID;
}
void displayMainScreen(){
display.clearDisplay();
display.setTextSize(1);
display.setTextColor(WHITE);
display.setCursor(7,5);
display.println("Waiting fingerprint");
display.setTextSize(1);
display.setTextColor(WHITE);
display.setCursor(52,20);
display.println("...");
display.display();
delay(2000);
}
void displayUserGreeting(String Name){
display.clearDisplay();
display.setTextColor(WHITE);
display.setTextSize(2);
display.setCursor(0,0);
display.print("Hello");
display.setCursor(0,15);
display.print(Name);
display.display();
delay(5000);
fingerprintID = 0;
}
导入库
该代码首先导入所需的库以在OLED显示器中编写,然后创建一个称为display 的Adafruit_SSD1306对象。
#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#define OLED_RESET 4
Adafruit_SSD1306 display(OLED_RESET);
#include <Adafruit_Fingerprint.h>
#include <SoftwareSerial.h>
SoftwareSerial mySerial(2, 3);
然后,我们在之前设置的串行引脚上创建一个名为finger的Adafruit_Fingerprint对象。
Adafruit_Fingerprint finger = Adafruit_Fingerprint(&mySerial);
接下来的两行创建变量以保存指纹ID和IDname。
int fingerprintID = 0;
String IDname;
设定()
在setup()中,指纹传感器和OLED显示屏均被初始化。我们还将在串行监视器上打印一条消息,以便知道是否成功找到了指纹传感器。
void setup(){
//Fingerprint sensor module setup
Serial.begin(9600);
// set the data rate for the sensor serial port
finger.begin(57600);
if (finger.verifyPassword()) {
Serial.println("Found fingerprint sensor!");
}
else {
Serial.println("Did not find fingerprint sensor :(");
while (1) { delay(1); }
}
//OLED display setup
Wire.begin();
display.begin(SSD1306_SWITCHCAPVCC, 0x3C);
//displays main screen
displayMainScreen();
}
循环()
在loop()中,代码在OLED显示屏上显示主屏幕-这是通过displayMainScreen()函数完成的。然后,代码将连续检查传入的指纹。如果传感器找到保存的指纹,则Arduino将相应的ID保存在FingerprintID变量中。
然后,该代码具有if / else语句,以检查指纹对应的ID。您应使用相应的ID和名称编辑以下代码行。
if(fingerprintID == 1 || fingerprintID == 3 || fingerprintID == 4 || fingerprintID == 5){
IDname = "Sara";
displayUserGreeting(IDname);
}
else if(fingerprintID == 2){
IDname = "Rui";
有时,如果将指纹以不同的ID多次保存,则传感器会更好地识别指纹。识别ID名称后,OLED会显示问候语-这是通过displayUserGreeting()函数完成的,
示范
现在,当保存了指纹的人将手指放在传感器上时,它会显示一条问候消息。
写到最后
在这篇文章中,我们向您展示了如何使用指纹传感器模块:注册指纹并找到匹配项。
有时,如果您的手指放置与保存时的手指不太相似,尤其是女性的指纹,则传感器很难识别指纹。我们注意到,如果将手指慢慢放在扫描仪上,传感器会更好地工作。
我们认为,指纹传感器模块可以很好地工作,这是一种为项目添加生物识别功能的经济实惠的方法。
Copyright © 2024 妖气游戏网 www.17u1u.com All Rights Reserved