智能门禁系统电路设计与仿真实现
Circuit Design and Simulation Implementation of Intelligent Access Control System
DOI: 10.12677/csa.2024.146137, PDF, HTML, XML, 下载: 52  浏览: 91 
作者: 毛莎莎:山东总队青岛支队,山东 青岛;朱清超*, 宋晓鸥:武警工程大学信息工程学院,陕西 西安;毛诗思:湖北总队参谋部,湖北 武汉;高 岩:第一机动总队参谋部,河北 石家庄
关键词: 门禁系统上位机下位机串口通信Access Control System Upper Computer Lower Computer Serial Communication
摘要: 针对当前智能门禁系统上位机和下位机交互研究较少的问题,提出了上位机、下位机、串口电路的智能门禁系统一体化电路仿真模型。首先设计了由输入电路、控制器、报警电路等模块构成的下位机系统,并利用Keil、Proteus等软件和C语言实现电路控制功能;然后通过C#语言完成了上位机数据采集、密码更换和重置功能;最后通过串口通信组件实现了上位机和下位机的数据通信,并完成了整体电路测试整机测试。结果表明,智能门禁系统仿真模型初步具备了上位机和下位机数据交互的能力,为进一步深化系统研究奠定了模型基础。
Abstract: A simulation model of the intelligent access control system circuit is proposed to address the lack of research on the interaction between the upper and lower computers in the current intelligent access control system. Firstly, a lower computer system consisting of input circuits, controllers, alarm circuits, and other modules was designed, and circuit control functions were implemented using software such as Keil and Proteus, as well as C language; Then, the upper computer data collection, password replacement, and reset functions were completed using C# language; Finally, the data communication between the upper computer and the lower computer was achieved through serial communication components, and the overall circuit testing of the entire machine was completed. The results indicate that the simulation model of the intelligent access control system has the preliminary ability to interact data between the upper computer and the lower computer, laying a model foundation for further deepening system research.
文章引用:毛莎莎, 朱清超, 毛诗思, 高岩, 宋晓鸥. 智能门禁系统电路设计与仿真实现[J]. 计算机科学与应用, 2024, 14(6): 15-24. https://doi.org/10.12677/csa.2024.146137

1. 引言

随着城镇化建设的推进,人们对居住环境的安全性、生活的便捷性、数据的可追溯性、功能的集成性和扩展性提出了更高的要求,于是智能门禁系统电路的设计与开发随之产生。

当前关于智能门禁系统的研究,主要集中于实物硬件电路测试、模拟电路仿真、半实物仿真等方面[1] [2] [3]。其中实物硬件电路测试面向真实环境,搭建实际电路,实测系统性能,具有数据准确可靠的优势,但硬件成本投入较高且复现率低;半实物仿真降低了部分成本,提升了敏捷开发能力,但同样面临着数据复现问题;模拟电路仿真进一步降低成本,提高数据复现率,但精度与实际场景存在偏差,该问题可基于经验数据重复优化参数设置加以改善,近年来备受关注。文献[4]基于AT89C51,利用Keil和Proteus构建了汉字点阵显示系统,指出二者联合开发方式简单灵活易扩展。文献[5]基于Proteus和8086 CPU设计了智能家居虚拟仿真系统,解决疫情期间线上实践教学的难题,侧重下位机设计且仅实现了基础功能,缺乏整体系统性考虑。文献[6]基于AT89C51单片机,提出一种智能恒温系统,确保温度稳定在设定区间,超出预定区间智能告警,并基于Keil编程环境和Proteus软件仿真验证,对用户信号输入考虑不足。文献[7]瞄准聋哑人士或传染病医院等特殊应用场景,分析了语音或触摸技术的局限性,提出一种基于人体姿态识别的智能门禁系统,并通过Kinect、Unity3D、Mask RCNN等软件/模型进行了联合模拟仿真,进一步体现了智能门禁系统的个性价值所在及软件仿真的优势。文献[8]指出智能门禁系统可节省人力、物力,还能实时监控财产安全,基于PLC设计了九种模式智能门禁系统,仿真验证了系统的有效性,为论文门禁系统设计提供了一定参考,但该模型更多侧重教学实践,强化学员多角度认知,缺乏使用便利性的考量。文献[9]基于ARM芯片设计了一种温湿度检测、智能灯光、智能窗帘、远程控制等功能的智能家居系统,基于Proteus构建了模拟电路并实现性能分析,缺乏上位机的信号输入接口设计,人机交互功能不足。文献[10]面向住宅小区,基于STM32F103RET6单片机系统核心模块,引入语音识别和无线传输模块,采用客户/服务模式,利用机器学习训练模型,构建了声纹识别及密码确认智能门禁系统,为论文上位机与下位机的交互提供了借鉴,但方案冗余度较高且存在8%的稳态误差。

综上,利用Keil、Proteus、ARM、PLC等软件进行智能门禁系统模拟电路的研究已成为电路设计领域关注的重点,但当前研究多集中于后台/下位机电路的研究,与上位机/界面的交互研究较少,这与智能门禁系统的便捷性需求不符。为此论文面向智能门禁系统展开研究,统筹上位机和下位机数据交互的基础上,弱化复杂功能考量,侧重二者一体化模拟仿真电路设计,完成功能程序开发及整体电路测试,以期达到预期效果,为智能门禁系统的深度开发提供模型基础。

2. 智能门禁系统设计及实现

2.1. 智能门禁系统结构设计

门禁系统由上位机和下位机两部分构成,二者之间的数据交互由串口通信完成,模型整体结构如图1所示。

Figure 1. The overall structure sketch map of access control system design

1. 门禁系统设计整体结构图

2.1.1. 下位机

下位机完成门禁输入信息的采集、处理、对比及告警功能。信息采集用于获取门禁密码状态信息,可通过按键获得,也可由上位机输入信号回传;信息处理对按键或上位机回传密码解析,生成单片机可识别数字;对比是将解析密码与预置密码进行异或,以确定输入密码是否正确;告警完成密码不一致时的警告或报警功能。

2.1.2. 上位机

上位机完成人机交互、密码输入、密码重置、结果显示功能。人机交互用于采集用户信息,为用户提供可选操作等;密码输入为用户提供密码输入界面,为后续是否开锁或告警奠定基础;密码重置完成用户更换密码操作;结果显示用于显示时间、正确、错误、告警等信息。

2.1.3. 串口机制

上位机与下位机通过串口机制完成数据交互,不仅为上位机的输入信息回传至下位机单片机,还可以将单片机处理结果回传至上位机,并完成实时提醒和告警功能。

2.1.4. 编译平台

下位机通过Proteus建立门禁系统仿真电路,控制程序通过C语言由Keil软件生成.hex文件导入电路控制器完成信息处理及接口控制,串口通信通过Com1和Com2端口实现上行和下行信息传输,上位机利用C#语言实现人机交互。

2.2. 下位机设计及功能实现

2.2.1. 下位机仿真电路设计

下位机仿真电路由输入电路、控制器、电源时钟、显示单元、报警电路、串口电路和调整电路构成,如图2所示。输入电路完成密码数字输入采集,数字为0~9,考虑特殊字符,采用4 × 4按键阵列实现,支撑16个数字符号输入;控制器采用AT89C51单片机芯片,利用P2端口管脚高低电平组合控制显示电路结果;电源时钟为控制器AT89C51提供时钟脉冲和直流低电平,确保程序按步有序工作,电路由AT89C51中XTAL1和XTAL2引脚连接本地晶振和微调电容实现电路分频功能,为控制器提供时钟信号;显示单元用于实时显示输入数字,由7段数码管实现;串口电路完成上位机和下位机的信息交互,该功能由AT89C51中P3端口RXD和TXD基于中断模式实现,前者完成下行数据接收,后者完成上行信号传输,通过COMPIM完成串口连接,供串口组件调用;调整电路由功能性电容、电阻、电感等组件构成,调节时延、频率,驱动蜂鸣器、LED、数码管等正常工作。所有模块电路设计及参数取值见图3

Figure 2. Simulation circuit structure chart of lower computer

2. 下位机仿真电路结构图

Figure 3. Chart of the whole circuit structure

3. 整体电路结构图

2.2.2. 下位机程序设计

Figure 4. Flow chart of program design for lower computer

4. 下位机程序设计流程图

Table 1. Core function code for lower computer based on C language

1. 下位机核心功能代码C语言实现

//****************控制参数定义**********************//

#define GPIO_DIG P2 //单片机P2端口宏定义

unsigned char aa[]={0,0,0,0,0,0},b[]={1,2,3,4,5,6}, KeyValue;

//定义按键组合值、行列值和中间值;

//****************端口参数初始化**********************//

#define GPIO_KEY P1 //单片机P1端口宏定义

sbit buzzer=P3^7; sbit key1=P0^1; sbit key2=P0^2; sbit CL=P3^6;

//定义报警器、key1、key2、CL对应端口值

//*******************列扫描*************************//

switch(GPIO_KEY)case(0X07): KeyValue = 0; break;

//若GPIO_KEY的值为0x07,则设置KeyValue为0,以此类推更新KeyValue值

//*******************行扫描*************************//

case(0X0b): KeyValue = KeyValue + 4; break;

// 若GPIO_KEY的值为0x0b,则KeyValue增加4,以此类推更新KeyValue值

//********************按键消抖**********************//

if(key1==1){Delay10ms();}//确保按键值维持10ms,避免抖动

//******************按键组合判断********************//

if(aa[0]==b[0]&&aa[1]==b[1]&&aa[2]==b[2]&&aa[3]==b[3]&&aa[4]==b[4])

{CL = 0;//如果匹配,输出低电平

buzzer = 0;}else

{CL = 1; //否则输出高电平

buzzer = 1;}

//******************蜂鸣报警********************//

if(buzzer ==1)驱动蜂鸣器报警

else 蜂鸣器保持静音

下位机程序流程设计如图4所示,核心功能代码如表1所示。程序中定义P2端口、P3端口、独立按键、管脚参数,并初始化对应管脚值,如蜂鸣器初始化为P3第7管脚、CL初始化为P3第6管脚、行列按键值为0 × 0F等。而后进行列扫描,确定按键列数对应值,实现按键值参数的更新,各按键值等于按键列数值。而后在此基础上进行行扫描,确定按键行数对应值,按键值等于原值加行数*4所得结果,行数*4源于输入信息采用4 × 4独立按键矩阵作为输入,每增加一行,意味着增加4个元素。由于按键按下和松开过程存在上升沿和下降沿,若在相应时间内采集信号作为AT89C51输入,容易导致程序误判,因此需作按键消抖,本节采用延时方式消抖,根据单片机sheet参数说明,取经验参数10 ms作为消抖时延数值,至此可确保AT89C51对P2管脚高低电平的判定处于稳定状态,避免出现数字显示时的重叠现象。在P2管脚高低电平判断中,可采用轮训机制查询,当行按键值和列按键值均为高电平时,可确定独立按键位置及所对应数字,例如第1行第1列按键为高电平时,AT89C51识别为数字0 (16个数字为0~15),与原密码对比,若密码为0,则输入值正确,匹配成功,单片机大概率判定为用户输入,输出低电平,显示输入正常,否则输出高电平,驱动蜂鸣器,触发警报,警示危险。上述程序由Keil软件编译,生成.hex文件导入Proteus中AT89C51运行,实现AT89C51对管脚及外接电路的控制。

2.3. 上位机设计及功能实现

上位机完成信息判别、信息重置、人机交互、结果显示等功能。其中人机交互完成人体输入信号的采集、处理等功能,论文关注软件仿真,不涉及实际屏幕信号输入,在此人机交互界面由C#中Form组件表征;结果显示用于显示处理输入信息后的结果呈现,论文不涉及实际LED控制,在此利用Message Box弹窗功能实现结果显示。为此本节重点关注信息判别和信息重置即可。对于门禁系统,信息判别将输入密码通过串口传回下位机,与预置密码对比,若匹配成功,则完成开锁,否则清空输入界面重新输入或告警,该功能在下位机已经实现,在此不重复描述。信息重置分为发送密码和密码清除功能,前者用于修改密码,后者用于清空密码,实现流程、上位机界面、核心功能代码实现分别见图5图6表2所示。图5中左侧为发送密码流程,右侧为清除密码流程。不难看出,二者在执行过程中无本质差异,区别在于输入的是验证密码还是清空符号,在此仅对发送密码流程进行说明。

Figure 5. Flow chart of upper computer realization

5. 上位机实现流程图

Figure 6. Graphical interface and running result of the upper computer

6. 上位机界面及运行结果

Table 2. Core function code for upper computer based on C# language

2. 上位机核心功能代码C#语言实现

string password = textBox1.Text;//获取密码

if (password == "12345")//检查password变量是否等于字符串"12345"

{ progressBar1.Value = 1;//若相同进度条的Value属性设置为1

if (textBox2.Text == textBox3.Text) //检查textBox2和textBox3文本是否相同

{progressBar1.Value = 2;// 若相同,代码将进度条的Value属性设置为2

data = textBox3.Text; SendDataToSerialPort();//调用串口通信

progressBar1.Value = 3;// 进度条的Value属性设置为3

界面启动后,默认选择功能为发送密码,此时用于可分别在原密码、新密码、确认新密码三个标签文本框中输入原始密码和新密码,若输入原密码与预置密码相同,可提醒用户输入新密码,否则清空标签文本框,重新输入原密码。当原密码输入正确时,可输入新密码,并确认输入新密码,当二者相同时,认为用户趋于修改密码,点击发送密码功能,可完成密码更改,否则清空文本框内容,重新输入。类似的,清除密码可作同等处理。

3. 结果显示

1) 下位机电路结构

如前所述,下位机由输入电路、串口电路、时钟电路等六部分构成。电路连通后,无按键信号及上位机回传信号,故显示单元不显示数字,且没有激活报警电路,无报警信号产生,结果如图3所示。

2) 下位机运行结果

仿真过程密码设置为六位,按键按六次或上位机回传六位数字,单片机经过处理判断后,若密码输入正确,数字按序依次显示在数码管上,反之则驱动蜂鸣器电路完成报警功能。图7~9所示为上位机回传三位正常数字密码时对应结果。

Figure 7. Real time display of the first password number

7. 输入第一位密码实时显示

Figure 8. Real time display of the third password number

8. 输入第三位密码实时显示

Figure 9. Real time display of the sixth password number

9. 输入第六位密码实时显示

3) 上位机运行结果

上位机运行结果如图6所示,左侧为三个Label控件作为原密码、新密码、确认新密码标签使用,打开串口和关闭串口通过Virtual Serial Port Driver组件控制COMPIM口实现串口通信,右侧日期由Month Calendar控件获取本地时间并显示更新。值得注意的是,当执行打开串口操作时,相应按钮变成灰色,避免重复操作,执行关闭串口操作后按钮颜色恢复正常。

4) 整机运行结果

图10所示为打开串口操作过程,按钮变为灰色说明成功连接到虚拟串口,此时上位机和下位机成功通过虚拟串口通信。而后用户界原密码输入“12345”后可以在上位机的新密码控件处修改新密码。若输入的原密码错误或者确认新密码输入错误会导致上位机下方没有进度条信息或者卡住,反之则正常运行。同理点击清除密码,所有密码按照特殊符号显示。当所有密码输入完成后,若密码全部正确,二极管灯亮,蜂鸣器不响,开锁成功,反之蜂鸣器通过扬声器报警,图11所示为整机操作结果。

Figure 10. Open the serial port

10. 打开串口机制

Figure 11. Test results of the whole system

11. 整机测试效果

4. 结论

论文基于Keil、Proteus、C#等软件/语言环境,设计并实现了包含上位机和下位机的智能门禁系统,并完成了仿真测试。结果表明,所设计的系统具备了一定的人机交互、上位机与下位机系统、智能开锁功能。但也存在以下不足:一是为单机仿真测试模式,缺乏联网远程控制功能;二是仅设计了室外门禁系统,缺乏室内危险因素告警考量;三是功能较为单一,集成度不足。后期将对以上问题展开研究,以期为门禁系统的进一步应用提供一定的模型基础。

NOTES

*通讯作者。

参考文献

[1] 吕云飞, 冯舒扬, 兰德鑫, 等. 基于单片机的宿舍安全管理门禁系统[J]. 电子制作, 2023, 31(15): 35-39.
[2] 王春武, 欧松森, 李嘉琪, 等. 基于OBE单片机混合式教学的校园门禁系统设计[J]. 高师理科学刊, 2023, 43(4): 87-91.
[3] 李菲, 张晓荣. 基于Proteus仿真软件的数字电子时钟设计与实现[J]. 电脑知识与技术, 2023, 19(34): 41-44+51.
[4] 孙万麟, 宋莉莉, 韩晨. 基于Keil+Proteus的单片机实验设计及仿真[J]. 系统仿真技术, 2020, 16(3): 181-184.
[5] 刘书赫, 李兰英, 肖亮, 等. 基于Proteus和8086CPU的智能家居虚拟仿真系统设计[J]. 科技创新与应用, 2021, 11(22): 25-27.
[6] 陈娟. 一种智能恒温系统的设计与Proteus仿真[J]. 电子世界, 2021(21): 92-94.
[7] 陈司雄. 基于人体姿态识别的智能家居系统仿真研究[D]: [硕士学位论文]. 广州: 广东财经大学, 2022.
[8] 郭昊坤. 基于PLC的自动门禁系统的设计与仿真[J]. 无线互联科技, 2023, 20(11): 88-90.
[9] 焦展宇, 蔡希昌. 基于ARM的智能家居系统设计与Proteus仿真[J]. 电子技术, 2023, 52(8): 31-33.
[10] 常钰坤, 杨海燕, 陈潇杰, 等. 声纹识别的智能门禁系统设计及实现[J]. 电子制作, 2024, 32(3): 27-30.