1. 系统功能介绍
本设计基于STM32F103C8T6单片机,结合声音检测传感器和红外避障传感器,实现智能家居防盗报警功能。系统能够实时监测环境中的声音和人体活动,当检测到异常情况时,蜂鸣器发出报警声,同时通过GSM短信模块向预设手机号码发送报警信息,实现远程即时提醒。
系统的主要功能如下:
- 声音检测传感器监测周围环境噪声,一旦超过灵敏度阈值,触发报警;
- 红外避障传感器监测人体移动,检测到有人靠近时触发报警;
- 报警信息通过GSM模块短信发送到手机,保证用户及时知晓异常;
- 短信报警采用定时发送机制,约35秒为一周期,周期内多次触发仅汇总一次发送,防止短信泛滥;
- 蜂鸣器在报警状态下持续鸣响,提供现场声响警示;
- 传感器灵敏度可通过电位器调节,适应不同环境需求。
本系统适合家庭、办公室及小型商业场所的安全防护,具有实时性强、报警准确、远程监控的优势。
2. 系统电路设计
系统主要由STM32F103C8T6单片机核心控制模块、声音检测传感器、红外避障传感器、蜂鸣器报警模块、GSM短信模块及电源模块组成。以下对各模块的电路设计作详细介绍。
2.1 STM32单片机核心控制电路
STM32F103C8T6作为系统的核心处理器,负责传感器数据采集、报警逻辑处理和GSM通信控制。
- 采用STM32F103C8T6芯片,主频72MHz,性能稳定且功耗较低;
- 配备标准外设接口:GPIO、ADC、USART、定时器等,用于连接传感器及通信模块;
- 使用外部晶振(8MHz)提供准确时钟,保证系统时序稳定;
- 供电电压3.3V,由电源模块稳压输出;
- 通过GPIO采集声音传感器和红外传感器数字信号;
- 通过USART接口与GSM模块通信,实现短信发送和接收控制。
2.2 声音检测传感器模块电路
声音检测模块用于监测环境中的声音强度,产生数字或模拟信号作为报警依据。
- 采用带有内置电位器的声音传感器模块,可调节灵敏度阈值;
- 输出信号为数字高低电平,直接连接至STM32的GPIO输入端口;
- 设计中加入滤波和电平保护电路,避免噪声干扰和GPIO口损坏;
- 传感器模块工作电压为3.3V,与单片机电源兼容。
2.3 红外避障传感器模块电路
红外避障传感器用于检测人体或物体靠近,触发防盗报警。
- 采用带调节电位器的红外避障模块,灵敏度可根据环境光线调节;
- 输出数字信号,连接至STM32另一GPIO输入口;
- 模块电源为3.3V,设计有稳压及滤波电路,保证稳定检测;
- 传感器能够快速响应运动目标,保证报警及时。
2.4 蜂鸣器报警模块电路
蜂鸣器模块负责声响报警,提示现场异常状态。
- 采用有源蜂鸣器,工作电压3.3V;
- 通过STM32的GPIO口控制,高电平驱动蜂鸣器鸣响;
- 设计简单的驱动电路,防止GPIO口过载损坏;
- 蜂鸣器发声音量足够大,适合家庭和办公环境使用。
2.5 GSM短信模块电路
GSM模块实现远程短信报警功能,将报警信息发送至指定手机。
- 采用常见SIM800系列GSM模块,支持标准AT命令集;
- 与STM32通过UART串口连接,波特率一般设为115200;
- 模块配备SIM卡槽,支持GSM网络通信;
- 设计电源电路确保模块稳定工作,含滤波与过流保护;
- 接收短信指令及发送报警信息均由STM32控制。
2.6 电源模块设计
系统采用5V外部电源输入,通过稳压芯片转换为3.3V供电。
- 设计稳压模块(如AMS1117-3.3)确保输出稳定;
- 加入滤波电容,减小电源噪声,提高系统稳定性;
- 设计保护电路,避免过压过流对模块损害;
- 保证系统各模块电源干净、可靠。
3. 程序设计
程序实现系统核心逻辑,涉及传感器信号采集、状态判断、报警控制、短信通信及定时管理。程序采用模块化设计,分为初始化、传感器读取、报警管理、短信发送和系统定时管理几大部分。
3.1 系统初始化
系统启动时,完成硬件和通信接口初始化。
- 初始化系统时钟、GPIO口、UART通信接口、定时器;
- 初始化蜂鸣器控制口为输出低电平(关闭状态);
- 配置声音检测和红外传感器输入口为GPIO输入;
- 初始化串口通信参数,准备与GSM模块交互。
void System_Init(void) {
HAL_Init();
SystemClock_Config();
MX_GPIO_Init();
MX_USART1_UART_Init();
Buzzer_Init();
Timer_Init();
}
3.2 传感器数据采集
- 通过GPIO读取声音传感器数字信号;
- 通过GPIO读取红外避障传感器数字信号;
- 根据传感器电位器设置的灵敏度,实时判断信号是否触发报警。
uint8_t Read_SoundSensor(void) {
return HAL_GPIO_ReadPin(SOUND_SENSOR_GPIO_Port, SOUND_SENSOR_Pin);
}
uint8_t Read_IRSensor(void) {
return HAL_GPIO_ReadPin(IR_SENSOR_GPIO_Port, IR_SENSOR_Pin);
}
3.3 报警逻辑与蜂鸣器控制
- 若声音传感器或红外传感器触发报警,系统启动蜂鸣器发声;
- 报警状态保持至少35秒,避免频繁切换;
- 在报警间隔内记录多次触发情况,35秒结束后统一短信上报;
- 无触发时关闭蜂鸣器,恢复监测。
void Alarm_Handler(void) {
if (sound_alarm_triggered || ir_alarm_triggered) {
HAL_GPIO_WritePin(BUZZER_GPIO_Port, BUZZER_Pin, GPIO_PIN_SET);
alarm_start_time = HAL_GetTick();
alarm_active = 1;
}
if (alarm_active) {
if ((HAL_GetTick() – alarm_start_time) > ALARM_INTERVAL) {
Send_Alarm_SMS();
alarm_active = 0;
HAL_GPIO_WritePin(BUZZER_GPIO_Port, BUZZER_Pin, GPIO_PIN_RESET);
sound_alarm_triggered = 0;
ir_alarm_triggered = 0;
}
}
}
3.4 GSM短信发送功能
- 利用USART接口发送AT命令控制GSM模块发送短信;
- 短信内容包括报警类型及时间戳;
- 短信发送后解析模块返回状态,确保发送成功;
- 支持短信发送错误重发机制,提升可靠性。
void Send_Alarm_SMS(void) {
char sms_content[100];
sprintf(sms_content, "Alarm triggered! Sound:%d IR:%d Time:%lu", sound_alarm_triggered, ir_alarm_triggered, HAL_GetTick()/1000);
HAL_UART_Transmit(&huart1, (uint8_t *)"AT+CMGF=1\\r\\n", strlen("AT+CMGF=1\\r\\n"), 1000);
HAL_Delay(100);
HAL_UART_Transmit(&huart1, (uint8_t *)"AT+CMGS=\\"+1234567890\\"\\r\\n", strlen("AT+CMGS=\\"+1234567890\\"\\r\\n"), 1000);
HAL_Delay(100);
HAL_UART_Transmit(&huart1, (uint8_t *)sms_content, strlen(sms_content), 1000);
HAL_UART_Transmit(&huart1, (uint8_t *)"\\x1A", 1, 1000); // Ctrl+Z结束发送
}
3.5 主循环程序设计
- 主循环不断轮询传感器状态;
- 根据采集到的状态更新报警标志;
- 调用报警处理函数,控制蜂鸣器和短信发送;
- 保持系统持续运行。
int main(void) {
System_Init();
while(1) {
if (Read_SoundSensor()) {
sound_alarm_triggered = 1;
}
if (Read_IRSensor()) {
ir_alarm_triggered = 1;
}
Alarm_Handler();
HAL_Delay(100);
}
}
4. 系统总结
本设计充分利用STM32F103单片机强大的处理能力和丰富的外设接口,实现了基于声音和红外传感的智能家居防盗报警系统。系统通过蜂鸣器实现现场警示,通过GSM短信模块实现远程报警,保障用户能够第一时间知晓安全隐患。
电路设计合理,模块分工明确,保证传感器信号稳定采集和准确处理。程序设计结构清晰,逻辑严密,既实现了实时检测,也保证了报警的合理间隔,避免短信骚扰。
该系统具有较好的实用价值和可扩展性,可进一步集成更多传感器或采用无线通信提升智能化水平,广泛适用于家庭、办公室等场所的安全监控需求。
评论前必须登录!
注册