目录
简介
在这个项目中,你将能够学会如何使用指纹传感器模块,I2C LCD和Arduino UNO创建指纹控制门锁。
这个项目里,当用户扫描系统上记录的正确指纹时,此门锁打开门,但在检测到错误的指纹时门将保持关闭。
步骤一 材料清单
硬件:
- Arduino UNO
- 指纹传感器模块
- I2C LCD
- 继电器模块
- 门锁
- 7至12V电源
- 若干杜邦线
软件:
- Arduino IDE
步骤二 硬件搭建
首先,将指纹传感器连接到Arduino UNO。确保通过串行通信获得与Arduino配合使用的指纹传感器。
Arduino UNO上串行通信的默认引脚是电路板的引脚0(RXD)和引脚1(TXD),但我们将使用其他引脚进行串行通信。对于这个项目,我们将在代码中使用SoftwareSerial库。
以下是指纹传感器和UNO之间所需的连接:
然后将I2C LCD模块连接到UNO。连接如下:
然后,将继电器模块连接到Arduino UNO,如下面的电路图所示。
为了控制门锁,你需要一个7到12V的电池 – 我使用了三个18650电池。
步骤三 开始编程
在编程之前,需要安装所需要的库文件。
指纹传感器和I2C LCD的库
要安装指纹传感器库,打开“库管理器”并输入“fingerprint”,您将看到Adafruit Fingerprint库弹出。单击第一个安装。
您可以以相同的方式安装LiquidCrystal I2C库。搜索“LiquidCrystal I2C”,您将能够看到此库:
安装好上面的库文件之后,我们就可以开始编程了。
在这个项目中,我们采用软串口进行通信。
软件串行库允许我们使用除默认0,1引脚之外的其他引脚进行串行通信。复制以下部分的代码并上传。
#include <Adafruit_Fingerprint.h>
#include <LiquidCrystal_I2C.h>
#include <SPI.h>
#include <SoftwareSerial.h>
SoftwareSerial mySerial(2, 3)
在设置功能中,设置指纹传感器工作的波特率。然后,检查指纹传感器是否正在与Arduino通信。
finger.begin(57600);
if (finger.verifyPassword()) {
lcd.setCursor(0, 0);
lcd.print(" FingerPrint ");
lcd.setCursor(0, 1);
lcd.print("Sensor Connected");
}
else {
lcd.setCursor(0, 0);
lcd.print("Unable to found");
lcd.setCursor(0, 1);
lcd.print("Sensor");
delay(3000);
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Check Connections");
while (1) {
delay(1);
}
}
现在我们需要设置你的实际指纹!以下代码部分供用户将手指放在指纹扫描仪上,指纹扫描仪将指纹转换为图像:
uint8_t p = finger.getImage();
if (p != FINGERPRINT_OK) {
lcd.setCursor(0, 0);
lcd.print(" Waiting For");
lcd.setCursor(0, 1);
lcd.print(" Valid Finger");
return -1;
}
p = finger.image2Tz();
if (p != FINGERPRINT_OK) {
lcd.clear();
lcd.setCursor(0, 0);
lcd.print(" Messy Image");
lcd.setCursor(0, 1);
lcd.print(" Try Again");
delay(3000);
lcd.clear();
return -1;
}
p = finger.fingerFastSearch();
if (p != FINGERPRINT_OK) {
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Not Valid Finger");
delay(3000);
lcd.clear();
return -1;
}
最终的程序:
步骤四 最终演示
如果识别不正确,它会要求再次扫描您的手指,以便获得一个良好的指纹图像,该图像将与系统中所有指纹的保存图像进行比较。在匹配图像后,门将打开。否则,门将保持关闭状态。
将手指放在传感器上,以便系统可以创建指纹图片。
一旦系统收到清晰的指纹,您的门锁就可以使用了!