基于STM32单片机智能家居声音人体防盗GSM短信报警系统设计
1 系统功能介绍
本设计是一套 基于STM32单片机的智能家居声音人体防盗GSM短信报警系统,系统融合了声音检测、红外避障检测、蜂鸣器报警以及 GSM 短信发送功能,可对家庭、办公室及仓库等场所实现全天候安全监控。系统具有高灵敏度、响应迅速、可远程报警和定时上报功能,能够及时提醒用户异常情况,有效保障财产安全与人员安全。
系统主要功能包括:
- 声音检测报警:通过声音传感器实时检测环境声音,当声音强度超过设定阈值时触发报警,并通过 GSM 模块发送短信至用户手机。
- 人体红外检测报警:红外避障传感器用于检测人体或物体移动,一旦检测到有人进入警戒区域,即触发报警并发送短信通知。
- 报警间隔机制:系统设置报警信息发送间隔约 35 秒,确保在连续触发的情况下不会频繁发送短信,同时记录异常触发次数。
- 蜂鸣器声光报警:在异常触发时蜂鸣器立即发出报警声,同时传感器的灵敏度可通过电位器进行调节,以适应不同环境的监控需求。
- 系统参数调节:用户可调节声音传感器和红外传感器的灵敏度,保证系统在不同场景下均能准确工作。
系统实现了 多传感器融合、实时报警、云端或手机远程通知 的智能防盗功能,为家庭和企业安全管理提供了一套完整可靠的解决方案。
2 系统电路设计
本系统电路主要由 STM32F103C8T6 核心控制模块、声音检测传感器模块、红外避障传感器模块、蜂鸣器报警模块、GSM 短信模块及电源模块组成。以下对各模块进行详细介绍。
2.1 STM32 单片机核心模块
-
功能:系统控制核心,负责传感器数据采集、报警处理、蜂鸣器控制以及 GSM 短信发送。
-
设计要点:
- STM32F103C8T6 提供丰富 GPIO、ADC 和 UART 接口,方便与各类传感器及 GSM 模块连接;
- 定时器用于定时轮询传感器数据和控制报警间隔;
- 系统电源采用稳压模块提供 3.3V 和 5V 电压,保证单片机和外设稳定工作;
- 上电复位和手动复位电路保证系统可靠启动。
2.2 声音检测传感器模块
-
功能:实时监测环境声音,并根据设定阈值判断是否触发报警。
-
设计要点:
- 传感器通过模拟量或数字量输出与 STM32 相连;
- 灵敏度可通过传感器上的电位器调节,适应不同环境噪声水平;
- STM32 通过 ADC 或数字接口读取声音传感器数据,并根据阈值判断是否触发报警事件。
2.3 红外避障传感器模块
-
功能:检测人体或物体移动,实现红外防盗功能。
-
设计要点:
- 传感器通过 GPIO 接口向单片机输出信号;
- 灵敏度同样可通过电位器进行调节;
- 当检测到有人进入警戒范围时,立即触发蜂鸣器报警,并通过 GSM 模块发送短信。
2.4 蜂鸣器报警模块
-
功能:在异常事件触发时提供声光报警。
-
设计要点:
- 蜂鸣器通过 STM32 GPIO 口或晶体管驱动;
- 触发时发出持续或间断报警声,与短信报警同步;
- 可结合 LED 指示灯实现声光报警效果,直观提示异常事件。
2.5 GSM 短信模块
-
功能:通过 GSM 网络向用户手机发送报警信息。
-
设计要点:
- GSM 模块通过 UART 与 STM32 通信,发送 AT 指令控制短信发送;
- 系统设定报警发送间隔约 35 秒,避免短信频繁发送;
- 支持发送多种报警信息,如声音触发报警、红外触发报警等。
2.6 电源模块
-
功能:为系统各模块提供稳定的电源供应。
-
设计要点:
- 提供 5V 电压给 GSM 模块供电,3.3V 电压给 STM32 与传感器模块供电;
- 电源带有过流、过压保护功能,确保系统在异常情况下仍能安全运行。
3 程序设计
程序采用模块化设计,实现系统初始化、声音检测、红外检测、蜂鸣器控制、GSM 短信发送及报警间隔管理。以下对各模块进行详细介绍。
3.1 系统初始化
#include "stm32f10x.h"
#include "sound_sensor.h"
#include "infrared_sensor.h"
#include "gsm_module.h"
#include "buzzer.h"
#include "timers.h"int sound_alarm_flag = 0;
int infrared_alarm_flag = 0;
int alarm_interval_counter = 0;void System_Init(void){SoundSensor_Init();InfraredSensor_Init();GSM_Init();Buzzer_Init();Timer_Init(); // 用于35s报警间隔计时
}
3.2 声音检测模块
void Sound_Monitor(void){int sound_level = SoundSensor_Read();if(sound_level > SOUND_THRESHOLD){sound_alarm_flag = 1;}
}
3.3 红外检测模块
void Infrared_Monitor(void){int infrared_state = InfraredSensor_Read();if(infrared_state == DETECTED){infrared_alarm_flag = 1;}
}
3.4 蜂鸣器控制模块
void Buzzer_Control(void){if(sound_alarm_flag || infrared_alarm_flag){Buzzer_ON();} else {Buzzer_OFF();}
}
3.5 GSM 短信发送模块
void GSM_Alarm(void){if(alarm_interval_counter >= 35){ // 间隔35秒发送一次if(sound_alarm_flag){GSM_SendSMS("Sound Alarm Detected!");sound_alarm_flag = 0;}if(infrared_alarm_flag){GSM_SendSMS("Infrared Alarm Detected!");infrared_alarm_flag = 0;}alarm_interval_counter = 0;}
}
3.6 主循环程序
int main(void){System_Init();while(1){Sound_Monitor();Infrared_Monitor();Buzzer_Control();GSM_Alarm();alarm_interval_counter++;Delay_1s(); // 延时1秒,模拟计时}
}
该程序通过循环检测声音和红外传感器状态,并在触发异常时控制蜂鸣器报警,同时通过 GSM 模块发送短信至用户手机,实现远程报警功能。系统通过定时器或循环计数实现短信发送间隔,保证不会因连续触发造成短信过于频繁发送,同时灵敏度可调,适应不同环境。