# AB32VG1智慧门禁系统 **Repository Path**: yaoyufan/DoorLock ## Basic Information - **Project Name**: AB32VG1智慧门禁系统 - **Description**: No description available - **Primary Language**: Unknown - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 5 - **Forks**: 2 - **Created**: 2021-05-12 - **Last Updated**: 2025-10-19 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README 1. # 基于AB32VG1的智慧门禁系统 # 1.项目描述 因为自己之前接触过一些门禁系统的研究设计,所以在看到RT-Thread发布了中科蓝讯 AB32VG1 RISC-V开发板测评的活动之后,就想在这开发板上完成一些自己的想法。本DIY项目使用RC522射频模块来读取IC卡卡号,卡号分为管理员卡和普通卡,管理员卡无视时间限制通行,普通卡在合理时间内能够通行,通过对比SD卡中存储的卡号信息来验证卡号是否合法,然后在OLED屏上显示时间和卡号验证信息,能够在finish终端对门禁系统进行管理。 # 2.DIY过程 ## 2.1硬件组成 LED灯 ----------------- 红灯表示卡号非法,绿灯表示卡号合法 RC522模块 ----------------- 用来读取IC卡卡号 OLED屏 ----------------- 显示时间和卡号验证信息 UART0串口 ------------------ finish终端,可以输入命令查看卡号记录等 RC522模块使用软件模拟SPI与AB32VG1进行通信,使用引脚: SDA ---------- PF0 SCLK ---------- PE0 MOSI ---------- PF1 MISO ---------- PA5 OLED屏使用软件模拟I2C与AB32VG1进行通行,使用引脚: SDA ---------- PE2 SCL ---------- PE3 ## 2.2软件设计 软件中主要修改了RC522的驱动以及SSD1306驱动,其他都是在RT-Thread Settings中打开就能用,RC522的驱动是我从Hal库中移植过来的,想要借鉴的可以参考mfrc.c和mfrc.h。 整个程序流程是主要分为以下几个步骤: 1. UID卡号读取,读取卡号,将卡号通过邮箱发送给UID处理线程; 2. UID卡号处理,判断卡号与SD卡中存储的卡号是否符合,符合的话OLED屏幕显示YES并且亮绿灯,不符合显示NO并亮红灯; 3. OLED屏幕显示当前时间; 4. Finish终端可以进行门禁系统的管理,我主要设计了10个命令来进行管理,具体命令下面在说; 程序中创建了四个线程:UID卡号读取线程、UID处理线程、OLED显示线程和UID卡号验证信息线程,详细程序请看源程序。 ```c Mfrc_Thread = rt_thread_create("Mfrc_Thread", Mfrc_Thread_Entry, RT_NULL, 1024, 9, 20);//uid读取线程 if(Mfrc_Thread != RT_NULL) rt_thread_startup(Mfrc_Thread); CardDeal_Thread = rt_thread_create("CardDeal_Thread", CardDeal_Thread_Entry, RT_NULL, 4096, 8, 20);//uid处理线程 if(CardDeal_Thread != RT_NULL) rt_thread_startup(CardDeal_Thread); SSD1306_Thread = rt_thread_create("SSD1306_Thread", SSD1306_Thread_Entry, RT_NULL, 2048, 7, 20);//OLED显示线程 if(SSD1306_Thread != RT_NULL) rt_thread_startup(SSD1306_Thread); ``` 作为一个门禁管理系统,肯定要能够存放卡号信息,以及刷卡记录等等,所以在本程序中使用了SD卡作为存储设备,在SD卡中存放了四个文件,如下图所示: ![image-20210511232000502](C:\Users\86714\AppData\Roaming\Typora\typora-user-images\image-20210511232000502.png) 在Finish终端中设计了10个命令来进行门禁系统的管理: 1. date--------------------------------------设置时间以及显示时间 例:date 2021 05 11 23 33 30 2. search_is_common_card----------查询卡号是否普通卡 例:search_is_common_card 777ed460 3. search_is_manage_card------------查询卡号是否为管理员卡 例:search_is_manage_card 777ed460 4. read_opentime------------------------读取通行时间 例:read_opentime 08001600 5. set_opentime---------------------------设置通行时间 例:set_opentime 08001600 6. delete_manage_card----------------删除管理员卡号 例:delete_manage_card 777ed460 7. delete_common_card--------------删除普通卡 例:delete_common_card 777ed460 8. add_common_card----------------增加普通卡 例:add_common_card 777ed460 9. add_manage_card-----------------增加管理员卡 例:add_manage_card 777ed460 10. delete_all_card----------------------删除所有卡号 ## 2.3调试过程 整体硬件图如下所示: QQ图片20210512215001 在设计的时候想着接个舵机来模拟一下开门的动作,可能电流太大把核心烧掉了,联系了RT-Thread淘宝客服,赠送了我两个,顺丰第二天就到了,到了我就马上焊上去,还好焊上去没出意外,十分感谢官方。 image-20210511234958958 image-20210512214407450 RT-Thread的Finish终端可以进行权限验证,输入密码正确才能使用,刚好可以拿来用 ![image-20210512215629990](C:\Users\86714\AppData\Roaming\Typora\typora-user-images\image-20210512215629990.png) 终端一共设计了10条命令 ![image-20210512215705929](C:\Users\86714\AppData\Roaming\Typora\typora-user-images\image-20210512215705929.png) 下面举几个例子说明具体的功能,全部的例子请看视频介绍: - 查询卡号是否为管理员卡 ![image-20210512215951008](C:\Users\86714\AppData\Roaming\Typora\typora-user-images\image-20210512215951008.png) - 设置、读取开门时间 ![image-20210512220042636](C:\Users\86714\AppData\Roaming\Typora\typora-user-images\image-20210512220042636.png) - 增加、删除普通卡 ![image-20210512220212291](C:\Users\86714\AppData\Roaming\Typora\typora-user-images\image-20210512220212291.png) - 读取刷卡记录 ![image-20210512220911173](C:\Users\86714\AppData\Roaming\Typora\typora-user-images\image-20210512220911173.png)