基于单片机的智能门禁控制系统设计(mcuclub-dz-032毕业设计)

 最近设计了一个项目基于单片机的智能门禁控制系统设计,与大家分享一下:

一、基本介绍

项目名:基于单片机的门禁的设计
单片机:STM32F103C8T6
mcuclub-dz-032
功能简介:
1、通过扫码枪进行扫描二维码,当二维码识别成功,10s内需触发红外避障管,并通过红外测温模块进行测温,如果温度正常,则自动开锁,如果温度异常,则声光报警3次,锁不打开
2、通过RFID进行刷卡,当卡识别成功,10s内需触发红外避障管,并通过红外测温模块进行测温,如果温度正常,则自动开锁,如果温度异常,则声光报警3次,锁不打开
3、通过指纹模块,当指纹识别成功,10s内需触发红外避障管,并通过红外测温模块进行测温,如果温度正常,则自动开锁,如果温度异常,则声光报警3次,锁不打开
4、通过内部RTC时钟同步时间,从而获取年月日时分秒星期
5、通过按键可以修正时间、设置温度上下限值、添加删除二维码、RFID卡、指纹
6、通过OLED显示测量数据

二、32实物图

单片机型号:STM32F103C8T6

板子为绿色PCB板,两层板,厚度1.2,上下覆铜接地。元器件基本上为插针式,个别降压芯片会使用贴片式。

供电接口:TYPE-C

三、原理图

软件版本:AD2013

电路连线方式:网络标号连线方式

注意:原理图只是画出了模块的引脚图,而并不是模块的内部结构原理图

 四、PCB图

由原理图导出,封装很大一部分都是作者自己绘制,不提供封装库,只提供连接好的源文件。中间有一个项目编号,隐藏在单片机底座下,插入单片机后不会看到。

两层板,上下覆铜接地。

 五、系统框图

本设计以STM32单片机为核心控制器,加上其他模块一起组成此次设计的整个系统,其中包括控制部分、输入部分和输出部分。控制部分采用了STM32单片机控制器,其主要作用是获取输入部分的数据,经过内部处理,逻辑判断,最终控制输出部分。输入由四部分组成,第一部分是非接触温度检测模块,通过该模块检测指纹识别信息;第二部分是红外避障模块,通过该模块对人体温度进行测量;第三部分是按键模块,通过按键可以修正时间、设置温度上下限值、添加删除二维码、RFID卡、指纹;第四部分是供电模块,通过该模块可给整个系统进行供电。输出由七部分组成,第一部分是OLED显示模块,通过该模块可以显示监测的数据以及设置的阈值;第二部分是RFID刷卡模块,通过RFID进行刷卡,当卡识别成功,10s内需触发红外避障管,并通过红外测温模块进行测温,如果温度正常,则自动开锁,如果温度异常,则声光报警3次,锁不打开;第三部分是扫码枪模块,通过扫码枪进行扫描二维码,当二维码识别成功,10s内需触发红外避障管,并通过红外测温模块进行测温,如果温度正常,则自动开锁,如果温度异常,则声光报警3次,锁不打开;第四部分是指纹模块,通过指纹模块,当指纹识别成功,10s内需触发红外避障管,并通过红外测温模块进行测温,如果温度正常,则自动开锁,如果温度异常,则声光报警3次,锁不打开;第五部分是存储模块,通过存储模块对数据进行存储;第六部分是继电器模块,通过继电器控制系统对应的功能;第七部分是声光报警模块,当监测值不在设置的阈值内时进行声光报警。具体系统框图如图3.1所示。

六、软件设计流程

系统的主流程图如图4-2所示。在主程序中:首先对各个模块进行初始化,随后进入while主循环,在主循环中,首先进入第一个函数按键函数,该函数主要分为两部分,第一部分为调用按键扫描函数获取按键键值,第二部分通过按键可以修正时间、设置温度上下限值、添加删除二维码、RFID卡、指纹;紧接着进入第二个函数监测函数,该函数主要通过调用相应的驱动函数获取测量值。紧接着进入第三个函数显示函数,该函数显示监测值及阈值;最后进入第四个函数处理函数,该函数主要判断接触触发时间是否大于10S,如果大于10S,表明触发成功,进入下一步的数据监测,反之,启动声光报警系统触发报警,随后进入人体温度值判断,如果温度大于设置的最大值,则声光报警,如果温度小于设置的最小值,则声光报警,如果温度在设置的阈值之内,则取消声光报警,门正常打开,为业主提供通道。

 七、部分程序展示

软件版本:keil5

逻辑程序和驱动程序分开,分布于main.c和其他.c文件

*******处理函数
*****/
void Manage_function(void)
{
    if(flag_display == 0)                      //测量界面
    {
        if(flag_measuring == 1)
        {
            if(temp_count >= 2)                                    //如果温度检测完成
            {
                if(temp_value > temp_max*10 || temp_value < temp_min*10)  //温度异常声光报警
                {
                    if(beep_count == 0)
                        beep_count = 6;
                }
                else                                                                                                            //温度正常,开门
                {
                    RELAY_D = 1;
                    Delay_ms(1000);Delay_ms(1000);
                    RELAY_D = 0;
                }
                temp_count = 0;
                temp_value = 0;
                flag_measuring = 0;
                Oled_ShowString(4,0,"          ");
            }
            if(flag_10s == 1)                                        //如果10S没有检测完成,本次触发无效
            {
                flag_timer_begin_10s = 0;
                flag_10s = 0;
                flag_measuring = 0;
                temp_count = 0;
                temp_value = 0;
                Oled_ShowString(4,0,"          ");
            }
        }

        if(beep_count > 0)                                        //声光报警有计数时,声光报警
        {
            if(time_num % 3 == 0)
            {
                LED = ~LED;
                BEEP = ~BEEP;
                if(beep_count > 0)
          beep_count–;
            }
        }
        else
        {
            LED = 1;
            BEEP = 0;
        }
    }
    else                                                             //设置界面,关闭声光报警
    {
        flag_timer_begin_10s = 0;
        flag_10s = 0;
        flag_measuring = 0;
        temp_count = 0;
        temp_value = 0;
        LED = 1;
        BEEP = 0;
    }
}

物联沃分享整理
物联沃-IOTWORD物联网 » 基于单片机的智能门禁控制系统设计(mcuclub-dz-032毕业设计)

发表回复