单片机学习小组
直播中

池鹄展

8年用户 982经验值
擅长:可编程逻辑 电源/新能源
私信 关注

请问一下如何去自制一种寝室智能NFC门禁呢

请问一下如何去自制一种寝室智能NFC门禁呢?

回帖(1)

杨雪

2022-1-20 14:14:30
寝室自制智能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仓库,里面解释比较详细

代码


#include
#include
#include
#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[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搞定,整的我都想去拜师学医了)和现在暑假疫情基本没啥人的情况,应该还是可以的。
举报

更多回帖

×
20
完善资料,
赚取积分