基于STM32F103单片机智能门禁热释人体感应报警设计
1、系统功能介绍
- 系统构成:
- 系统由STM32F103C8T6单片机核心电路+拨动开关电路+按键电路+高亮LED灯电路+LCD1602液晶电路+蜂鸣器报警电路+GSM短信模块SIM800A电路+光敏电阻检测光照强度电路+热释红外感应模块E18电路+电源电路组成。
- 系统功能:
- 1、通过热释红外传感器检测是否有人,如果有人靠近门时,液晶屏提示亮并显示欢迎词:Welcome to home!,夜间探测到有人时开灯,灯用9个高亮LED灯设计,无人时,关灯。
- 2、主人可设定门禁系统工作状态,家里有人和无人两种状态。通过一个拨动开关设置,拨上去,液晶显示有人:Somebody!,拨下来液晶显示没人:Nobody!有人时,客人按下门铃,蜂鸣器鸣叫提示,无人时,客人按下门铃,无任何反应。
- 3、门外人员逗留时间超过一定时间则发出报警信息。
- 4、检测到有人或者没有人,有状态指示灯指示。
2、资料下载
- 资料下载:https://download.csdn.net/download/qq_39020934/85081039
- 包含程序源码、电路图源文件、器件清单、器件资料、参考论文、开题报告、任务书等
- 更多设计视频:https://space.bilibili.com/3537120073353692
3、系统电路介绍
3.1、STM32单片机最小系统设计
- STM32系列处理器是意法半导体ST公司生产的一种基于ARM 7架构的32位、支持实时仿真和跟踪的微控制器。选择此款控制芯片是因为本系统设计并非追求成本的最低或更小的功耗,而是在实现本设计功能的前提下能够提供更丰富的接口和功能以便于设计实验系统各实验项目所需的外围扩展电路。此款控制芯片在完成单片机课程的学习后上手较为容易,在医疗器械中应用广泛,具有很好的学习、实验研究价值。
- STM32的最小系统的硬件组成主要有:电源电路、复位电路、时钟电路、调试接口电路、启动电路。
- 电源 : 一般是3.3V输入作为STM32芯片的工作电压,实际中很多采用LDO将5V转换为3.3V进行供电,另外电路上还要加多个0.01uf去耦电容对输入电压进行滤波,稳定输入电压。
- 复位:STM32中有三种复位方式,分别为:上电复位、手动复位、程序自动复位。上电复位是指芯片根据外部搭建的复位电路,在上电的时候进行的复位;手动复位是指通过外部的复位电路自己手动进行复位;程序复位是在软件中通过代码对STM32芯片进行的复位。
- 单片机最小系统电路图如下图所示
- 实物图:
3.2、LCD1602液晶显示模块电路设计
-
LCD显示器分为字段显示和字符显示两种。其中字段显示与LED显示相似,只要送对应的信号到相应的管脚就能显示。字符显示是根据需要显示基本字符。本设计采用的是字符型显示。系统中采用LCD1602作为显示器件输出信息。与传统的LED数码管显示器件相比,液晶显示模块具有体积小、功耗低、显示内容丰富等优点,而且不需要外加驱动电路,现在液晶显示模块已经是单片机应用设计中最常用的显示器件了。LCD1602可以显示2行16个汉字。
-
电路原理图
-
-
实物图
-
3.3、HC-SR505人体热释感应模块电路设计
-
HC-SR505小型人体感应模块是基于红外线技术的自动控制产品,灵敏度高,可靠性强,超小体积,超低电压工作模式。广泛应用于各类自动感应电器设备,尤其是干电池供电的自动控制产品。
-
电路图
-
-
实物图:
-
3.4、光敏电阻传感器模块电路设计
-
光敏电阻是用硫化隔或硒化隔等半导体材料制成的特殊电阻器,其工作原理是基于内光电效应。光照愈强,阻值就愈低,随着光照强度的升高,电阻值迅速降低,亮电阻值可小至1KΩ以下。光敏电阻对光线十分敏感,其在无光照时,呈高阻状态,暗电阻一般可达1.5MΩ。光敏电阻的特殊性能,随着科技的发展将得到极其广泛应用。
-
电路原理图:
-
-
实物图:
-
4、程序设计
4.1、LCD1602初始化
void Lcd_Init( void ) //初始化
{
Lcd_GPIO_init();
delay_us(1500); //延时15ms
Lcd_Write_Command( 0x38,0); // 写指令38H 不检测忙信号
delay_us(500); //延时5ms
Lcd_Write_Command( 0x38,0); // 写指令38H 不检测忙信号
delay_us(500); //延时5ms
Lcd_Write_Command( 0x38,0); // 写指令38H 不检测忙信号
//以后每次写指令、读/写数据操作之前需检测忙信号
Lcd_Write_Command( 0x38,1); //显示模式设置
Lcd_Write_Command( 0x08,1); //显示关闭
Lcd_Write_Command( 0x01,1); //显示清屏
Lcd_Write_Command( 0x06,1); //显示光标移动设置
Lcd_Write_Command( 0x0C,1); //显示开、光标不显示
}
4.2、LCD1602显示字符串
void Lcd_Str(unsigned char x,unsigned char y, unsigned char *string) //向1602写一个字符串
{
Lcd_SetXY(x,y);
while(*string)
{
Lcd_Write_Data(*string);
string++;
}
}