1 系统功能介绍
本设计是一个基于 STM32F103 单片机 的物联网火灾报警系统。通过 WiFi 模块接入中国移动 OneNet 平台,实现数据的远程传输与监控,结合多种传感器对火灾相关环境参数进行检测。当检测到异常时,系统将触发声光报警,并通过云平台上报告警信息,使用户能够通过互联网实时掌握情况,从而有效预防火灾的发生。
系统主要功能如下:
-
温湿度检测
系统利用温湿度传感器对环境温度和湿度进行实时监控,一旦温度超过设定阈值,则可能表明存在火灾隐患,需要及时告警。 -
火焰检测
借助火焰传感器识别火焰信号,当检测到可见火焰时,立即触发报警,并将信息上传至 OneNet 平台。 -
声光报警
当环境参数异常或火焰出现时,系统立即启动蜂鸣器发出报警声,并通过 LED 闪烁进行视觉提示,从而提醒现场人员注意。 -
数据上传与远程监控
STM32 通过 WiFi 模块将实时采集的温湿度、火焰状态等数据上传至 OneNet 云平台,用户可以通过网页或 APP 查看数据,并接收火灾报警通知。 -
远程可扩展功能
系统可进一步扩展,例如远程控制消防设备、智能联动排风扇或喷水装置,从而提升火灾防护水平。
2 系统电路设计
2.1 STM32 最小系统电路
核心控制单元为 STM32F103C8T6,该芯片具有 ARM Cortex-M3 内核,主频 72MHz,具备丰富的外设资源和低功耗特点,非常适合物联网应用。
最小系统包括:
- 电源模块:通过 AMS1117-3.3 稳压芯片为系统提供稳定的 3.3V 电源;
- 时钟模块:外接 8MHz 晶振,通过内部 PLL 倍频至 72MHz;
- 复位电路:上电复位和按键复位,保证系统稳定运行;
- SWD 下载接口:方便调试与程序烧录。
2.2 WiFi 模块电路
系统采用 ESP8266 WiFi 模块,其特点是低成本、低功耗,并且支持 TCP/IP 协议栈。
- 接口方式:串口 UART(TX、RX、GND、VCC);
- 电源:3.3V;
- 功能:与 OneNet 平台进行数据通信,实现传感器数据上传与报警信息推送。
2.3 温湿度传感器电路
温湿度检测模块可选择 DHT11/DHT22,通过单总线协议与 STM32 通信。
- 温度检测范围:0
50℃(DHT11),-4080℃(DHT22); - 湿度检测范围:20%RH ~ 90%RH;
- 接口:单总线,数据引脚接入 STM32 GPIO;
- 功能:实时监控环境温湿度,用于判断火灾风险。
2.4 火焰传感器电路
火焰传感器采用红外接收管,对火焰特征波段(700nm~1100nm)敏感,输出模拟电压。
- 接口:模拟量输出,接入 STM32 的 ADC 通道;
- 功能:当检测到火焰光谱时,输出电压发生变化,由单片机判断是否触发火灾报警。
2.5 蜂鸣器与 LED 电路
- 蜂鸣器电路:采用有源蜂鸣器,直接受 STM32 GPIO 控制,发生火灾时发出响亮报警声。
- LED 电路:采用高亮度 LED 作为报警灯,由 GPIO 控制点亮与闪烁,配合蜂鸣器形成声光报警系统。
2.6 显示电路(可选)
若需要本地查看数据,可接入 OLED 或 LCD1602 显示屏,通过 I2C/SPI 或并口与 STM32 通信,用于显示实时温湿度和火焰状态。
3 程序设计
系统软件设计采用 模块化结构,主要分为:主程序框架、传感器采集、数据处理与阈值判断、报警控制、WiFi 通信及 OneNet 平台交互几个部分。
3.1 主程序框架
#include "stm32f10x.h"
#include "wifi.h"
#include "sensor.h"
#include "buzzer.h"
#include "led.h"
#include "onenet.h"
int main(void)
{
SystemInit();
Sensor_Init();
LED_Init();
Buzzer_Init();
WIFI_Init();
OneNet_Init();
while(1)
{
Sensor_ReadAll(); // 读取温湿度和火焰信号
OneNet_UploadData(); // 上传数据到云平台
Control_Process(); // 判断阈值并执行报警
Delay_ms(1000); // 1s 周期
}
}
3.2 传感器采集程序
温湿度读取:
void Sensor_ReadAll(void)
{
temperature = DHT11_ReadTemp();
humidity = DHT11_ReadHumi();
flame_value = ADC_ReadChannel(FLAME_CHANNEL);
}
3.3 阈值判断与报警控制
void Control_Process(void)
{
// 温度超过阈值报警
if(temperature > TEMP_THRESHOLD || flame_value > FLAME_THRESHOLD)
{
Buzzer_On();
LED_Flash();
OneNet_SendAlert(); // 上传报警信息
}
else
{
Buzzer_Off();
LED_Off();
}
}
3.4 蜂鸣器与 LED 控制程序
void Buzzer_On(void)
{
GPIO_SetBits(GPIOB, GPIO_Pin_5);
}
void Buzzer_Off(void)
{
GPIO_ResetBits(GPIOB, GPIO_Pin_5);
}
void LED_Flash(void)
{
static uint8_t state = 0;
if(state)
GPIO_SetBits(GPIOC, GPIO_Pin_13);
else
GPIO_ResetBits(GPIOC, GPIO_Pin_13);
state = !state;
}
3.5 WiFi 通信与 OneNet 平台交互
系统通过 ESP8266 串口 AT 指令与 OneNet 交互,使用 MQTT 协议上传数据。
数据上传函数:
void OneNet_UploadData(void)
{
char data[128];
sprintf(data,"{\"temp\":%d,\"humi\":%d,\"flame\":%d}",
temperature, humidity, flame_value);
ESP8266_Send(data);
}
报警信息推送:
void OneNet_SendAlert(void)
{
char alert[64];
sprintf(alert,"{\"alert\":\"FIRE_WARNING\"}");
ESP8266_Send(alert);
}
4 总结
本设计实现了一个 基于 STM32F103 的物联网火灾报警系统,系统功能涵盖环境检测、火焰检测、声光报警以及云端数据上传。其主要特点如下:
- 实时检测:通过温湿度和火焰传感器,实时掌握环境参数;
- 声光报警:当异常发生时,蜂鸣器与 LED 提供即时报警提醒;
- 远程监控:利用 ESP8266 WiFi 模块将数据上传至 OneNet 平台,用户可远程查看与接收火灾报警;
- 系统扩展性强:可增加更多传感器或与消防设施联动,实现更高层次的智能防火。
该系统具有实现成本低、部署方便、应用广泛等优势,可应用于家庭、仓库、办公室等场所,为火灾预警提供可靠的技术支持。