打印
[CW32F030系列]

【CW32F030FxPx StartKit开发板】2、DIY射频识别门禁系统

[复制链接]
833|16
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
本帖最后由 Estelle1999 于 2024-6-27 20:57 编辑
上一篇写了关于CW32F030FxPx StartKit开发板的基础环境搭建与串口的应用,主要是为了DIY射频门禁系统而做准备。上一篇链接如下:https://bbs.21ic.com/icview-3382088-1-1.html
本次将开始DIY射频识别门禁系统,说起射频识别大家可能不太常用,射频识别(RFID)是一种无线通信技术,通过在标签中搭载微型芯片和天线,使标签能够与读写器之间进行无线通信,实现对标签中信息的识别和读取。RFID技术在物联网、供应链管理、智能交通、仓储管理等领域有着广泛的应用。RFID技术的优点包括快速、无需视线直接对标签进行识别、耐用、可以实现远距离识别、同时支持同时识别多个标签等。
本次主要是利用RFID射频中的13.56MHz的频段,利用RC522实现对IC卡的识读,判断IC卡是否有进门权限,如果没有进门权限则语音播报“卡无权限”,如果有进门权限则播报“刷卡成功,请通行”,同时继电器会动作。这些发生事件均可以通过串口将事件信息发送到上位机平台。具体架构如图1所示。
图1 射频识别门禁系统架构图
接下来就写代码吧,主要代码包含串口2和串口3,串口2作为语音播报装置的通信,串口3作为与上位机平台进行通讯,RC522的SPI通讯部分,本次RC522采用的是模拟SPI通讯方式实现,主要是模拟SPI便于移植,虽然时序方面不是很好调整,但是可以通过逻辑分析仪来实现对时序的调整。以下是初始化部分代码。
uint8_t JDQ_Flag;

UART2_Init();//串口2初始化,通过串口进行语音播报

UART3_Init(); //串口3初始化,通过串口进行电脑交互

JDQ_Init();//初始化继电器

RC522_Init();//初始化RC522刷卡模块

USART2_SendData(VoiceUp, 5);
在初始化之后就可以实现对IC卡的读取,本次没有对卡内容进行判断,仅仅采用了对IC卡秘钥的判断来实现IC卡是否有权限,其实后续优化可以对卡内容进行判断,同时可以实现IC卡的卡类判断,比如UID和CUID作为复制卡,很容易对IC卡进行复制,这样就会导致管理混乱。在刷卡之后,如果卡秘钥正确,则实现语音播报,并且控制继电器进行动作,表示门禁的锁打开,如果卡秘钥不正确,则会播报“卡无权限”继电器不动作。以下是程序流程代码。
    while(1)
    {
        if(RC522_PcdRequest(PICC_REQALL, RecPcd) == MI_OK) //寻卡,有卡就认
        {
            if(RC522_PcdAnticoll(uid) == MI_OK) //防冲突,应对同时有多张卡的情况,将被选中卡片的序列号保存到uid中
            {
                if(RC522_PcdSelect(uid) == MI_OK) //选定序列号为uid的卡片
                {
                    if(RC522_PcdAuthState(PICC_AUTHENT1A, 0x01, DefaultKey, uid) == MI_OK) //验证该卡片第一扇区A密钥
                    {
                        if(RC522_PcdRead(0x01, read) == MI_OK)  //1.读取块1(16字节)数据
                        {
                              printf("刷卡成功");//语音播报刷卡成功
                              GPIO_WritePin(CW_GPIOA, GPIO_PIN_9, GPIO_Pin_SET); //置高,打开继电器
                              JDQ_Flag = 1;
                              USART2_SendData(Voice03, 8);
                        }
                    }
                    else
                    {
                              printf("刷卡失败"); //语音播报刷卡失败
                              USART2_SendData(Voice02, 8);
                              Delay_s(2); //刷卡间隔
                    }
                }
                else printf("刷卡失败"); //语音播报刷卡失败
            }
            else printf("刷卡失败"); //语音播报刷卡失败
        }

        if(JDQ_Flag == 1)
        {
            JDQ_Flag = 0;
            Delay_s(3); //刷卡间隔
            GPIO_WritePin(CW_GPIOA, GPIO_PIN_9, GPIO_Pin_RESET); //置低,关闭继电器
        }
    }
总的来说,这段代码写的较为简单,其实继电器的开关控制时间可以采用定时器计数的方式实现,这样继电器动作时间较为准确并且不会利用阻塞来实现。在刷卡部分可以获取卡内容来实现具体的权限判断,可以在卡内加入时间进行权限判断,这样就可以作为一个小产品来使用。不过该项目也有自己的亮点,以前的状态提示一般是靠蜂鸣器实现,后期会采用OTP的语音芯片来实现语音播报,这样的劣势是语音内容不能随时更换,个性化定义内容,并且音质堪忧,本次采用JR6001语音模块可以很好的解决这个问题,因此算是一个亮点。通过本次体验,发现CW32F030的性能还是非常不错的,主要是官方提供的例程比较丰富,让开发来说较为简单方便,采用F030其主频可以高达64MHz,在一般的微控制方面均可以胜任,所以我觉得这款芯片的性价比还是非常高的。最后的最后,来一个视频showtime~简单的展示一下DIY射频门禁的效果,欢迎大家吐槽~


DIY射频识别门禁系统.rar

539.3 KB

使用特权

评论回复
沙发
yangjiaxu| | 2024-6-28 15:12 | 只看该作者
做的还不错啊,这个创意挺好

使用特权

评论回复
板凳
xiaoyaodz| | 2024-7-4 20:28 | 只看该作者
RC522模块以实现IC卡的读取。

使用特权

评论回复
地板
iyoum| | 2024-7-4 21:42 | 只看该作者
重点转向构建一个射频门禁系统,利用RFID技术实现对IC卡的识读和权限验证。

使用特权

评论回复
5
robertesth| | 2024-7-7 14:31 | 只看该作者
可以使用RC522_PcdRequest函数来检测是否有IC卡靠近读卡器。当有IC卡靠近时,此函数将返回MI(表示检测到IC卡)。

使用特权

评论回复
6
iyoum| | 2024-7-7 17:35 | 只看该作者
RFID技术因其无需直接视线接触、远距离识别能力、同时读取多个标签以及耐用性等特点,在物联网、供应链、交通和仓储管理等多个领域得到广泛应用。

使用特权

评论回复
7
chenjun89| | 2024-7-7 20:08 | 只看该作者
楼主动手能力不错啊。

使用特权

评论回复
8
AdaMaYun| | 2024-7-9 11:28 | 只看该作者
射频门禁都有哪些硬件单元以及通讯方式?

使用特权

评论回复
9
phoenixwhite| | 2024-7-9 21:19 | 只看该作者
用于控制门禁锁的开关。              

使用特权

评论回复
10
iyoum| | 2024-7-10 00:25 | 只看该作者
探讨如何利用RFID射频识别技术

使用特权

评论回复
11
hilahope| | 2024-7-10 03:33 | 只看该作者
这是一个常用的RFID读卡器,工作在13.56MHz频段,用于读取IC卡的信息。

使用特权

评论回复
12
Annie556| | 2024-7-10 12:24 | 只看该作者
其实,我觉得确保系统的安全性,防止未经授权的访问。使用加密技术保护RFID标签和读卡器之间的通信

使用特权

评论回复
13
Carina卡| | 2024-7-10 13:31 | 只看该作者
考虑使用动态加密或滚动码技术,以防止重放攻击

使用特权

评论回复
14
Estelle1999|  楼主 | 2024-7-10 14:38 | 只看该作者
可以选择合适的RFID读卡器和标签。根据需求选择低频(LF)、高频(HF)或超高频(UHF)RFID系统

使用特权

评论回复
15
Charlotte夏| | 2024-7-10 15:45 | 只看该作者
确保读卡器和标签的兼容性,并考虑它们的读取范围和环境适应性

使用特权

评论回复
16
Emily999| | 2024-7-10 16:55 | 只看该作者
一般来说系统有稳定的电源供应,考虑使用备用电池或不间断电源(UPS)

使用特权

评论回复
17
Betty996| | 2024-7-10 19:10 | 只看该作者
选择合适的通信接口(如UART、SPI、I2C)和协议,确保读卡器与控制器之间的可靠通信

使用特权

评论回复
18
alxd| | 2024-7-11 08:06 | 只看该作者
编写可靠的软件来处理RFID读卡器的输入,并控制门锁或其他执行机构

使用特权

评论回复
19
Alina艾| | 2024-7-11 09:24 | 只看该作者
安装读卡器时,考虑其位置和角度,确保标签能够被正确读取

使用特权

评论回复
20
Betty1299| | 2024-7-11 10:09 | 只看该作者
我觉得,需要考虑实现远程管理功能,如通过网络更新用户数据库或监控系统状态

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

70

主题

1398

帖子

2

粉丝