• 从胡红岩到王天荣,还有多少人在无辜背案底 2019-09-17
  • 英国政治家威廉·皮特说得好:百姓的茅草房,风可以进,雨可以进,国王不可以随便进。 2019-09-17
  • 事件 —频道 春城壹网 七彩云南 一网天下 2019-08-30
  • 《辉煌中国》第一集《圆梦工程》 2019-08-30
  • 建党精神,从这八个字学起——访中国史学会原会长金冲及 2019-08-26
  • "生死"淘汰赛启动 中国私募股权行业加速洗牌 2019-08-15
  • 国际锐评:美方反复无常,中方洞若观火,同等反制! 2019-08-03
  • 中美贸易战,让更多的中国人醒悟过来:美国是靠不住的。 2019-08-03
  • 中国电视剧诞生60周年盛典 老中青三代主创齐聚一堂 2019-07-25
  • 探寻南极之境 送给世界尽头的一封情书 2019-07-25
  • 抓住了!云南文山脱逃嫌疑人七小时后在城内被抓获 2019-07-22
  • “埃夫特·栋梁杯”全国工业机器人技术应用技能大赛落幕 2019-07-22
  • 应战美国贸易战中国跟500亿 同等力度、同日开征关税 2019-07-12
  • 专家谈当前市场预期 信心持续攀升预期比较乐观 2019-07-02
  • SNH48年度总决选速报结果公布 李艺彤登顶 2019-07-02
  • 查看: 38504|回复: 75
    打印 上一主题 下一主题

    [项目分享] Arduino 指纹电磁锁, 让你们再进我的工作室乱翻

      [复制链接]
    本帖最后由 饶厂长 于 2017-4-16 16:13 编辑

    先上动图


           本人成功开门                                                              无权限人无法开门

    视频教程:
    使用器材总和很便宜,而且很实用。
    比市面上的产品便宜好多呢, 还很有科技感。
    如果安装在工作室门口是不是感觉很厉害!

    教程和演示都在视频里哦, 点开看就好了


    另外stl文件与Arduino代码还有接线方法全都放在附件里面啦, 快感谢厂长吧











    门锁.rar

    70.61 KB, 下载次数: 443, 下载积分: 创造力 -1

    stl 文件

    fingerprint.rar

    1.53 KB, 下载次数: 419, 下载积分: 创造力 -1

    指纹检测代码

    enroll.rar

    1.37 KB, 下载次数: 337, 下载积分: 创造力 -1

    录入指纹程序

    推荐

    gada888  版主

    发表于 2017-4-16 08:36:05

    本帖最后由 gada888 于 2017-4-16 14:29 编辑

    借贵宝地一用,希望lz见谅,闲着无聊,推导一下代码:
    先下载Fingerprint Sensor library运行库,解压库并放到arduino 运行库里,然后在arduino里样例里打开一个如下案例,
    路径如下:
    Example ->Adafruit_Fingerprint→fingerprint
    -------------------------
    [AppleScript] 纯文本查看 复制代码
    #include <Adafruit_Fingerprint.h>
    #include <SoftwareSerial.h>
    
    int getFingerprintIDez();
    
    // pin #2 is IN from sensor (GREEN wire)
    // pin #3 is OUT from arduino  (WHITE wire)
    SoftwareSerial mySerial(2, 3);
    
    
    Adafruit_Fingerprint finger = Adafruit_Fingerprint(&mySerial);
    
    void setup()  
    {
      Serial.begin(9600);
      Serial.println("fingertest");
    
      // set the data rate for the sensor serial port
      finger.begin(57600);
      
      if (finger.verifyPassword()) {
        Serial.println("Found fingerprint sensor!");
      } else {
        Serial.println("Did not find fingerprint sensor :(");
        while (1);
      }
      Serial.println("Waiting for valid finger...");
    }
    
    void loop()                     // run over and over again
    {
      getFingerprintIDez();
      delay(50);            //don't ned to run this at full speed.
    }
    
    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) {
        Serial.println("Communication error");
        return p;
      } else if (p == FINGERPRINT_NOTFOUND) {
        Serial.println("Did not find a match");
        return p;
      } else {
        Serial.println("Unknown error");
        return p;
      }   
      
      // found a match!
      Serial.print("Found ID #"); Serial.print(finger.fingerID); 
      Serial.print(" with confidence of "); Serial.println(finger.confidence); 
    }
    
    // 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);
      return finger.fingerID; 
    }


    这是案例源文件,下一个跟帖是案例的修改文件。
    板凳

    dsweiliang  版主

    发表于 2017-4-16 08:20:11

    有教程吗?
    地板

    gada888  版主

    发表于 2017-4-16 08:43:31

    本帖最后由 gada888 于 2017-4-16 16:48 编辑



    图片来自谷歌搜索
    加入逻辑判断,和锁的开关之后就成了如下程序:
    #include <Adafruit_Fingerprint.h>
    #include <SoftwareSerial.h>

    int getFingerprintIDez();
    bool locked = true;
    // pin #2 is IN from sensor (GREEN wire)
    // pin #3 is OUT from arduino  (WHITE wire)
    SoftwareSerial mySerial(2, 3);
    Adafruit_Fingerprint finger = Adafruit_Fingerprint(&mySerial);
    int LockPin = 2;
    void setup()  
    {
      Serial.begin(9600);
      Serial.println("fingertest");

      // set the data rate for the sensor serial port
      finger.begin(57600);
      
      if (finger.verifyPassword()) {
        Serial.println("Found fingerprint sensor!");
      } else {
        Serial.println("Did not find fingerprint sensor :(");
        while (1);
      }
      Serial.println("Waiting for valid finger...");
    }

    void loop()                     // run over and over again
    {
      getFingerprintIDez();
      delay(50);            //don't ned to run this at full speed.
    }

    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) {
        Serial.println("Communication error");
        return p;
      } else if (p == FINGERPRINT_NOTFOUND) {
        Serial.println("Did not find a match");
        return p;
      } else {
        Serial.println("Unknown error");
        return p;
      }   
      
      // found a match!
      Serial.print("Found ID #"); Serial.print(finger.fingerID);
      Serial.print(" with confidence of "); Serial.println(finger.confidence);
    }

    // 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);

       if (locked == true) {
        digitalWrite(LockPin, HIGH);
        locked = false;
        delay(1000);

      } else {
        digitalWrite(LockPin, LOW);
        locked = true;
        delay(1000);
      }

      return finger.fingerID;
    }
    注:没测试过。但按道理应该是对的。加粗部分是新加code,程序需要微调。中间大段的测试部分可以删掉。锁的硬件电路需要设计一个简单的电流放大电路来驱动大功率电磁开关。电磁门锁通常是12V。普通一个场效应管就可以控制了。LCD不知道IIC的LCD可不可以用,如果可以,那需要根据下面的LCD IIC 代码在主程序加入几行语句,非常简单:
    [AppleScript] 纯文本查看 复制代码
    #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
    void setup()
    {
    lcd.init(); // initialize the lcd
    // Print a message to the LCD.
    lcd.backlight();
    lcd.print("Shanno");
    lcd.setCursor(0,1);
    lcd.print("Is Awesome!");
    }
    void loop()
    {
    }



    5#

    dsweiliang  版主

    发表于 2017-4-16 10:01:03

    本帖最后由 gada888 于 2017-4-16 11:22 编辑
    gada888 发表于 2017-4-16 08:43
    图片来自谷歌搜索
    加入逻辑判断,和锁的开关之后就成了如下程序:
    #include

    有办法令手指碰到感应器,感应器再触发感应吗,省电
    6#

    gada888  版主

    发表于 2017-4-16 11:23:18

    本帖最后由 gada888 于 2017-4-16 11:26 编辑
    dsweiliang 发表于 2017-4-16 10:01
    有办法令手指碰到感应器,感应器再触发感应吗,省电

    ============
    可以吧,arduino有个sleep命令,可以让程序不工作时处于休眠状态。需要加入LowPower.h库。
    7#

    dsweiliang  版主

    发表于 2017-4-16 13:38:33

    gada888 发表于 2017-4-16 11:23
    ============
    可以吧,arduino有个sleep命令,可以让程序不工作时处于休眠状态。需要加入LowPower.h库。
    ...

    好的
    8#

    饶厂长  高级技师
     楼主|

    发表于 2017-4-16 16:06:51


    视频今天贴上了
    9#

    饶厂长  高级技师
     楼主|

    发表于 2017-4-16 16:14:31

    本帖最后由 gada888 于 2017-4-16 16:44 编辑
    gada888 发表于 2017-4-16 08:43
    图片来自谷歌搜索
    加入逻辑判断,和锁的开关之后就成了如下程序:
    #include

    不建议接在0、1口, 下载程序不方便
    10#

    饶厂长  高级技师
     楼主|

    发表于 2017-4-16 16:14:48

    本帖最后由 gada888 于 2017-4-16 16:43 编辑
    gada888 发表于 2017-4-16 11:23
    ============
    可以吧,arduino有个sleep命令,可以让程序不工作时处于休眠状态。需要加入LowPower.h库。
    ...

    我用的是按钮唤醒
    11#

    Rockets  NPC

    发表于 2017-4-18 16:58:30

    感觉是做雷神之锤的节奏啊。
    12#

    饶厂长  高级技师
     楼主|

    发表于 2017-4-20 11:52:30

    Rockets 发表于 2017-4-18 16:58
    感觉是做雷神之锤的节奏啊。

    怎么讲? 没看懂。
    13#

    QQ358698005  学徒

    发表于 2017-4-22 09:31:59

    指纹识别??槎嗌偾桓??可以贴下链接吗
    14#

    饶厂长  高级技师
     楼主|
    来自手机

    发表于 2017-4-23 00:09:51

    QQ358698005 发表于 2017-4-22 09:31
    指纹识别??槎嗌偾桓??可以贴下链接吗

    淘宝搜 100块左右
    15#

    hnyzcj  超级版主

    发表于 2017-4-23 07:05:40

    gada888 发表于 2017-4-16 08:43
    图片来自谷歌搜索
    加入逻辑判断,和锁的开关之后就成了如下程序:
    #include

    感谢感谢
    16#

    Rockets  NPC

    发表于 2017-4-24 12:17:46

    饶厂长 发表于 2017-4-20 11:52
    怎么讲? 没看懂。

    国外有个朋友做了一个雷神之锤,用的和你的原理是一样的,用指纹来控制电磁铁。只有验证的人才能切断电磁铁工作,拿起雷神之锤。
    17#

    饶厂长  高级技师
     楼主|

    发表于 2017-4-25 18:09:51

    Rockets 发表于 2017-4-24 12:17
    国外有个朋友做了一个雷神之锤,用的和你的原理是一样的,用指纹来控制电磁铁。只有验证的人才能切断电磁 ...

    好创意啊, 可以考虑搞一个
    18#

    iooops  版主

    发表于 2017-4-30 23:36:15

    感觉好666啊

    瞻仰一下大神 = =
    19#

    饶厂长  高级技师
     楼主|

    发表于 2017-5-1 16:44:53

    iooops 发表于 2017-4-30 23:36
    感觉好666啊

    瞻仰一下大神 = =

    刚接触不久;P 最近在研究这些
    20#

    yahoocz  学徒

    发表于 2017-6-1 19:19:45

    看看
    21#

    nicho  版主

    发表于 2017-6-3 20:09:24

    指纹识别不错呀~~
    1234下一页
    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    为本项目制作心愿单
    购买心愿单
    心愿单 编辑
    wifi气象站

    硬件清单

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

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

    极速赛车预测
  • 从胡红岩到王天荣,还有多少人在无辜背案底 2019-09-17
  • 英国政治家威廉·皮特说得好:百姓的茅草房,风可以进,雨可以进,国王不可以随便进。 2019-09-17
  • 事件 —频道 春城壹网 七彩云南 一网天下 2019-08-30
  • 《辉煌中国》第一集《圆梦工程》 2019-08-30
  • 建党精神,从这八个字学起——访中国史学会原会长金冲及 2019-08-26
  • "生死"淘汰赛启动 中国私募股权行业加速洗牌 2019-08-15
  • 国际锐评:美方反复无常,中方洞若观火,同等反制! 2019-08-03
  • 中美贸易战,让更多的中国人醒悟过来:美国是靠不住的。 2019-08-03
  • 中国电视剧诞生60周年盛典 老中青三代主创齐聚一堂 2019-07-25
  • 探寻南极之境 送给世界尽头的一封情书 2019-07-25
  • 抓住了!云南文山脱逃嫌疑人七小时后在城内被抓获 2019-07-22
  • “埃夫特·栋梁杯”全国工业机器人技术应用技能大赛落幕 2019-07-22
  • 应战美国贸易战中国跟500亿 同等力度、同日开征关税 2019-07-12
  • 专家谈当前市场预期 信心持续攀升预期比较乐观 2019-07-02
  • SNH48年度总决选速报结果公布 李艺彤登顶 2019-07-02
  • 踢足球的正确脚法图片 齐鲁福彩 辽宁福彩七乐彩走势图 香港六合彩特码 2019北京pk10稳赚技巧 捕鱼王3d 极速11选5官网计划软件下载 白姐透码 山东群英会推荐 pk10去一尾算法举例 炸金花棋牌游戏大厅 26选5号码 猜生肖一波中特夸张 四川金7乐当日开奖查绚 广西11选5现场