宿舍rfid门禁,解决忘带钥匙的烦恼,无需损伤宿舍门-Arduino中文社区 - Powered by Discuz!

Arduino中文社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 71376|回复: 56

[项目] 宿舍rfid门禁,解决忘带钥匙的烦恼,无需损伤宿舍门

  [复制链接]
发表于 2017-8-26 14:44 | 显示全部楼层 |阅读模式
本帖最后由 hycdgx 于 2017-11-30 23:02 编辑

发库文件了,之前一直忘记


rfid库.zip (8.89 KB, 下载次数: 992)




一.项目名称:
宿舍rfid门禁,解决忘带钥匙的烦恼,无需损伤宿舍门

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


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

四.需要准备的原件arduino uno
QQ截图20170826135615.jpg
rc522模块
QQ截图20170826140637.jpg
足够拉开你家门力气的舵机一个
QQ截图20170826140755.jpg
各种平时用m1卡(羊城通,小区门禁,带nfc的手机,饭卡等等……)
(以上原件图片来自互联网)
五.制作的基本过程
1、硬件接线图与原理图
rfid.png rfid ylt.png
2、模型运行视频,以及模型运行时的实时串口输出视频(必看)



六、程序源码
[mw_shl_code=cpp,true]#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();                //休眠
}

[/mw_shl_code]
本源码在arduino ide1.0.6正常编译

七:参考资料
感谢ID:酥糖 提供的互联网上的相似项目
在互联网上找到的rfid库,大大加快了我的制作过程。

八:实战演练
1.充电宝解决方案
QQ截图20170826142445.jpg
QQ截图20170826142453.jpg
外壳是一个金莎巧克力的改字
这是未完工状态,后面会喷个漆用胶布贴紧
QQ截图20170826142518.jpg
QQ截图20170826142908.jpg
我们学校的旧锁舵机安装示意图↑
2.usb充电器供电方案
QQ截图20170826143512.jpg
rc522 安装示意图
QQ图片20170826143650.png



九.价格清单
arduino uno (25)
rc522模块(9.99)
舵机(30)
跳线(2)
充电宝或usb充电器(忽略不计)
以上价格不包括运费

如果大家有什么好意见,请在评论区告诉我,我会继续加上





QQ截图20170826142518.jpg
QQ截图20170826143521.jpg
 楼主| 发表于 2017-8-27 13:48 | 显示全部楼层
LINSHAN 发表于 2017-8-27 13:46
老哥,这样干不美观

我对外观设计方面不是很懂,主打实用
发表于 2017-8-27 13:46 | 显示全部楼层
老哥,这样干不美观
发表于 2017-8-27 16:39 | 显示全部楼层
感觉像抄我的东东
 楼主| 发表于 2017-8-27 16:43 | 显示全部楼层
ac-dc 发表于 2017-8-27 16:39
感觉像抄我的东东

刚刚看了下你的作品,真的差不多,为什么你的代码浏览那里是黑色的,有些看不见
发表于 2017-9-1 19:40 来自手机 | 显示全部楼层
哈哈哈厉害了不算是抄袭吧并蒂莲花你们两个也许是独立想到了
发表于 2017-9-1 20:53 | 显示全部楼层
iArduion 发表于 2017-9-1 19:40
哈哈哈厉害了不算是抄袭吧并蒂莲花你们两个也许是独立想到了

好像是的
发表于 2017-10-26 22:09 | 显示全部楼层
1.感谢对社区比赛的支持,开发者积分和贡献值已发放,请点击以下链接领取纪念衫并参与抽奖~
http://www.arduino.cn/thread-48132-1-1.html
2.比赛结果会在11.15号前公布,请耐心等待。
发表于 2017-10-29 17:03 | 显示全部楼层
大哥把rfid库发一下呗!
发表于 2017-11-25 22:38 | 显示全部楼层
大哥把库发一下啊
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|Archiver|手机版|Arduino中文社区

GMT+8, 2024-11-27 23:38 , Processed in 0.085854 second(s), 19 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表