2019-6-14 11:14:15 [显示全部楼层]
8074浏览
查看: 8074|回复: 9

[项目] 用电磁锁做一个指纹锁

[复制链接]
本帖最后由 hnyzcj 于 2019-6-14 17:10 编辑

          入手DF商城的指纹传感器和阿里套件的电磁锁有段时间了,一直没有动过,所以这次把这两样东西放在一起玩玩!
【展示视频】

【展示效果】
用电磁锁做一个指纹锁图2
用电磁锁做一个指纹锁图1
用电磁锁做一个指纹锁图3
【作品器材】                    
                             
          DFRduino UNO R3                   1
          IO 传感器扩展板 V7.1                1
          指纹识别传感器                         1
          电磁锁                                       1
          数字继电器模块                         1
          I2C LCD1602液晶模块(兼容Arduino Gadgeteer)     1
          M3*30扁头内六角螺丝 10套      1
【制作过程】

         1.3D建模盒子结构件
用电磁锁做一个指纹锁图4
用电磁锁做一个指纹锁图5
3D打印模型
用电磁锁做一个指纹锁图7
用电磁锁做一个指纹锁图6
3D打印盒子结构件
用电磁锁做一个指纹锁图12
用电磁锁做一个指纹锁图13
3D打印盒子盖

3D打印盒子
(新模型盒盖和盖轴是连在一起的)


器材安装
用电磁锁做一个指纹锁图8
拿出电磁锁和三根M3的螺丝
用电磁锁做一个指纹锁图9
将电磁锁安装盒壁的侧面
用电磁锁做一个指纹锁图10

用电磁锁做一个指纹锁图17

拿出指纹传感器从盒子内部由里到外穿出指纹传感器,使其卡在指纹传感器的卡缝处。用热熔胶枪从盒子内部打胶固定指纹传感器。

用电磁锁做一个指纹锁图15
用AB胶水固定在盖板上,用30mm的m3螺丝固定转轴。
用电磁锁做一个指纹锁图11
再将LCD屏固定在对应的孔位上。

把主控器等电子元器件放入盒子内部。



电路连线图:
用电磁锁做一个指纹锁图20

代码编写:
[mw_shl_code=cpp,true]
#include <Arduino.h>
#include <SoftwareSerial.h>
#include <Wire.h>
#include <LiquidCrystal_I2C.h>

LiquidCrystal_I2C lcd(0x20,16,2);  // set the LCD address to 0x20 for a 16 chars and 2 line display

#include <Adafruit_Fingerprint.h>

SoftwareSerial mySerial(2, 3);

Adafruit_Fingerprint finger = Adafruit_Fingerprint(&mySerial);



void setup()  
{ lcd.init();                      // initialize the lcd
  lcd.home();
  lcd.print("door use finger");
  lcd.setCursor(0, 1);
  lcd.print("nsfzsz_cj");
  Serial.begin(9600);

  while (!Serial);  // For Yun/Leo/Micro/Zero/
  delay(100);
  Serial.println("\n\nAdafruit finger detect test");

  // set the data rate for the sensor serial port
  finger.begin(57600);
  pinMode(4, OUTPUT);
  pinMode(6, INPUT_PULLUP);         //Set Pin6 as output
  if (finger.verifyPassword()) {
    Serial.println("Found fingerprint sensor!");
  }
  else {
    Serial.println("Did not find fingerprint sensor :(");
    while (1) { delay(1); }
  }

  finger.getTemplateCount();
  Serial.print("Sensor contains "); Serial.print(finger.templateCount); Serial.println(" templates");
  Serial.println("Waiting for valid finger...");

}

uint8_t readnumber(void) {
  uint8_t num = 0;
  
  while (num == 0) {
    while (! Serial.available());
    num = Serial.parseInt();
  }
  return num;
}
void loop()                     // run over and over again
{
  getFingerprintIDez();
   delay(50);            //don't ned to run this at full speed.
   //lcd.print("read your finger");
  
  
}

uint8_t getFingerprintID() {
  uint8_t p = finger.getImage();
  switch (p) {
    case FINGERPRINT_OK:
      Serial.println("Image taken");
      break;
    case FINGERPRINT_NOFINGER:
      Serial.println("No finger detected");
      return p;
    case FINGERPRINT_PACKETRECIEVEERR:
      Serial.println("Communication error");
      return p;
    case FINGERPRINT_IMAGEFAIL:
      Serial.println("Imaging error");
      return p;
    default:
      Serial.println("Unknown error");
      return p;
  }

  // OK success!

  p = finger.image2Tz();
  switch (p) {
    case FINGERPRINT_OK:
      Serial.println("Image converted");
      break;
    case FINGERPRINT_IMAGEMESS:
      Serial.println("Image too messy");
      return p;
    case FINGERPRINT_PACKETRECIEVEERR:
      Serial.println("Communication error");
      return p;
    case FINGERPRINT_FEATUREFAIL:
      Serial.println("Could not find fingerprint features");
      return p;
    case FINGERPRINT_INVALIDIMAGE:
      Serial.println("Could not find fingerprint features");
      return p;
    default:
      Serial.println("Unknown error");
      return p;
  }
  
  // OK converted!
  p = finger.fingerFastSearch();
  if (p == FINGERPRINT_OK) {
  
    Serial.println("Found a print match!");
  } else if (p == FINGERPRINT_PACKETRECIEVEERR) {
   // digitalWrite(12,LOW);
    Serial.println("Communication error");
    return p;
  } else if (p == FINGERPRINT_NOTFOUND) {
    //digitalWrite(12,LOW);
    Serial.println("Did not find a match");
    return p;
  } else {
    //digitalWrite(12,LOW);
    Serial.println("Unknown error");
    return p;
  }   
  
  // found a match!
// digitalWrite(12,HIGH);
  Serial.print("Found ID #"); Serial.print(finger.fingerID);
  Serial.print(" with confidence of "); Serial.println(finger.confidence);
  return finger.fingerID;
}

// returns -1 if failed, otherwise returns ID #
int getFingerprintIDez() {
  uint8_t p = finger.getImage();
  if (p != FINGERPRINT_OK)  return -1;
  lcd.clear();
  lcd.print("you no master");
  p = finger.image2Tz();
  if (p != FINGERPRINT_OK) return -1;
  lcd.clear();
  lcd.print("you no master");
  p = finger.fingerFastSearch();
  if (p != FINGERPRINT_OK)  return -1;
  
// found a match!

  lcd.clear();
  lcd.print("Found ID #");
  lcd.print(finger.fingerID);
  lcd.setCursor(0, 1);
  lcd.print("come in master");
  //lcd.print(finger.confidence);
  digitalWrite(4,HIGH);
  delay(5000);
  digitalWrite(4,LOW);
  lcd.clear();
  //Serial.print("Found ID #");
// Serial.print(finger.fingerID);
  //Serial.print(" with confidence of "); Serial.println(finger.confidence);
  return finger.fingerID;
  }[/mw_shl_code]

测试效果:
整体效果用电磁锁做一个指纹锁图16
用电磁锁做一个指纹锁图14
上电效果,输入指纹开门
用电磁锁做一个指纹锁图18
输入错误的指纹
用电磁锁做一个指纹锁图19
输入正确的指纹信息






ASH腻  管理员

发表于 2019-6-14 15:18:46

精华都给你了 我来催更了
回复

使用道具 举报

hnyzcj  版主
 楼主|

发表于 2019-6-14 15:54:47

ASH腻 发表于 2019-6-14 15:18
精华都给你了 我来催更了

收到老板
回复

使用道具 举报

dsweiliang  初级技神

发表于 2019-6-19 09:38:01

有没有办法让指纹模块自动休眠了,一直亮着灯晚上很亮
回复

使用道具 举报

gada888  版主

发表于 2019-6-20 07:15:40

you are a master
回复

使用道具 举报

xfNDcOnf  见习技师

发表于 2019-6-27 17:38:02

dsweiliang 发表于 2019-6-19 09:38
有没有办法让指纹模块自动休眠了,一直亮着灯晚上很亮

模块有一个触摸电压
回复

使用道具 举报

gray6666  初级技神

发表于 2019-7-3 17:03:23

指纹模块好贵。。。
回复

使用道具 举报

DFr15BEux-H  见习技师 来自手机

发表于 2019-7-8 16:09:24

gada888 发表于 2019-6-20 07:15
you are a master

学习中,希望自己能成功做出一个来!谢谢分享!
回复

使用道具 举报

韩俊  见习技师

发表于 2019-8-1 13:24:48

学习中
回复

使用道具 举报

指纹解锁  学徒

发表于 2019-11-22 23:20:22

dsweiliang 发表于 2019-6-19 09:38
有没有办法让指纹模块自动休眠了,一直亮着灯晚上很亮

加一个按钮。或者通过指纹模块感应信号:https://mc.dfrobot.com.cn/thread-297288-1-1.html (这里没有明确说明)
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

为本项目制作心愿单
购买心愿单
心愿单 编辑
[[wsData.name]]

硬件清单

  • [[d.name]]
btnicon
我也要做!
点击进入购买页面
上海智位机器人股份有限公司 沪ICP备09038501号-4

© 2013-2024 Comsenz Inc. Powered by Discuz! X3.4 Licensed

mail