物联传媒 旗下网站
登录 注册
RFID世界网 >  解决方案  >  其他  >  正文

技术宅基于rc522模块DIY的一套RFID门禁方案

作者:吴湛
来源:RFID世界网
日期:2018-11-14 16:00:07
摘要:为解决楼主日常把钥匙忘在宿舍里,但是羊城通和手机却不会忘,于是对宿舍门加入rfid开锁功能RFID
关键词:RFID门禁

  为解决楼主日常把钥匙忘在宿舍里,但是羊城通和手机却不会忘,于是对宿舍门加入rfid开锁功能。

  基本功能:本项目使用rc522读取rfid卡的id后,与事先写入程序的Id号码进行对比,if对比成功,开门else不开门,后期可增加屏幕显示,开门日志记录到tf卡等功能,现在穷,不过这样做功耗会变大,导致需要usb充电器供电。现在一块8000毫安充电宝可以稳定使用一星期。

  需要准备的原件arduino uno

  rc522模块

  足够拉开你家门力气的舵机一个

  各种平时用m1卡(羊城通,小区门禁,带nfc的手机,饭卡等等……)

  (以上原件图片来自互联网)

  制作的基本过程

  1、硬件接线图与原理图

  #include 《SPI.h》

  #include 《RFID.h》

  #include 《Servo.h》

  Servo myservo;

  extern uint8_t SmallFont[];

  RFID rfid(10,8); //D10--接上SDA、D8--接RST D13--接上SCK D11--接上MOSI D12--接上MISO RQ不接

  unsigned char serNum[5];

  void setup()

  {

  Serial.begin(9600);//串口用来读取需要添加的卡号,然后手动写到程序里

  myservo.attach(9);//舵机针脚位9

  myservo.write(0); //舵机初始化0度

  SPI.begin();

  rfid.init();

  }

  void loop()

  {

  long randNumber = random(0, 20);

  unsigned char i,tmp;

  unsigned char status;

  unsigned char str[MAX_LEN];

  unsigned char RC_size;

  //找卡

  rfid.isCard();

  //读卡号

  if (rfid.readCardSerial())

  {

  Serial.print(“your card id is : ”);

  Serial.print(rfid.serNum[0]);

  Serial.print(“ , ”);

  Serial.print(rfid.serNum[1],BIN);

  Serial.print(“ , ”);

  Serial.print(rfid.serNum[2],BIN);

  Serial.print(“ , ”);

  Serial.print(rfid.serNum[2],BIN);

  Serial.print(“ , ”);

  Serial.print(rfid.serNum[4],BIN);

  Serial.println(“ ”);

  //下面是改卡号区域

  if(rfid.serNum[0]==30||rfid.serNum[0]==148||rfid.serNum[0]==136||rfid.serNum[0]==161||rfid.serNum[0]==68){//第一道筛选

  for(int i=0;i《100;i++)

  {

  if(rfid.serNum[0]==30||rfid.serNum[0]==117||rfid.serNum[0]==155)//第二道筛选,支持一人一号

  {

  Serial.println(“Welcome test 1”);

  myservo.write(180);

  }

  if(rfid.serNum[0]==148||rfid.serNum[0]==68||rfid.serNum[0]==161)//rfid.serNum[0]==161 这个0是id位置,可以自行更改

  {

  Serial.println(“Welcome test 2”);

  myservo.write(180);

  }

  if(rfid.serNum[0]==136)

  {

  Serial.println(“Welcome test 3”);

  myservo.write(180);

  }

  }

  delay(1000);

  myservo.write(0);

  Serial.println(“closed”);

  }

  }

  if (!rfid.readCardSerial()){

  }

  rfid.halt(); //休眠

  }

  本源码在arduino ide1.0.6正常编译

  参考资料

  感谢ID:酥糖 提供的互联网上的相似项目

  在互联网上找到的rfid库,大大加快了我的制作过程。

  实战演练

  1.充电宝解决方案

  外壳是一个金莎巧克力的改字

  这是未完工状态,后面会喷个漆用胶布贴紧

  我们学校的旧锁舵机安装示意图↑

  2.usb充电器供电方案

  rc522 安装示意图