基于STM32单片机智能家居声音人体防盗GSM短信报警系统设计
1 功能介绍
随着智能家居技术的快速发展,安全问题越来越受到用户关注。传统的防盗系统往往依赖单一传感器或独立报警器,无法实现远程通知,也不能有效应对复杂的入侵情况。而基于 STM32 单片机的防盗系统通过多传感器融合检测与 GSM 短信通信,可以实现本地报警与远程告警的结合,从而大大提升家庭防护能力。
本系统主要功能如下:
- 声音检测报警:当声音传感器检测到异常声音信号(如玻璃破碎声、剧烈敲击声)时,系统会触发报警,并通过 GSM 模块向用户手机发送短信通知。
- 红外人体检测报警:利用红外避障传感器对入侵人员进行检测,当检测到有人进入时,同样触发报警并发送短信。
- 蜂鸣器声光报警:在触发异常情况时,系统会通过蜂鸣器进行声响提示,形成本地威慑作用。
- 短信周期性上报机制:为了避免同一入侵事件造成短信频繁发送,系统设计了 35 秒的间隔机制。在间隔时间内,系统会将所有触发事件记录下来,并在间隔到期时进行统一上报。
- 灵敏度可调:声音检测和红外检测模块均带有电位器,用户可根据实际环境调节传感器灵敏度,避免误报或漏报。
该设计结合了实时检测、本地报警、远程上报等功能,既能满足家庭用户日常的安全防护需求,也能为其他场景(如办公室、小型仓库)提供可扩展的安全解决方案。
2 系统电路设计
系统电路设计以 STM32F103C8T6 单片机为核心,外围连接 GSM 短信模块、声音检测模块、红外避障模块、蜂鸣器及电源电路。各部分功能如下。
2.1 主控单片机电路
主控芯片采用 STM32F103C8T6,其优势在于:
- 具备 72MHz 主频,运算能力较强,能够快速响应多路传感器的输入信号;
- 拥有丰富的 GPIO 接口,能够轻松驱动 GSM 模块、传感器和蜂鸣器;
- 集成多路串口,便于与 GSM 模块通信;
- 内部集成 Flash 和 SRAM,可满足数据存储和运行需求。
主控电路同时包含晶振电路、复位电路、电源滤波电路,确保系统稳定运行。
2.2 声音检测模块电路
- 当检测到超过阈值的声音时,传感器输出高电平信号至单片机 GPIO;
- 传感器上的电位器用于调节检测灵敏度,避免因环境噪声造成误报;
- STM32 通过检测该输入电平,判断是否触发声音报警。
2.3 红外避障传感器电路
红外避障传感器的基本原理是发射红外光,物体反射后被接收端接收,从而判断有无人存在。
2.4 GSM 短信模块电路
本系统选用 SIM900A GSM 模块,其特点是:
- 支持 GSM 短信收发和语音通话;
- 通过 UART 串口与 STM32 通信,采用 AT 指令控制;
- 工作电压为 3.7V-4.2V,需要独立稳压电源供电;
- 系统中配置 SIM 卡,便于短信报警发送。
2.5 蜂鸣器报警电路
蜂鸣器作为本地报警器件,当检测到异常情况时,STM32 输出 PWM 或高低电平信号驱动蜂鸣器发声,起到即时提示和威慑作用。
2.6 电源电路
3 程序设计
系统程序采用模块化设计,分为主控逻辑、声音检测程序、红外检测程序、GSM 短信模块程序、报警处理程序等部分。
3.1 主程序设计
主程序主要实现系统初始化与循环检测逻辑。
#include "stm32f10x.h"
#include "usart.h"
#include "sensor.h"
#include "gsm.h"
#include "buzzer.h"
int main(void)
{
// 系统初始化
SystemInit();
USART1_Init(9600); // GSM 模块通信串口
GPIO_Sensor_Init(); // 传感器 GPIO 初始化
Buzzer_Init(); // 蜂鸣器初始化
while(1)
{
Sensor_Check(); // 检测传感器状态
GSM_Report(); // GSM 短信上报
}
}
3.2 声音检测程序
声音检测通过 GPIO 读取高低电平实现。
uint8_t sound_flag = 0;
void Sensor_SoundCheck(void)
{
if(GPIO_ReadInputDataBit(GPIOA, GPIO_Pin_0) == 1) // 声音传感器接入PA0
{
sound_flag = 1;
Buzzer_On();
}
}
3.3 红外检测程序
红外检测与声音检测类似,通过 GPIO 检测。
uint8_t ir_flag = 0;
void Sensor_IRCheck(void)
{
if(GPIO_ReadInputDataBit(GPIOA, GPIO_Pin_1) == 1) // 红外传感器接入PA1
{
ir_flag = 1;
Buzzer_On();
}
}
3.4 GSM 短信模块程序
GSM 模块通过 AT 指令控制发送短信。
void GSM_SendMessage(char *phone, char *msg)
{
USART1_SendString("AT+CMGF=1rn"); // 设置短信模式
Delay_ms(200);
USART1_SendString("AT+CMGS="");
USART1_SendString(phone);
USART1_SendString(""rn");
Delay_ms(200);
USART1_SendString(msg);
USART1_SendData(0x1A); // 发送 Ctrl+Z 结束符
Delay_ms(5000);
}
3.5 报警处理程序
系统设置 35 秒的上报间隔机制,避免短信频繁发送。
uint32_t last_report_time = 0;
void GSM_Report(void)
{
uint32_t current_time = millis();
if(current_time - last_report_time >= 35000)
{
if(sound_flag || ir_flag)
{
if(sound_flag && ir_flag)
GSM_SendMessage("13800138000", "警告: 声音与人体异常同时触发!");
else if(sound_flag)
GSM_SendMessage("13800138000", "警告: 声音异常!");
else if(ir_flag)
GSM_SendMessage("13800138000", "警告: 检测到人体入侵!");
}
sound_flag = 0;
ir_flag = 0;
last_report_time = current_time;
Buzzer_Off();
}
}
4 总结
本系统基于 STM32 单片机,融合了声音检测、红外人体检测与 GSM 短信报警功能,形成了一套完整的智能家居防盗系统。其特点如下:
- 实时性强:能够快速检测到声音或人体入侵信号,并即时触发报警;
- 远程报警:通过 GSM 模块向用户手机发送短信,即使用户不在家也能实时获悉异常情况;
- 误报抑制:传感器灵敏度可调,短信报警设置 35 秒间隔,减少因频繁触发造成的干扰;
- 扩展性强:系统可拓展更多传感器,如烟雾传感器、门磁传感器,实现更加全面的家庭安全防护。
综上所述,本设计不仅在理论层面具备较高的研究价值,在实际应用中也能够有效提升家庭防护能力,为构建智能家居安全体系提供了可行的解决方案。
168