首页 > 其他分享 >基于arduino+as608+360舵机的宿舍指纹锁

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

时间:2024-05-06 11:26:22浏览次数:24  
标签:delay 指纹锁 舵机 arduino pos LEDcontrol finger Serial as608

需要的制作材料

  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


#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);
}


完成图

一些注意点:

  1. 对于Arduino Uno,通常支持外部中断的引脚包括:引脚2:支持外部中断0(INT0)引脚3:支持外部中断1(INT1)
  2. 可以看一下这个博客:http://t.csdnimg.cn/GB29Q。里面有控制AS608不同颜色,以及检测手指才开灯的方法,(AS608的灯好像可以换颜色,但是我这个模块可能是坏了,换不了)

标签:delay,指纹锁,舵机,arduino,pos,LEDcontrol,finger,Serial,as608
From: https://www.cnblogs.com/zhudachang/p/18174640

相关文章

  • arduino uno+LCD12864(ST7735S)+蓝牙模块实现贪吃蛇
    1.前言:1.1本实验实现的贪吃蛇能穿越边界,结束游戏的唯一条件是贪吃蛇到达指定长度1.2本实验所用LCD可能不是LCD12864,LCD12864所用库为u8glib,笔者在词库中并没有找到型号为ST77355的初始化函数,而是在ucglib中找到,其方法为Ucglib_ST7735_18x128x160_SWSPIucg(/*sclk=*/13,/*data......
  • ESP32-C3-MINI arduino测试
    1、文件——首选项2、设置开发板管理器网址3、工具——开发板——开发板管理器4、输入ESP32选择EspressifSystems最新版本、安装5、等待下载。。。6、等待安装完成7、选择开发板:ESP32C3DevModule8、新建例程9、修改LED_BUILTIN10、为IO标号数字11、连接最......
  • ESP32 Arduino开发 MQTT
    ESP32Arduino开发MQTT目录ESP32Arduino开发MQTT1.安装程序库2.编写相关程序2.1.引入头文件2.2.定义MQTT相关参数2.3.创建对象2.4.连接网络2.5.连接MQTT服务器2.6.MQTT回调函数3.完整的代码例程4.MQTT连接测试1.安装程序库打开库管理工具工具->管理库.........
  • 基于Arduino的RFID智能门禁
    引言RFID(无线射频识别)技术作为现代物联网的重要组成部分,已经广泛应用于门禁、支付、物流等众多领域。本文将带领大家使用Arduino开发板和RFID读写模块,实现RFID卡片的刷卡识别功能。百度网盘链接经过优化后的代码,删掉了没用的那些代码,并且将代码整合到了一个文件中。链接......
  • 基于LabVIEW上位机与Arduino单片机串口通信的DS18B20环境温度采集
    基于LabVIEW上位机与Arduino单片机串口通信的DS18B20环境温度采集Arduino代码#include<OneWire.h>#include<DallasTemperature.h>#defineONE_WIRE_BUS2//DS18B20接至Arduino数字口2OneWireoneWire(ONE_WIRE_BUS);DallasTemperaturesensors(&oneWire);byteco......
  • Arduino IDE 环境配置
    ArduinoIDE环境配置目录ArduinoIDE环境配置1.安装方式2.操作方法(Arduino中文社区)2.1.安装ArduinoIDE2.2.下载固件2.3.修改ArduinoIDE语言2.4.添加开发板管理网址2.5.运行离线包2.6.检查安装是否成功1.安装方式github下载:这种方式可以获取到相关固件,但是如果想......
  • arduino固件烧录
    NodeMCU入坑指南-烧写固件并连接WIFI-0pen1-博客园(cnblogs.com)在这里要说一下,我们现在要烧写不带DEBUG的固件,如果烧写了带DEBUG的固件可能会出现这个问题:nodeMCU无限打印wifieventmonitorhandleeventcbiscalled烧录不开启debug的烧录开启Debug的固件就正常......
  • Arduino RP2040 + SSD1306 I2C OLED +LittleFS存储GBK字库实现中文显示
    ArduinoRP2040+SSD1306I2COLED+LittleFS存储GBK字库实现中文显示......
  • arduino uno R3驱动直流减速电机(蓝牙控制)
    此篇博客用于记录使用arduino驱动直流减速电机的过程,仅实现简单的功能:PID调速、蓝牙控制1、直流减速电机简介2、DRV8833电机驱动模块简介3、HC-05蓝牙模块简介电机转动测试4、PID控制5、蓝牙控制电机1、直流减速电机简介我在淘宝购买的电机,减速比是21.3,旋转一圈产生......
  • 基于arduino IDE 部署ESP32 ESP8266开发环境
    本文涉及技术:arduinoIDE环境,windows10系统软件,开发环境配置,单片机新手入门;关于arduino程序学习与相关教程,可以前往Arduino中文社区Arduino教程汇总贴arduino1.8.9arduinoIDE是一个很棒的集成开发环境,自带有开发版环境管理,函数库管理,一键编译、下载;串口调试的功能,代码格......