基于arduino+as608+360舵机的宿舍指纹锁

news/2024/10/8 20:31:33

需要的制作材料

  1. Arduino nano开发板
  2. AS608指纹模块
  3. MG995 360舵机(360舵机的控制与180舵机控制不相同,360舵机只可以控制旋转的速度,180舵机可以控制旋转的角度)
  4. 面包板,电线若干

准备部分

参考了大佬的代码http://t.csdnimg.cn/GB29Q

  1. arduino模块可以看b站视频,,零基础(c语言零基础也可以看)
    【【太极创客】零基础入门学用Arduino 第一部分 合辑】https://www.bilibili.com/video/BV164411J7GE?vd_source=7183d94355e25d7a846a2242f0eb9c7d
  2. AS608指纹模块
  • 可以使用一个上位机软件进行操作的。

  • 使用usb转ttl,把AS608连接上电脑

  • 通过上位机录入指纹。

  1. 舵机
  • 宿舍门是金属材质,热熔胶可能粘不上去,这里建议可以使用ab胶水

代码部分

该代码功能是

  1. 检测到手指,wak变为高电平,然后触发中断,离开睡眠模式
  2. 判断wak是否为高电平,如果是那么就开始判断是否为正确的指纹
  3. 如果为正确的指纹,就驱动舵机开锁
  4. 结束后关闭as608灯,并且重新进入睡眠模式
引脚接线
arduino  AS608
3.3V     vi
4        tx
3        rx
gnd      GND
3.3V     vt
2       wak舵机接线使用9号引脚
//需要在arduino库管理中添加库Adafruit_Fingerprint```cpp
#include <Servo.h>
#include <avr/sleep.h>
#include <Adafruit_Fingerprint.h>Servo myservo;
SoftwareSerial mySerial(4,3);
int pos=0;
Adafruit_Fingerprint finger = Adafruit_Fingerprint(&mySerial);
int as608read=2;
void wakeUp() {// 这个函数将在外部中断触发时调用,但可以保持空白sleep_disable();}void setup() {myservo.attach(9);Serial.begin(9600);finger.begin(57600);if (finger.verifyPassword()) {Serial.println("Found fingerprint sensor!");} else {Serial.println("Did not find fingerprint sensor :(");while (1) { delay(1); }}pinMode(as608read,INPUT);finger.LEDcontrol(false);attachInterrupt(digitalPinToInterrupt(as608read), wakeUp, CHANGE);set_sleep_mode(SLEEP_MODE_PWR_DOWN);  // 设置最深的睡眠模式sleep_enable();  // 启用睡眠模式
}void loop() {sleep_mode();  // 进入睡眠模式,等待中断唤醒if(digitalRead(as608read)==HIGH){finger.LEDcontrol(true);getFingerprintIDez();delay(500);finger.LEDcontrol(false);}  delay(100); }int getFingerprintIDez() {uint8_t p = finger.getImage();if (p != FINGERPRINT_OK){finger.LEDcontrol(0x02,0,0x01,0);return -1;}p = finger.image2Tz();if (p != FINGERPRINT_OK){finger.LEDcontrol(0x02,0,0x01,0);return -1;}p = finger.fingerFastSearch();if (p != FINGERPRINT_OK){finger.LEDcontrol(0x02,0,0x01,0);return -1;}finger.LEDcontrol(0x02,0,0x02,0);opendoor();Serial.print("Found ID #"); Serial.print(finger.fingerID); Serial.print(" with confidence of "); Serial.println(finger.confidence);return finger.fingerID;
}void opendoor(){pos=0;myservo.write(pos);delay(2000);pos=112;myservo.write(pos);delay(600);pos=90;myservo.write(pos);delay(400);
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.ryyt.cn/news/28056.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈,一经查实,立即删除!

相关文章

每台服务器都有错包增长,线路问题?交换机问题? 机房里面有鬼?

服务器网卡 RX 方向errors包一直在增长,换模块换尾纤都不好使, 眼看业务上线要延期 客户精神要崩溃,运维心想要遭罪 一、问题现象 服务器侧的运维人员在服务器上使用 ifconfig 命令发现每台服务网卡上都有错包,且一直在不停增长通过图片可以看到网卡RX 方向有大量的 errors…

c#中Debug和Release的区别实验

一、Release版本相比Debug版本的性能提升很大Debug模式在编译时不对源代码进行优化,而Release模式进行了大胆的优化,使得程序在代码大小和运行速度上都有显著提高,下面通过一个对10000条数据进行冒泡排序的例子来比较它们二者的性能差距:来源:https://blog.csdn.net/u010476…

实验3——软件测试

一、实验题目 :软件测试 二、实验目的 1、熟悉开发环境下的自动化测试工具; 1、利用自动化测试工具进行自动化单元测试。 三、实验内容 1、选择开发环境,IDEA或PYCHARM任选其一; 2、基于所选择的开发环境实现对输入的n个整数进行排序的代码; 3、对所编写代码设计测试用例…

linux27-环境变量

linux27-环境变量环境变量的作用$号的作用linux中配置环境变量环境变量 一系列命令本质上就是一些可执行命令, 用which命令查看cd时, cd命令的本体就是/usr/bin/cd这个程序文件 无论当前工作目录在什么位置, cd命令都是可执行的. 这是环境变量的作用 环境变量: 操作系统在运行的…

linux24-网络传输 | 端口 namp netstat

linux24-网络传输 | 端口 namp netstat端口nmap 查看指定IP对外暴露的端口netstat 查看指定端口的占用情况端口 设备与外界通讯交流的出入口, 端口可分为物理端口和虚拟端口物理端口: 又称接口, 是可见的端口, 如USB接口, RJ45网口, HDMI端口等虚拟端口: 是指计算机内部的端口,…

算法学习笔记(15): Splay树

Splay树 Splay树又名伸展树, 是tarjan为LCT而发明的平衡树, 通过旋转操作维护二叉搜索树的高度平衡。 均摊复杂度 \(O(logb)\), 可以区间操作, 不能可持久化, 常数较大(大于FHQtreap), 但是可以 \(O(nlogn)\) 实现 LCT。(这是唯一比FHQtreap优秀的店...) 算法 splay树…

JuiceFS v1.2-beta1,Gateway 升级,多用户场景权限管理更灵活

JuiceFS v1.2-beta1 今天正式发布。在这个版本中,除了进行了大量使用体验优化和 bug 修复外,新增三个特性:Gateway 功能扩展:新增了“身份和访问管理(Identity and Access Management,IAM)” 与 “事件通知” ,为用户提供更安全、灵活和自动化的数据管理和监控能力,适…

DP32RF002—低功耗SUB-1G收发一体SOC芯片

DP32RF002是基于ARM Cortex-M0+内核的超低功耗、高性能的、单片集成(G)FSK/OOK无线收发机的32位SoC芯片。工作于200~960MHz范围内,支持灵活可设的数据包格式,支持自动应答和自动重发功能,支持跳频操作,支持FEC功能,同时内部集成了完整的射频接收机、射频发射机、频率综合器…