zoukankan      html  css  js  c++  java
  • 【DIY】制作一个刷卡进门装置

    摘要:本文主要介绍了如何通过Arduino和RFID射频卡外加一个舵机来DIY一个自动开锁作品

    作者博客地址:http://www.yooongchun.cn/

    • 基本想法

      宿舍里使用的是钥匙开门,近来接触Arduino,又刚好看到有朋友使用RFID射频识别卡实现了读取卡片信息功能,于是自己也想试试。

      基本想法就是使用一块Arduino芯片作为控制,一块RFID射频卡作为读取卡片信息的载体来读取校园卡的ID号,然后让Arduino驱动一个舵机来控制锁舌,从而实现刷卡开门的功能

    • 准备工作

      • 购买内容:

        • Arduino Nano芯片一块

          img

        • RFID射频识别卡一块

          img

        • 导线若干

        • 45g金属齿舵机一个

          img

      • 固定装置

        由于门口锁的位置需要放置舵机,Arduino和电池等东西,所以需要使用一个固定的装置,这个可以从简,楼主在这里使用的是3D打印框架,先使用UG建好模型,然后发给商家进行3D打印

        img

        上面的内容,看起来像方向盘的那个是用来固定在锁的旋转头上,然后在外圈固定一根线,使用舵机拉动线然后带动锁转动

        别的则是用来安装舵机和固定电池的

    • 连接Arduino与rfid卡,参考下图进行连线

      img

      连接之后通电测试一下是否正常

      img

    • 写代码测试

      #include <SPI.h>
      #include <RFID.h>
      #include <Servo.h>
      Servo myservo;
      unsigned char n1[]={ 214 ,146 ,200 , 189 ,49 };
      unsigned char n2[]={ 35 ,102 ,248 , 14 ,179 };
      unsigned char n3[]={ 67 ,87 ,249 , 14 ,227 };
      unsigned char n4[]={ 211, 57 ,250 ,14 , 30 };
      unsigned char n5[]={ 118 ,58 ,207 , 189 ,62 };
      unsigned char n6[]={ 38 ,82 ,199 , 189 ,14 };
      unsigned char n7[]={ 69 ,6 ,5 , 109 ,43 };
      RFID rfid(10,5); 
      int name=0;
      char temp=0;
      void setup()
      {
      Serial.begin(9600);
      myservo.attach(7);
      myservo.write(180); 
      pinMode(4,OUTPUT);
      digitalWrite(4,HIGH);
      SPI.begin();
      rfid.init();
      }
      void loop()
      {
      //找卡
      if (rfid.isCard()) 
      { 
      //读取卡序列号
      if (rfid.readCardSerial()) 
      {
      shibie();
      if(temp == 1)
      {
      temp=0;
      myservo.write(0);
      delay(2000);
      myservo.write(180); 
      }
      else delay(300);
      }
      //选卡,可返回卡容量(锁定卡片,防止多数读取),去掉本行将连续读卡
      rfid.selectTag(rfid.serNum);
      } 
      rfid.halt();
      delay(200);
      }
      int shibie()
      { 
      if( rfid.serNum[0] == n1[0] && rfid.serNum[1] == n1[1] && rfid.serNum[2] == n1[2] && rfid.serNum[3] == n1[3] && rfid.serNum[4] == n1[4] )
      {
      //Serial.println("n1 OK");
      temp=1;
      }
      if( rfid.serNum[0] == n2[0] && rfid.serNum[1] == n2[1] && rfid.serNum[2] == n2[2] && rfid.serNum[3] == n2[3] && rfid.serNum[4] == n2[4])
      {
      //Serial.println("n2 OK");
      temp=1;
      }
      if( rfid.serNum[0] == n3[0] && rfid.serNum[1] == n3[1] && rfid.serNum[2] == n3[2] && rfid.serNum[3] == n3[3] && rfid.serNum[4] == n3[4])
      {
      //Serial.println("n3 OK");
      temp=1;
      }
      if( rfid.serNum[0] == n4[0] && rfid.serNum[1] == n4[1] && rfid.serNum[2] == n4[2] && rfid.serNum[3] == n4[3] && rfid.serNum[4] == n4[4])
      {
      //Serial.println("n4 OK");
      temp=1;
      }
      if( rfid.serNum[0] == n5[0] && rfid.serNum[1] == n5[1] && rfid.serNum[2] == n5[2] && rfid.serNum[3] == n5[3] && rfid.serNum[4] == n5[4])
      {
      //Serial.println("n5 OK");
      temp=1;
      }
      if( rfid.serNum[0] == n6[0] && rfid.serNum[1] == n6[1] && rfid.serNum[2] == n6[2] && rfid.serNum[3] == n6[3] && rfid.serNum[4] == n6[4])
      {
      //Serial.println("n6 OK");
      temp=1;
      }
      if( rfid.serNum[0] == n7[0] && rfid.serNum[1] == n7[1] && rfid.serNum[2] == n7[2] && rfid.serNum[3] == n7[3] && rfid.serNum[4] == n7[4])
      {
      //Serial.println("n7 OK");
      temp=1;
      }
      }
      
    • 安装设备

      接下来把设备安装到门上,这个安装过程稍有复杂,需要一些耐心

      安装完之后接上电池,看看效果吧。
      因为这里不允许插入视频,所以要看效果请转到我的个人网站观看:永春小站-刷卡进门新方式

  • 相关阅读:
    腾讯云发布“创新成长快线”,首期向创业者赠送10亿分钟实时音视频时长
    Tencent Kona JDK11正式开源,腾讯大数据将持续贡献Java生态发展
    腾讯视频云勇夺云端视频转码大赛多项第一
    分享一些常用的开源博客社区网站
    分享些发表技术类文章的平台
    Linux之ps命令基本使用
    彻底卸载 Oracle11g r2 教程(亲测有效,已重装过)
    Oracle11g R2 安装教程(非常详细 )
    苹果CMS搭建影视网站教程
    JSON 基本使用
  • 原文地址:https://www.cnblogs.com/yczha/p/13160271.html
Copyright © 2011-2022 走看看