指纹传感器生物识别门锁
应用介绍
此项目是基于IoT的指纹传感器生物识别门锁。
在这里,我们使用GT5111C3指纹传感器,NodeMCU和电磁锁构建基于IoT的生物特征安全系统。
指纹扫描仪传感器已在许多地方使用,例如工业,办公室,学校,学院和酒店。 通过将IoT与指纹传感器一起嵌入,我们可以将基于指纹的安全系统项目提升到一个新的水平。因此,在本项目中,我们将使用GT5111C3指纹传感器,NodeMCU和电磁锁来构建基于IoT的生物特征安全系统。 当未经授权的人扫描指纹传感器上的手指时,Adafruit IO用于在线保存条目详细信息,而IFTTT用于发送电子邮件通知。
所需组件:
NodeMCU ESP8266
GT511C3指纹传感器
电磁锁
继电器模块
蜂鸣器
12V适配器
跳线
电路板
GT511C3指纹传感器模块:
GT-511C3指纹扫描仪传感器模块由安装在小电路板上的光学传感器组成。 光学传感器扫描指纹,与EEPROM耦合的ARM微控制器处理扫描的指纹。 GT-511C3模块可以存储200个指纹。 每个指纹都保存有不同的ID。 GT-511C3的工作电压为3.3V至6V。
电磁锁
电磁锁在电子机械锁机构上工作。 该螺线管锁带有一个带有倾斜切口的嵌条和一个良好的安装支架。 在正常情况下,弹头会留在支架外面,但是当施加直流电压时,弹头会在支架内移动。 电磁锁的理想工作电压为12V。 它可以在9V电压下使用,但会导致运行速度变慢。
物联网生物计量安全系统电路图:
基于物联网的生物特征安全系统的电路包括一个NodeMCU,GT511C3指纹传感器,电磁锁,中继模块和蜂鸣器。 指纹传感器的VCC和GND引脚连接到NodeMCU的3.3V和GND引脚,而TX和RX引脚连接到NodeMCU的D6和D5引脚。 蜂鸣器的正极连接到NodeMCU的D2引脚,负极连接到NodeMCU的GND。 电磁锁通过继电器模块连接到NodeMCU。 NodeMCU和电磁锁均由12V适配器供电。
如何注册指纹:
在为基于指纹的安全系统对NodeMCU进行编程之前,我们首先必须将指纹注册到GT511C3指纹传感器中。
之后,重新启动IDE,然后转到“文件”>“示例”>“指纹扫描仪TTL”>“ FPS_Enroll”
将FPS_Enroll程序上载到您的NodeMCU。
代码和硬件准备就绪后,我们可以检查一切是否正常。 将代码上传到NodeMCU并将其连接到适配器。 现在,等待Wi-Fi连接。 一旦NodeMCU连接到Wi-Fi,请在指纹传感器上扫描手指。 如果手指已注册,它将发出哔哔声打开锁,并将带有该人姓名的消息发送给Adafruit IO。 如果手指没有被注册,它将向未经授权的人试图输入的电子邮件地址发送电子邮件。
本人在下方展示了基于物联网的生物识别安全系统的完整代码:
#include "FPS_GT511C3.h"
#include "SoftwareSerial.h"
#include <ESP8266WiFi.h>
#include "Adafruit_MQTT.h"
#include "Adafruit_MQTT_Client.h"
const char *ssid = "Galaxy-M20"; // Enter your WiFi Name
const char *pass = "ac312124"; // Enter your WiFi Password
String msg;
char msg1[20];
WiFiClient client;
#define MQTT_SERV "io.adafruit.com"
#define MQTT_PORT 1883
#define MQTT_NAME "choudharyas"
#define MQTT_PASS "988c4e045ef64c1b9bc8b5bb7ef5f2d9"
void send_event(const char *event);
const char *host = "maker.ifttt.com";
const char *privateKey = "hUAAAz0AVvc6-NW1UmqWXXv6VQWmpiGFxx3sV5rnaM9";
FPS_GT511C3 fps(D6, D5);
#define relay D1
#define buzzer D2
Adafruit_MQTT_Client mqtt(&client, MQTT_SERV, MQTT_PORT, MQTT_NAME, MQTT_PASS);
//Set up the feed you'r publishing to
Adafruit_MQTT_Publish Fingerprint = Adafruit_MQTT_Publish(&mqtt,MQTT_NAME "/f/Fingerprint");
void setup()
{
Serial.begin(9600); //set up Arduino's hardware serial UART
delay(100);
fps.Open(); //send serial command to initialize fps
fps.SetLED(true); //turn on LED so fps can see fingerprint
pinMode(relay, OUTPUT);
pinMode(buzzer, OUTPUT);
digitalWrite(relay, LOW); // keep motor off initally
Serial.println("Connecting to ");
Serial.println(ssid);
WiFi.begin(ssid, pass);
while (WiFi.status() != WL_CONNECTED)
{
delay(500);
Serial.print("."); // print ... till not connected
}
Serial.println("");
Serial.println("WiFi connected");
}
void loop()
{
MQTT_connect();
// Identify fingerprint test
if (fps.IsPressFinger())
{
fps.CaptureFinger(false);
int id = fps.Identify1_N();
if (id ==7) //<- change id value depending model you are using
{
Serial.print("Ashish Entered");
Buzzer();
digitalWrite(relay, HIGH);
delay(6000);
digitalWrite(relay, LOW);
msg = "Ashish Entered";
msg.toCharArray(msg1, 20);
if (! Fingerprint.publish(msg1))
{
//delay(7000);
}
}
else if (id ==8)
{
Serial.print("Manoj Entered");
Buzzer();
digitalWrite(relay, HIGH);
delay(6000);
digitalWrite(relay, LOW);
msg = "Manoj Entered";
msg.toCharArray(msg1, 20);
if (! Fingerprint.publish(msg1))
{
//delay(7000);
}
}
else if (id ==9)
{
Serial.print("Aswinth Entered");
Buzzer();
digitalWrite(relay, HIGH);
delay(6000);
digitalWrite(relay, LOW);
msg = "Aswinth Entered";
msg.toCharArray(msg1, 20);
if (! Fingerprint.publish(msg1))
{
//delay(7000);
}
}
else
{//if unable to recognize
send_event("login_event");
Serial.println("Finger not found");
for(int i = 7; i > 0; i--){
digitalWrite(buzzer, HIGH);
delay(100);
digitalWrite(buzzer, LOW);
delay(100);
}
}
}
else
{
Serial.println("Please press finger");
}
delay(100);
}
void send_event(const char *event)
{
Serial.print("Connecting to ");
Serial.println(host);
// Use WiFiClient class to create TCP connections
WiFiClient client;
const int httpPort = 80;
if (!client.connect(host, httpPort)) {
Serial.println("Connection failed");
return;
}
// We now create a URI for the request
String url = "/trigger/";
url += event;
url += "/with/key/";
url += privateKey;
Serial.print("Requesting URL: ");
Serial.println(url);
// This will send the request to the server
client.print(String("GET ") + url + " HTTP/1.1\r\n" +
"Host: " + host + "\r\n" +
"Connection: close\r\n\r\n");
while(client.connected())
{
if(client.available())
{
String line = client.readStringUntil('\r');
Serial.print(line);
} else {
// No data yet, wait a bit
delay(50);
};
}
Serial.println();
Serial.println("closing connection");
client.stop();
}
void MQTT_connect()
{
int8_t ret;
// Stop if already connected.
if (mqtt.connected())
{
return;
}
uint8_t retries = 3;
while ((ret = mqtt.connect()) != 0) // connect will return 0 for connected
{
mqtt.disconnect();
delay(5000); // wait 5 seconds
retries--;
if (retries == 0)
{
// basically die and wait for WDT to reset me
while (1);
}
}
}
void Buzzer()
{
digitalWrite(buzzer, HIGH);
delay(1000);
digitalWrite(buzzer, LOW);
}
©版权声明:本文内容由互联网用户自发贡献,版权归原创作者所有,本站不拥有所有权,也不承担相关法律责任。如果您发现本站中有涉嫌抄袭的内容,欢迎发送邮件至: www_apollocode_net@163.com 进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。
转载请注明出处: apollocode » 指纹传感器生物识别门锁
文件列表(部分)
名称 | 大小 | 修改日期 |
---|---|---|
基于IoT的指纹传感器生物识别门锁(附件).txt | 1.79 KB | 2020-04-09 |
微信图片_20200409133127.png | 174.54 KB | 2020-04-09 |
微信图片_20200409134941.png | 540.74 KB | 2020-04-09 |
微信图片_20200409135736.png | 226.83 KB | 2020-04-09 |
微信图片_20200409135920.png | 136.63 KB | 2020-04-09 |
image | 0.00 KB | 2020-04-09 |
发表评论 取消回复