风筝
发表于: 2019-2-28 16:13:36 | 显示全部楼层

了解如何使用传感器模块、I2C LCD和Arduino UNO开发板制作指纹控制的门锁。


在本篇文章中,我将向您展示如何使用指纹传感器和Arduino UNO制作一个智能门锁。只有当用户扫描的指纹与系统上记录的指纹匹配时,该门锁才会打开,如果输入的指纹错误时,门仍将保持关闭状态。


所需的硬件

●    Arduino UNO开发板

●    指纹传感器模块

●    I2C LCD显示屏

●    继电器模块

●    门锁

●    7至12V电源

●    跳线电缆


电路图和说明

首先,将指纹传感器连接到Arduino UNO开发板。请确保您使用的指纹传感器能够通过串行通信与Arduino配合使用。


Arduino UNO上串行通信的默认引脚是电路板的引脚0(RXD)和引脚1(TXD),但我们将使用其他引脚进行串行通信。本文中,我们将在代码中使用SoftwareSerial库。


以下是指纹传感器和UNO开发板之间所需的连接:

connections between the fingerprint sensor and the UNO.jpg

然后将I2C LCD模块连接到UNO。连接如下:

connect the I2C LCD .jpg


然后,将继电器模块连接到Arduino UNO,如下面的电路图所示。

diagram .png

指纹门锁电路图。


为了控制门锁,你需要一个7到12V的电池 - 我使用了三节18650电池。


下载项目库

指纹传感器和I2C LCD的库很容易在网上下载到。


要安装Adafruit Fingerprint库,打开Arduino Library Manager并输入“fingerprint”,您将看到Adafruit Fingerprint库弹出。单击安装。

Library Manager.png

在Arduino Library Manager中键入“fingerprint”以找到正确的库。


您可以以相同的方式安装LiquidCrystal I2C库。搜索“LiquidCrystal I2C”,您将能够看到此库:

LiquidCrystal I2C.png

在Arduino Library Manager中输入“liquidcrystal I2C”以找到正确的库。


代码演练和解释

让我们看一下代码的各个部分以及它们在项目中的用途。为方便起见,在本文末尾处提供了完整代码。


软件串口库允许我们使用除默认0、1引脚之外的其他引脚进行串行通信。复制以下部分的代码并上传。

  1. #include <Adafruit_Fingerprint.h>
  2. #include <LiquidCrystal_I2C.h>
  3. #include <SPI.h>
  4. #include <SoftwareSerial.h>
  5. SoftwareSerial mySerial(2, 3);
复制代码

setup()函数中,设置指纹传感器工作的波特率。 然后,检查指纹传感器是否正在与Arduino通信。

  1. finger.begin(57600);

  2.   if (finger.verifyPassword()) {
  3.     lcd.setCursor(0, 0);
  4.     lcd.print("  FingerPrint ");
  5.     lcd.setCursor(0, 1);
  6.     lcd.print("Sensor Connected");
  7.   }
  8.   else  {
  9.     lcd.setCursor(0, 0);
  10.     lcd.print("Unable to found");
  11.     lcd.setCursor(0, 1);
  12.     lcd.print("Sensor");
  13.     delay(3000);
  14.     lcd.clear();
  15.     lcd.setCursor(0, 0);
  16.     lcd.print("Check Connections");

  17.     while (1) {
  18.       delay(1);
  19.     }
  20.   }
复制代码

现在我们需要设置你的实际指纹! 以下代码部分供用户将手指放在指纹扫描仪上,指纹扫描仪将指纹转换为图像。

  1. uint8_t p = finger.getImage();
  2.   if (p != FINGERPRINT_OK)  {
  3.     lcd.setCursor(0, 0);
  4.     lcd.print("  Waiting For");
  5.     lcd.setCursor(0, 1);
  6.     lcd.print("  Valid Finger");
  7.     return -1;
  8.   }

  9.   p = finger.image2Tz();
  10.   if (p != FINGERPRINT_OK)  {
  11.     lcd.clear();
  12.     lcd.setCursor(0, 0);
  13.     lcd.print("  Messy Image");
  14.     lcd.setCursor(0, 1);
  15.     lcd.print("  Try Again");
  16.     delay(3000);
  17.     lcd.clear();
  18.     return -1;
  19.   }
  20. p = finger.fingerFastSearch();
  21.   if (p != FINGERPRINT_OK)  {
  22.     lcd.clear();
  23.     lcd.setCursor(0, 0);
  24.     lcd.print("Not Valid Finger");
  25.     delay(3000);
  26.     lcd.clear();
  27.     return -1;
  28.   }
复制代码

如果图像比较模糊,它会要求再次扫描您的手指,以便获得一个良好的指纹图像,该图像将与系统中所有指纹的保存图像进行比较。 在匹配图像后,门将打开。 否则,门将保持关闭状态。

finger on the sensor .png

将手指放在传感器上,以便系统可以制作指纹图片。


一旦系统收到明确的指纹,您的门锁就可以使用了!


以下是本文使用的完整代码: Fingerprint_Sensor_door_Lock_ArduinoUNO.zip (1.67 KB, 下载次数: 519)


跳转到指定楼层
solo
发表于: 2019-4-3 19:03:16 | 显示全部楼层

楼主求救呀,代码有问题,微信在线等717949117急呀,求各位大神指导
回复

使用道具 举报

cyrs
发表于: 2019-5-14 13:52:04 | 显示全部楼层

适用那种指纹模块
回复

使用道具 举报

阿追no小白
发表于: 2019-6-16 18:13:19 | 显示全部楼层

您好,咱们用的指纹传感器的型号不一样我用的是AS608,代码有问题
回复

使用道具 举报

阿追no小白
发表于: 2019-6-17 17:00:25 | 显示全部楼层

solo 发表于 2019-4-3 19:03
楼主求救呀,代码有问题,微信在线等717949117急呀,求各位大神指导

请问哪里有问题啊
回复

使用道具 举报

excalibur
发表于: 2019-8-22 10:19:25 | 显示全部楼层

AS608的指纹传感器怎么修改代码啊,或者图中用的是什么型号的指纹传感器模块啊
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题 714 | 回复: 1501



手机版|

GMT+8, 2024-12-22 00:13 , Processed in 0.053437 second(s), 8 queries , Gzip On, MemCache On. Powered by Discuz! X3.5

YiBoard一板网 © 2015-2022 地址:河北省石家庄市长安区高营大街 ( 冀ICP备18020117号 )

快速回复 返回顶部 返回列表