宿舍进门新方案

为什么要做这个作品?

博主所在的大学宿舍里使用的是钥匙开门,近来接触Arduino ,又刚好看到有朋友使用RFID 射频识别卡实现了读取卡片信息功能,作为机械学院一枚多动又爱鼓捣的青年,光看如何能满足心里的征服感,于是冒着花光一周生活费的风险,到万能的淘宝买齐了材料,动手就开撸!

设计思路

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

准备工作

  • 购买Arduino Nano 芯片一块

    img

  • 购买RFID 射频识别卡一块

    img

  • 导线若干,45g金属齿舵机一个

    img

  • 固定装置

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

    img

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

  • 连接ArduinoRFID 卡,参考下图进行连线

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

安装设备

接下来把设备安装到门上,这个安装过程稍有复杂,需要一些耐心
安装完之后接上电池,看看效果吧


   转载规则


《宿舍进门新方案》查永春 采用 知识共享署名-非商业性使用-禁止演绎 4.0 国际许可协议 进行许可。
  目录