相信很多小伙伴都想制作一个属于自己的指纹锁吧,看完这一篇博文就够了
为了解决经常忘带钥匙的烦恼,这是我大一时候在宿舍安装的指纹锁,经过一年多的应用还是比较稳定的,很早就想分享给大家了,一直拖到现在才有时间发出来,这篇博文花了不少时间,希望对大家有帮助吧,点赞收藏哦
如果想要Arduino uno版本的可以在评论区留言也可以私信。
(一)材料准备
主要材料:
Arduino MEGA 2560或Arduino uno
AS608指纹模块+TTL转接口
MG996R舵机
其它材料:
杜邦线若干
热熔胶或强力胶水
电工胶带
细小的线
5V充电头
插座
(二)库文件、软件下载
百度云盘链接接:
链接: https://pan.baidu.com/s/1jjWowpKAaRmoE8uQVBvlPg 提取码: cv33
(三)指纹的录入
指纹与TTL转接口接线:
指纹模块————TTL转接口
TX————RX
RX————TX
GND————GND
VI————3.3V
用软件录入指纹
打开网盘下载的软件
如果不知道串口是多少的可以在下图那里找到,就不详细说明了
设定好波特率
录入指纹
(四)模块间的连线
Arduino MEGA 2560与指纹模块和舵机的连线
Arduino MEGA 2560————舵机
5V————正极
GND————负极
9————信号线
Arduino MEGA 2560————指纹模块
TX3————RX
RX3————TX
GND————GND
VI————3.3V
(五)代码实现
完整代码:
#include <Servo.h>
Servo myservo;
int pos = 0;
#include <Adafruit_Fingerprint.h>
Adafruit_Fingerprint finger = Adafruit_Fingerprint(&Serial3);
void setup()
{
myservo.attach(9); // attaches the servo on pin 9 to the servo object
Serial.begin(9600);
Serial3.begin(9600);
while (!Serial);
delay(100);
Serial.println("\n\nAdafruit finger detect test");
finger.begin(57600);
delay(5);
if (finger.verifyPassword())
{
Serial.println("Found fingerprint sensor!");
}
else
{
Serial.println("Did not find fingerprint sensor :(");
while (1) { delay(1); }
}
finger.getTemplateCount();
if (finger.templateCount == 0)
{
Serial.print("Sensor doesn't contain any fingerprint data. Please run the 'enroll' example.");
}
else
{
Serial.println("Waiting for valid finger...");
Serial.print("Sensor contains "); Serial.print(finger.templateCount); Serial.println(" templates");
}
}
void loop()
{
getFingerprintIDez();
delay(50);
}
// 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);
// Servo_Control();
pos=0;
myservo.write(pos);
delay(3000);
pos=90;
myservo.write(pos);
delay(3000);
return finger.fingerID;
}
下面这段代码是舵机的角度可自行按照自己实际情况填写
// Servo_Control();
pos=0;
myservo.write(pos);
delay(3000);
pos=90;
myservo.write(pos);
delay(3000);
(六)硬件安装
门里面和舵机和锁的连接
整体放的位置和供电方式
门外指纹模块放的位置
(七)视频演示
b站视频链接:
https://www.bilibili.com/video/BV1LL411n77u/
有任何问题可以在评论区指出,你们的支持是我最大的动力,点个赞支持一下吧,后续持续更新。。。