• 国家税务总局湖南省税务局挂牌成立:业务可一厅通办 2019-09-21
  • 岳云鹏跟陈赫学打嗝 网友调侃:你教他说相声啊 2019-09-09
  • 否认以一个理论是原因是思想的根本抵触,抱着自己的观点不方,而使别人的说理成为强辩,看着就想笑 2019-09-09
  • 家装行业猫腻多:“低价全包”变身“加价全包” 2019-09-07
  • 回复@老老保老张工:伪高工想回到那种你生产的产品再水都有人买单都不会倒闭的日子?没门儿! 2019-09-03
  • 网络媒体新春走基层——西部网新闻频道 2019-09-03
  • 蔬菜-热门标签-华商生活 2019-08-18
  • 回复@大雨582:建议你学学需求层次理论…… 2019-08-17
  • 失眠怎么调理 五种水果助你安神养眠-美食资讯 2019-08-10
  • 中华龙舟大赛福州站收官 黑马异军突起摘大满贯 2019-08-10
  • 中超两将或联袂登场 非洲雄鹰能否再演黑马本色 2019-08-02
  • 世界杯期间在家撸串的正确姿势-热门标签-华商网数码 2019-08-02
  • 中欧班列让开放之路越走越宽 2019-08-01
  • 把群众来信当家书 把来访群众当家人 把群众事情当家事 用心用情用力做好信访工作 2019-08-01
  • 【学习时刻】人大教授汪三贵:完成全面脱贫“军令状”离不开“绣花”真功夫 2019-07-08
  • 查看: 38591|回复: 75
    打印 上一主题 下一主题

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

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

    先上动图


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

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

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


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











    门锁.rar

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

    stl 文件

    fingerprint.rar

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

    指纹检测代码

    enroll.rar

    1.37 KB, 下载次数: 338, 下载积分: 创造力 -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

    浙江6加1开奖结果
  • 国家税务总局湖南省税务局挂牌成立:业务可一厅通办 2019-09-21
  • 岳云鹏跟陈赫学打嗝 网友调侃:你教他说相声啊 2019-09-09
  • 否认以一个理论是原因是思想的根本抵触,抱着自己的观点不方,而使别人的说理成为强辩,看着就想笑 2019-09-09
  • 家装行业猫腻多:“低价全包”变身“加价全包” 2019-09-07
  • 回复@老老保老张工:伪高工想回到那种你生产的产品再水都有人买单都不会倒闭的日子?没门儿! 2019-09-03
  • 网络媒体新春走基层——西部网新闻频道 2019-09-03
  • 蔬菜-热门标签-华商生活 2019-08-18
  • 回复@大雨582:建议你学学需求层次理论…… 2019-08-17
  • 失眠怎么调理 五种水果助你安神养眠-美食资讯 2019-08-10
  • 中华龙舟大赛福州站收官 黑马异军突起摘大满贯 2019-08-10
  • 中超两将或联袂登场 非洲雄鹰能否再演黑马本色 2019-08-02
  • 世界杯期间在家撸串的正确姿势-热门标签-华商网数码 2019-08-02
  • 中欧班列让开放之路越走越宽 2019-08-01
  • 把群众来信当家书 把来访群众当家人 把群众事情当家事 用心用情用力做好信访工作 2019-08-01
  • 【学习时刻】人大教授汪三贵:完成全面脱贫“军令状”离不开“绣花”真功夫 2019-07-08
  • 安徽快三推荐一定牛 江苏7位数开奖号码 三分钟赛车官网 网络ag赌博是不是都是假的 喜盈门彩票 新疆喜乐彩彩票控 陕西快乐十分前三直 体育福建36选7 双色球ac值计算 起凡牛牛全图 快乐飞艇诀窍 微信上有人教玩高频彩 双色球号码 浙江6十1五等奖多少钱 118图库心水论坛777