如今,大多数汽车都配备了无钥匙进入和按钮点火系统,在该系统中,您只需要将钥匙放在口袋中,并且只需将手指放在门把手上的电容式传感器上即可打开车门。在此项目中,我们将使用RFID和指纹传感器向该系统添加更多安全功能。RFID传感器将验证用户的执照,而指纹传感器将仅允许授权人员进入车辆。
对于此基于指纹的汽车点火系统,我们将Arduino与R305指纹传感器和EM18 RFID阅读器配合使用。
所用材料
- Arduino纳米
- R305指纹感应器
- EM18 RFID阅读器
- 16 * 2字母数字LCD
- 直流电动机
- L293D电机驱动器IC
- Veroboard或面包板(可用)
- 连接线
- 12V DC电池
EM18 RFID阅读器模块
RFID代表射频识别。它是指一种技术,其中数字数据被编码在RFID标签中,并且可以由RFID阅读器使用无线电波将其解码。RFID与条形码相似,其中标签的数据由设备解码。RFID技术可用于各种应用,例如安全系统,员工考勤系统,RFID门锁,基于RFID的投票机,收费系统等。
EM18 Reader是一个模块,可以读取存储在RFID标签中的ID信息。RFID标签存储一个12位数的唯一编号,当标签位于阅读器的范围内时,EM18读取器模块可以将其解码。该模块的工作频率为125 kHz,具有内置天线,并使用5伏直流电源供电。
它提供串行数据输出,范围为8-12厘米。串行通信参数为8个数据位,1个停止位和9600波特率。
EM18特性:
- 工作电压:+ 4.5V至+ 5.5V直流
- 消耗电流:50mA
- 工作频率:125KHZ
- 工作温度:0-80摄氏度
- 通讯波特率:9600
- 阅读距离:8-12厘米
- 天线:内置
EM18引脚排列:
引脚说明:
VCC:4.5-5V DC电压输入
GND:接地引脚
蜂鸣器:蜂鸣器或LED引脚
TX:EM18的串行数据发送器引脚,用于RS232(输出)
SEL:使用RS232时必须为高(使用WEIGAND时应为低)
资料0:WEIGAND资料0
数据1:WEIGAND数据1
要了解有关RFID和标签的更多信息,请查看我们以前基于RFID的项目。
使用Arduino找出RFID标签唯一的12位代码
在为Arduino汽车点火系统编程Arduino之前,首先,我们需要找出12位RFID标签的唯一代码。正如我们之前讨论的那样,RFID标签包含12位唯一代码,可以使用RFID阅读器对其进行解码。当我们在阅读器附近滑动RFID标签时,阅读器将通过输出串行端口提供唯一代码。首先,按照电路图将Arduino连接到RFID阅读器,然后将下面给出的代码上传到Arduino。
int count = 0; char card_no; void setup(){Serial.begin(9600); } void loop(){if(Serial.available()){count = 0; while(Serial.available()&& count <12){card_no = Serial.read(); 数++; delay(5); } Serial.print(card_no); }}
成功上传代码后,打开串行监视器,并将波特率设置为9600。然后在读卡器附近刷卡。然后,12位代码将开始在串行监视器上显示。对所有使用过的RFID标签执行此过程,并记下来以备将来参考。
电路原理图
该基于指纹的点火系统的电路图如下:
就我而言,我已将整个电路焊接到如下所示的性能板上:
指纹传感器模块
指纹传感器模块或指纹扫描仪 是一个模块,可捕获手指的打印图像,然后将其转换为等效模板,并通过Arduino将其保存到选定ID(位置)的内存中。在这里,所有过程都是由Arduino命令的,例如拍摄指纹图像,将其转换为模板以及存储位置等。
我们以前使用相同的R305传感器来构建投票机,考勤系统,安全系统等。您可以在此处检查所有基于指纹的项目。
将指纹注册到传感器:
在继续该程序之前,我们需要安装指纹传感器所需的库。在这里,我们使用“ Adafruit_Fingerprint.h ”来使用R305指纹传感器。因此,首先使用下面给出的链接下载该库:
- Adafruit指纹传感器库
成功下载后,在Arduino IDE中,转到 文件 >工具>包含库>添加.zip库 ,然后选择zip文件位置以安装该库。
成功安装磁带库后,请按照以下步骤在传感器内存中注册新指纹。
1.在Arduino IDE中,转到文件>示例> Adafruit 指纹 传感器 库>注册。
2.将代码上传到Arduino,然后以9600的波特率打开串行监视器。
重要说明:将程序中的软件串行引脚更改为SoftwareSerial mySerial(12,11)。
3.您应该输入要在其中存储指纹的指纹的ID。因为这是我的第一个指纹,所以我在左上角键入1,然后单击“发送”按钮。
4.然后指纹传感器上的指示灯将闪烁,表明您应该将手指放在传感器上,然后按照串行监视器上显示的步骤进行操作,直到确认您已成功注册为止。
RFID无钥匙点火编程
本教程末尾提供了此生物特征点火系统的完整代码。在这里,我们解释了代码的一些重要部分。
首先是要包含所有必需的库。就我而言,这里包括用于使用R305指纹传感器的“ Adafruit_Fingerprint.h ”。然后配置将要连接指纹传感器的串行端口。就我而言,我已将12声明为RX引脚,将11声明为TX引脚。
#include #include
在下一步中,声明所有变量,这些变量将在整个代码中使用。然后使用Arduino定义LCD连接引脚,然后声明 LiquidCrystal 类的对象。
字符输入; int count = 0; 整数a = 0; const int rs = 6,en = 7,d4 = 2,d5 = 3,d6 = 4,d7 = 5; LiquidCrystal LCD(rs,en,d4,d5,d6,d7);
接下来,在 loop() 内部 , 编写代码以获取RFID标签的唯一12位代码,并将它们存储在数组中。此处,数组的元素将与存储器中存储的唯一代码匹配,以获取经过身份验证的人员详细信息。
计数= 0; while(Serial.available()&& count <12) { 输入= Serial.read(); 数++; delay(5); }
然后,将接收到的数组与存储的标签代码进行比较。如果代码匹配,则许可证被认为是有效的,这允许用户放置有效的指纹。否则,它将显示无效的许可证。
if((strncmp(input,“ 3F009590566C”,12)== 0)&&(a == 0)) { lcd.setCursor(0,0); lcd.print(“有效许可证”); lcd.setCursor(0,1); lcd.print(“ Welcome”); 延迟(1000); a = 1; 指纹(); }
在下一步中,将编写函数 getFingerprintID ,该函数 将为 已注册的指纹返回有效的指纹ID。
int getFingerprintID() { uint8_t p = finger.getImage(); 如果(p!= FINGERPRINT_OK)返回-1; p = finger.image2Tz(); 如果(p!= FINGERPRINT_OK)返回-1; p = finger.fingerFastSearch(); 如果(p!= FINGERPRINT_OK)返回-1; 返回finger.fingerID; }
在成功的RFID匹配之后调用的内部函数 Fingerprint()中 ,调用 getFingerprintID 函数以获取有效的指纹ID。然后使用 if-else循环 进行比较,以获取有关经过身份验证的人员数据的信息,如果数据匹配,则将车辆点火,否则将提示输入错误的指纹。
int FingerprintID = getFingerprintID(); 延迟(50); 如果(fingerprintID == 1) { lcd.setCursor(0,0); lcd.print(“ Access Granted”); lcd.setCursor(0,1); lcd.print(“ Vehicle Started”); digitalWrite(9,HIGH); digitalWrite(10,LOW); while(1); }
因此,这就是RFID汽车点火系统的工作方式,为您的汽车增加了两层安全性。
完整的代码和演示视频如下。