问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

基于STM32单片机的智能家居防盗报警系统设计

创作时间:
作者:
@小白创作中心

基于STM32单片机的智能家居防盗报警系统设计

引用
CSDN
1.
https://blog.csdn.net/qq_39020934/article/details/142287788

本文介绍了一种基于STM32单片机的智能家居防盗报警系统设计,该系统集成了声音传感器、红外避障传感器、GSM短信模块和蜂鸣器等组件,能够实现声音和人体检测,并通过GSM网络发送报警短信。文章详细介绍了系统的硬件电路设计和部分软件代码实现,适合对嵌入式系统和物联网应用感兴趣的读者参考学习。

1、系统功能介绍

系统构成:

  • 本系统由STM32F103C8T6单片机核心板、蜂鸣器报警、声音检测传感器、红外避障传感器、GSM短信模块及电源组成。

系统功能:

  • 1、如果检测到有声音,则系统通过GSM模块给手机发送报警信息。
  • 2、如果红外避障传感器检测到有人,则系统通过GSM模块给手机发送报警信息。
  • 3、报警信息发送间隔约35s,在间隔时间内任何报警触发都会被记录下来,35s后根据触发情况再次上报。
  • 4、在触发异常情况时,蜂鸣器会报警。传感器可以通过传感器上的电位器调节检测的灵敏度。

可根据本篇文章完成毕业设计的开题报告、设计等

2、资料下载

3、系统电路介绍

3.1、STM32单片机最小系统设计

STM32系列处理器是意法半导体ST公司生产的一种基于ARM 7架构的32位、支持实时仿真和跟踪的微控制器。选择此款控制芯片是因为本系统设计并非追求成本的最低或更小的功耗,而是在实现本设计功能的前提下能够提供更丰富的接口和功能以便于设计实验系统各实验项目所需的外围扩展电路。此款控制芯片在完成单片机课程的学习后上手较为容易,在医疗器械中应用广泛,具有很好的学习、实验研究价值。

STM32的主要优点:

  • (1)使用ARM最新的、先进架构的Cortex-M3内核
  • (2) 优异的实时性能
  • (3) 杰出的功耗控制
  • (4) 出众及创新的外设
  • (5) 最大程度的集成整合
  • (6) 易于开发,可使产品快速将进入市场

单片机最小系统电路图如下图所示

实物图:

3.2、声音传感器模块电路设计

声音传感器说明

  • (1)可以检测周围环境的声音强度,使用注意:此传感器只能识别声音的有无(根据震动原理)不能识别声音的大小或者特定频率的声音。
  • (2)灵敏度可调(图中蓝色数字电位器调节)。
  • (3)工作电压3.3V-5V。
  • (4)输出形式 数字开关量输出(0和1高低电平)。

电路原理图:

实物图:

3.3、LED信号指示灯电路设计

LED灯即发光二极管,它是半导体二极管的一种,可以把电能转化成光能。发光二极管与普通二极管一样是由一个PN结组成,也具有单向导电性。在电路中,电阻的作用是限流,保护LED灯。只要单片机的控制引脚拉低,则LED灯亮,否则,LED灯不亮。其具体电路原理图如下图所示。注意灯的颜色或者数量可变。

电路原理图

实物图

3.4、GSM短信 SIM800A模块电路设计

GSM模块,是将GSM射频芯片、基带处理芯片、存储器、功放器件等集成在一块线路板上,具有独立的操作系统、GSM射频处理、基带处理并提供标准接口的功能模块。GSM模块具有发送SMS短信,语音通话,GPRS数据传输等基于GSM网络进行通信的所有基本功能。简单来讲,GSM模块加上键盘、显示屏和电池,就是一部手机。

SIM800A是一款两频GSM/GPRS模块,为SMT封装。其性能稳定,外观小巧,性价比高,能满足客户的多种需求。SIM800A工作频率为GSM/GPRS 900/1800MHz,可以低功耗实现语音、SMS和数据信息的传输。SIM800A尺寸为24243mm,能适用于各种紧凑型产品设计需求。

电路原理图:

实物图:

3.5、蜂鸣器报警电路电路设计

有源蜂鸣器是一种一体化结构的电子讯响器,采用直流电压供电,广泛应用于计算机、打印机、复印机、报警器、电子玩具、汽车电子设备、电话机、定时器等电子产品中作发声器件。本系统所采用的报警模块为5V有源蜂鸣器模块,电路中采用三极管9012来驱动,只要单片机控制引脚为高电平,蜂鸣器就会鸣叫报警,反之则不鸣叫,可以通过控制单片机引脚方波输出形式控制蜂鸣器的鸣叫方式。电阻为限流电阻,保护作用。

电路原理图:

实物图:

4、程序设计

4.1、LED指示灯初始化


void LED_Init(void)
{
 GPIO_InitTypeDef  GPIO_InitStructure;
     
 RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA|RCC_APB2Periph_GPIOC, ENABLE);	 //使能PA,PD端口时钟
    
 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8;				 //端口配置
 GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; 		 //推挽输出
 GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;		 //IO口速度为50MHz
 GPIO_Init(GPIOA, &GPIO_InitStructure);					 //根据设定参数初始化
 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_13;				 //端口配置
 GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; 		 //推挽输出
 GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;		 //IO口速度为50MHz
 GPIO_Init(GPIOC, &GPIO_InitStructure);					 //根据设定参数初始化
}
  

4.2、串口初始化


void uart_init(u32 bound){
  //GPIO端口设置
  GPIO_InitTypeDef GPIO_InitStructure;
  USART_InitTypeDef USART_InitStructure;
  NVIC_InitTypeDef NVIC_InitStructure;
  RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1|RCC_APB2Periph_GPIOA, ENABLE);	//使能USART1,GPIOA时钟
  USART_DeInit(USART1);  //复位串口1
  //USART1_TX   PA.9
  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9; //PA.9
  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;	//复用推挽输出
  GPIO_Init(GPIOA, &GPIO_InitStructure); //初始化PA9
  //USART1_RX	  PA.10
  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10;
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;//浮空输入
  GPIO_Init(GPIOA, &GPIO_InitStructure);  //初始化PA10
  //Usart1 NVIC 配置
  NVIC_InitStructure.NVIC_IRQChannel = USART1_IRQn;
  NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=1 ;//抢占优先级3
  NVIC_InitStructure.NVIC_IRQChannelSubPriority = 3;		//子优先级3
  NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;			//IRQ通道使能
  NVIC_Init(&NVIC_InitStructure);	//根据指定的参数初始化VIC寄存器
  //USART 初始化设置
  USART_InitStructure.USART_BaudRate = bound;//一般设置为9600;
  USART_InitStructure.USART_WordLength = USART_WordLength_8b;//字长为8位数据格式
  USART_InitStructure.USART_StopBits = USART_StopBits_1;//一个停止位
  USART_InitStructure.USART_Parity = USART_Parity_No;//无奇偶校验位
  USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None;//无硬件数据流控制
  USART_InitStructure.USART_Mode = USART_Mode_Rx | USART_Mode_Tx;	//收发模式
  USART_Init(USART1, &USART_InitStructure); //初始化串口
  USART_ITConfig(USART1, USART_IT_RXNE, ENABLE);//开启中断
  USART_Cmd(USART1, ENABLE);                    //使能串口 
}
  
© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号