Arduino宿舍门禁,实现刷卡(NFC)开门

起因

最近在学习智能车程序,突然对开发产生了极大的兴趣,一个合格的懒人就要自己做一个刷手机开门。再也不用带沉重的钥匙了,也不需要为忘记带钥匙的室友开门了。选择Arduino是因为它简单,不需要配置寄存器。

材料

在这里插入图片描述总共需要差不多60多软妹币,可以宿舍分摊一下,程序里面想写几张卡就写几张。

主体接线图

在这里插入图片描述蜂鸣器可以根据自己的需求,选择添加

程序的实现

下面是部分程序

#include <SPI.h>
#include <MFRC522.h>//nfc头文件
#include <Servo.h>//舵机头文件

MFRC522 rfid(10, 9);//创建一个rc522读卡器对象
Servo mg90s;//创建一个舵机控制对象
// 初始化数组用于存储读取到的NUID 
byte nuidPICC[4];

void setup()
{
    SPI.begin(); // 初始化SPI总线
    rfid.PCD_Init();    
    Serial.begin(9600);
    mg90s.attach(6);//设定舵机的接口为6
    mg90s.write(0);//设定舵机旋转角度复位为0.(可调0~180)
    pinMode(5, OUTPUT);
}

void loop()
{
      // 找卡
  if ( ! rfid.PICC_IsNewCardPresent())
    return;
 
  // 验证NUID是否可读
  if ( ! rfid.PICC_ReadCardSerial())
    return;
 
  MFRC522::PICC_Type piccType = rfid.PICC_GetType(rfid.uid.sak);
  
  // 将NUID保存到nuidPICC数组
  for (byte i = 0; i < 4; i++) {
    nuidPICC[i] = rfid.uid.uidByte[i];
    //Serial.println(nuidPICC[i]);
  }   
  if ((nuidPICC[0]==xxx&& nuidPICC[1]==xxx&& nuidPICC[2]==xxx&& nuidPICC[3]==xxx)||.........)     //改成自己卡的uid
   {
    mg90s.write(170);
    delay(1200);
    digitalWrite(LED_BUILTIN, HIGH);
    mg90s.write(0);
   }
}

利用Arduino自带的串口监视器来读取自己的序列号
在这里插入图片描述在下载程序之前,需要在Arduino IDE中导入RC522的库文件
在这里插入图片描述

读取自己的卡ID

程序下载到Arduino中在这里插入图片描述
点击右上角这个放大镜进入串口监视器,需要注意的是接的com口和程序中波特率的设置的是多少,然后把卡或者手机放到RC522上,就能看到自己的卡号,四个数。
在这里插入图片描述
如果还有不理解的建议看一看b站上佑來老师讲的,最后一集不要跳过!
在这里插入图片描述

最重要的电源问题

问题

电脑usb连接时,一切正常,当我用移动电源供电时,却发现程序不能正常工作了,百度一番才知道是舵机工作时,需要的电流太大了,导致板子无法正常工作,程序不能正常执行,现在有两种方法,一种是网上的,一种是我自己做的。

充电宝供电

如果有多余的充电宝,可以尝试充电宝供电,注意,我没有试过这种方法,因为Arduino论坛上不建议用充电宝供电,而且需要具有微电流能力的充电宝,或者买一个持续供电头。防止充电宝休眠。在这里插入图片描述

自己做电池组供电

Arduino有几种常用的电源供电方法,可以参考

链接: 太极创客 几种常用的为Arduino供电方法.

链接: bilibili arduino常用主控板供电需求和方式介绍.

而要想要板子正常工作,就要给舵机单独供电,MG966R需要4~6v的电源,因为正好宿舍有多余的18650电池,直接用两节18659(3.7v每节)串联在一起再加一个降压芯片(LM2596S)就搞定了。

Arduino我采用了DC头供电方式,同样两节18650电池串联在一起就行了,Arduino的DC接口可以接7.2v的电源。

电池充电

在这里插入图片描述
我给两组电池都加上了这个防过放过充的保护模块,可以在电压过低或者电池充电中电压太高时自动截至。防止过放后无法再充。
在这里插入图片描述接线方法也很简单,直接按图焊上去就行了。焊好该模块后,需要充电才能激活,否则没有电压输出,只要电池不取下来,就不需要再次激活。

充电需要9~12v的充电器,正好实验室有学长不要的12.6V充电器,加上降压芯片(LM2596S)降压到12v以下,充电刚刚好。
在这里插入图片描述

耗电大

如果给Arduino一直供电,3700mAh的电池也只能供电几个小时,而最省电的方法,就是加一个开关,只需要一个加在给Arduino板子供电的电池开关,在板子断电的情况下,舵机电源几乎一天只掉0.0x的电压,供一个星期没问题在这里插入图片描述最后我加了一个摇臂开关,开门时打开,用完之后关掉电源。

总结

1.舵机单独供电的GND需要和板子的GND连在一起,即共地。
2.供电方式多种多样,我用18650因为正好充电器和电池都不用自己买了。
这种充电器某宝上只卖10块钱。
3.Arduino有休眠模式,我只是略微了解了一下,觉得还是开关最省电。
4.我采用的是Arduino UNO,有需要的可以了解一下Arduino nano,上佑老师提到过,它更小,更方便,应该比UNO省电。
5.可以用胶枪固定在门上。
6.思考加一个电量低蜂鸣器报警,防止忘记给电池充电。欢迎一起来讨论。
7.指纹模块更简单,不过模块比较贵。
8.还可以加入蓝牙模块等,不过每次都需要打开手机连接蓝牙。
在这里插入图片描述
门外照片
在这里插入图片描述
门内照片
在这里插入图片描述电源照片,DC头用来供电,插上之后不会脱落,杜邦线用来充电。

还有很大的改进空间,开始做这个东西之前,我没有想到最难的不是程序,而是外接电源的问题,在这个过程中,也学习了很多东西,包括电池模块,降压模块,蓝牙模块,ESp8266模块,省电模式…受益匪浅,如果诸位有什么更好的方法或者高明的见解,欢迎来一起讨论,有什么问题可以在评论区提问,大家一起解决。


2022.10.28更新
如果对耗电有疑问的,可以参考一个别的大佬做的STC15低功耗宿舍门禁,可以待机3~6个月
大佬的STC15低功耗宿舍门禁

arduino也有低功耗模式,我之前了解过,这个项目中,我怀疑主要耗电的应该是那个DC降压芯片,没有实际测试过,大家可以用万用表测一下,当时我还比较菜,现在觉得可以用LDO芯片替代一下。可以参考上面那个链接,建议打成电路板,我这个老是杜邦线线虚/(ㄒoㄒ)/~~。

  • 78
    点赞
  • 478
    收藏
    觉得还不错? 一键收藏
  • 54
    评论
Arduino刷卡门禁是一种基于Arduino开发平台的门禁系统,通过刷卡实现门禁开关的控制。刷卡门禁系统通常包括刷卡器、门禁控制器、电磁锁、电源等组件。当用户刷卡时,刷卡器会读取卡片信息,并将该信息传递给门禁控制器,门禁控制器会根据卡片信息判断该用户是否有开门权限,如果有,则开启电磁锁,允许用户进入;如果没有,则拒绝用户进入。 在实现Arduino刷卡门禁系统时,需要使用Arduino开发板进行编程,通过连接刷卡器、门禁控制器、电磁锁等组件来完成系统的搭建。具体的步骤如下: 1. 连接硬件设备:将Arduino开发板、刷卡器、门禁控制器、电磁锁等组件按照电路图进行连接。 2. 编写程序:使用Arduino的编程语言编写程序,通过读取刷卡器读取到的卡片信息来进行门禁的控制。 3. 调试测试:将程序烧录到Arduino开发板上,进行调试测试,确保门禁系统能够正常工作。 需要注意的是,Arduino刷卡门禁系统的安全性需要得到保证。例如,可以通过加密卡片信息、设置密码等方式来增强门禁系统的安全性,防止非法用户进入。此外,在电路设计和程序编写中也需要注意防止电路短路、程序漏洞等问题,确保门禁系统的稳定性和安全性。 总之,Arduino刷卡门禁是一种基于Arduino开发平台的门禁系统,具有简单易用、可扩展性强、成本低廉等优点,可以广泛应用于小型办公场所、公寓、学校等场景。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值