“非法“走线寝室自制智能NFC门禁

2 篇文章 0 订阅
1 篇文章 0 订阅

寝室自制智能NFC门禁

起因

暑假申请了返校准备比赛,感觉疫情一个学期没有怎么锻炼了,晚上准备跑回宿舍。但是跑步的时候带钥匙太慢了,于是忙里抽闲,做了一个NFC的门禁(这样我就有理由买小米手环了hhh)

结果图

先上结果图
在这里插入图片描述

原理比较简单,寝室是老式的插销,所以可以直接通过MG90s的舵机来驱动(和SG90s舵机比起来力量更大)。

正好手里还有一块上个项目留下来的Arduino UNO R3的板子,由此电源和连接的问题就比较简单了(然而还是焊接了下RC522模块),电源可以使用移动电源(我用的是锂电池),连接部分就可以使用杜邦线了。

初版只有NFC,以后有时间可以用树莓派做个中控,加一下红外模块和摄像。


器件:
1.Arduino UNO R3模块
2.RC522模块(会用电烙铁的话没事,不会用电烙铁的话最好找商家焊好排针,不过可能要多收钱,焊接弯针最好)
3.杜邦线若干
4.锂电池和锂电池的线
5.MG90s舵机一个
6.蜂鸣器(可以不加)
7.胶枪,502,胶带

Tips1:其他单片机平台(stm32或者51)也可,RC522的代码很简单,也有官方的github仓库

Tips2:这里简单说一下,有不知道杜邦线和舵机是什么的小伙伴。简单讲一下,舵机就是一个机器,上面有可以旋转的轴,也因此可以拉动插销。杜邦线有公对母,母对母,公对公的区别,主要就是公的代表是插头,母的代表是插座,具体选什么还是要看寝室的具体情况,线的长度可能也需要具体情况具体讲,不过可以先买30cm的,我的是够用的。

连线图

带蜂鸣器
如果不想加蜂鸣器的话可以选择不加蜂鸣器,就把最下面的那个东西的连线都去掉就可以了。

还是不知道怎么连线或者用其他单片机的小伙伴,可以参考RC522的官方github仓库,里面解释比较详细
https://github.com/miguelbalboa/rfid

代码

#include <SPI.h>
#include <MFRC522.h>
#include <Servo.h>
#define N 2
#define M 4

static const unsigned char f[N][M] =
{
    {0x, 0x, 0x, 0x}, 
    {0x, 0x, 0x2E, 0x}, 
};

MFRC522 mfrc522(10, 9);
Servo mg90s;

void setup()
{
    SPI.begin();

    mg90s.attach(6);
    mg90s.write(0);
    pinMode(5, OUTPUT);
    pinMode(6, OUTPUT);
    
    return;
}

void loop()
{
    static int c;
    int i, j;
    
    if(mfrc522.PICC_IsNewCardPresent() && mfrc522.PICC_ReadCardSerial())
    {
        for(i = 0; i < N; i ++)
        {
            for(j = 0; j < M; j ++)
                if(mfrc522.uid.uidByte[j] != f[i][j])
                    break;
            if(j == M)
            {
                mg90s.write(180);
                Serial.print("111");
                delay(250);
                
                delay(2750);
                mg90s.write(0);
                c += 3;
                break;
            }
        }
    }
    else
    {
        delay(100);
        c ++;
    }


    if(c >= 20)
    {
        c = 0;
        SPI.end();
        SPI.begin();
        mfrc522.PCD_Init();
        
    }

    return;
}

简单解释一下代码,整体原理是RC522读取卡上的UID之后会和写死在代码里的UID进行比对,如果比对成功,就会驱动舵机,**f[N][M]**里面放的是所有人的UID,N是你写的卡的个数。
Tips:获取卡片UID的方式,比如校园卡,如果你有一个支持NFC的手机,可以下载一个软件查看UID,如果没有就复杂一些,建议借一个带NFC的手机。(比如我,惨兮兮,是通过实验室的门禁知道的,实验室门禁扫描到卡的时候,会在显示屏上显示UID)
另外,安全性确实是个大问题,不过介于本来就没啥安全性(上次忘了带钥匙,找开锁师傅,3s搞定,整的我都想去拜师学医了)和现在暑假疫情基本没啥人的情况,应该还是可以的

演示视频

CSDN上不能放演示视频
视频详见我的公众号:积淀智慧
积淀智慧

  • 8
    点赞
  • 75
    收藏
    觉得还不错? 一键收藏
  • 5
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值