基于Arduino Uno的RFID门禁

前言

这个门禁已经用了一年多啦~实测很稳定
接线也比较简单,而且实用性拉满,适合用来入门
因为我宿舍靠阳台下雨会泼水所以就没做指纹和密码,有兴趣的也可以拓展多种解锁方式

背景

本人没有带钥匙出门的习惯,每次出门都想着要带钥匙,每次出门都没带
然后就索性随缘了…
但是经历过几次门口吹风手机还没电之后
我决定探索实现开门自由

项目准备

一块Arduino Uno开发板
一个舵机
一块RC522
杜邦线若干
充电宝或者USB延长线(稳定供电)

成品展示

在这里插入图片描述
在这里插入图片描述

视频展示:
https://www.bilibili.com/video/BV1164y1i7aV/
https://www.bilibili.com/video/BV1xb4y1U7kB/

代码

#include <SPI.h>
#include <RFID.h>
#include <Servo.h>

RFID rfid(10,9);   //D10--读卡器MOSI引脚、D5--读卡器RST引脚
int temp=0;
Servo myservo;//定义舵机变量名
void setup()
{
  Serial.begin(9600);
  SPI.begin();
  rfid.init();
  myservo.attach(8);
  
}

void loop()
{
 myservo.write(0);
  //找卡
  if (rfid.isCard()) {
    Serial.println("找到卡");
    //读取卡序列号
    if (rfid.readCardSerial()) {
      Serial.print("卡号");
      Serial.print(rfid.serNum[0],HEX);
      Serial.print(" ");
      Serial.print(rfid.serNum[1],HEX);
      Serial.print(" ");
      Serial.print(rfid.serNum[2],HEX);
      Serial.print(" ");
      Serial.print(rfid.serNum[3],HEX);
      Serial.print(" ");
      Serial.print(rfid.serNum[4],HEX);
      Serial.print(" ");
      Serial.println(" ");
      
      if(rfid.serNum[0]==自定&&rfid.serNum[1]==自定&&rfid.serNum[2]==自定&&rfid.serNum[3]==自定&&rfid.serNum[4]==自定)
      {
        temp=1;//我
      }
      //按照串口监视器读取数值填入,如需写入多张卡则把if语句复制多几遍即可(具体看后面教程)
      if(rfid.serNum[0]==0x50&&rfid.serNum[1]==0x03&&rfid.serNum[2]==0x9B&&rfid.serNum[3]==0x14&&rfid.serNum[4]==0xDC)
      {
        temp=1;//NFC
      }
      
    }
    //选卡,可返回卡容量(锁定卡片,防止多数读取),去掉本行将连续读卡
    rfid.selectTag(rfid.serNum);
  }
  if(temp==1)
  {
      myservo.write(85);
      delay(2500);
      myservo.write(0);
      temp=0;
  }
  rfid.halt();
}

接线

舵机
红色线(电源线)接板载5V接口
棕色线(地线)接板载GND接口
橙色线(信号线)接板载8号接口
myservo.attach(8);这行代码可改信号线接脚
注意:可能有些厂商生产的线的颜色不一样,需要查证后再接入相应的管脚

RC522

ArduinoRC522
9RST
10SDA
11MOSI
12MISO
13SCK
IRQ
GNDGND
3.3v3.3v

代码烧录

编辑器
编辑器使用Arduino IDE,由于网站在国外,所以访问速度非常感人,虽然有中文社区提供阿里云盘下载,但是速度还是很慢,这里推荐使用Windows自带的应用商店(没想到吧)搜索Arduino下载基本跑满带宽。虽然版本会低一到两个版本,但是不影响使用,还是很香的。
项目新建
把我上面的代码复制到编辑器中,选择板子为Arduino UNO,安装库文件
安装库文件RFID.h
在这里插入图片描述
库文件链接:https://share.weiyun.com/GjFVt9ZZ(腾讯微云)

按照上面的步骤,把云盘里的库文件添加到Arduino编辑器就可以了

然后下一步就可以点左上角那个√验证代码,验证没有问题后连接主控板,主控板接好舵机和RC522,选择对应的COM端口,点击➡烧录到板子中
第一次烧录不需要往里写卡号,烧录完成后,把需要录入的卡片靠近RC522,在这里插入图片描述
打开编辑器右上角的串口监视器,看卡号,将读出来的卡号分别复制到if语句中。

然后再次烧录代码到arduino就可以正常使用了。
实测苹果的岭南通也是可以用的,只需要把苹果手机靠近RC522就会记录卡号,把卡号复制进去就可以了。(曲线救国,苹果党狂喜)

其他注意事项

如果各位自己写的代码注意避开RC522.h这个官方库!实测很不稳定,经常用个几天就会死机要重新按下复位键,而RFID这个库没有这个问题,可以正常运行。

建议使用直流电(手机充电头)直接供电,这样除了停电之外不怕没门进,如果用电宝的话很快没电然后你就会被锁在外面(别问我是怎么知道的)

最后的最后

大家记住不要把钥匙丢了,万一停电呢(狗头)

  • 17
    点赞
  • 174
    收藏
    觉得还不错? 一键收藏
  • 32
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 32
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值