1 系统功能介绍
本设计为基于STM32单片机的物联网OneNet火灾报警系统。系统通过采集环境中的温湿度、火焰检测数据,并结合物联网技术上传至OneNet云平台,实现远程监控和报警功能。系统还具备蜂鸣器报警、LED灯闪烁等本地报警功能,保证在火灾发生时能够及时发出警报。
系统功能包括:
- 温湿度检测:通过温湿度传感器实时监测环境的温湿度变化,及时发现火灾隐患。
- 火焰检测:通过火焰传感器实时监测环境中是否有火源,一旦发生火灾,系统会立即发出报警。
- 蜂鸣器报警:当检测到火灾时,蜂鸣器会发出警报声,提醒周围人员。
- LED灯闪烁:通过LED灯闪烁提示火灾发生,增强视觉警示效果。
- 数据上传:系统通过WiFi模块将数据实时上传至中国移动的OneNet物联网平台,方便用户远程查看。
- 远程监控:通过OneNet云平台,用户可以随时查看温湿度、火焰检测等数据,并接收火灾报警信息。
2 系统电路设计
系统电路设计包含多个模块,每个模块负责完成特定的任务。以下是各个模块的详细介绍:
2.1 STM32单片机电路
STM32F103单片机作为本系统的核心控制单元,负责数据处理、传感器控制、报警输出等任务。STM32F103具有多种I/O接口,适合用于物联网应用中的数据采集和传输。
- 输入接口:通过I2C接口与温湿度传感器、SPI接口与火焰传感器进行数据采集。
- 输出接口:通过GPIO口控制蜂鸣器、LED灯等报警装置。
- WiFi模块通信:通过USART接口与WiFi模块(如ESP8266)进行通信,将数据上传至OneNet云平台。
- 电源管理:STM32F103的电源电压为3.3V,可以通过稳压电源供电,确保系统稳定运行。
STM32F103的高性能和丰富的外设接口,使其能够高效地处理多种传感器的数据,并实现物联网功能。
2.2 温湿度传感器电路
系统使用DHT11或DHT22温湿度传感器进行环境温湿度的采集。DHT11是一款低成本的温湿度传感器,适用于家庭和小型设备的环境监测。DHT22则提供更高的精度,适用于需要精细监测的场合。
- 数据接口:DHT11/DHT22传感器通过单线协议与STM32单片机连接。
- 电源要求:DHT11/DHT22传感器工作在3.3V到5V的电压范围内,可以通过稳压电源为其供电。
- 功能:传感器能够实时采集环境的温度和湿度数据,并将数据传输至STM32单片机进行处理和上传。
温湿度传感器在本系统中的主要作用是监控环境的温湿度变化,及时发现火灾前兆。
2.3 火焰传感器电路
火焰传感器用于检测环境中的火焰信号。当火焰传感器检测到火源时,会向STM32单片机发送信号,触发报警。
- 数据接口:火焰传感器一般通过模拟信号输出,与STM32单片机的ADC接口连接。STM32通过ADC将模拟信号转换为数字信号,进行处理。
- 电源要求:火焰传感器的工作电压通常为5V。
- 功能:火焰传感器能够实时监测环境中的火源,一旦发现火焰信号,立即将数据传送给STM32。
火焰传感器是本系统的核心模块之一,能够迅速检测到火灾的发生,为报警系统提供必要的信息。
2.4 蜂鸣器模块
蜂鸣器用于火灾报警。当系统检测到火灾时,蜂鸣器会发出警报声,提醒人员注意。蜂鸣器通过GPIO口与STM32单片机连接。
- 控制方式:通过控制GPIO口的高低电平,STM32单片机可以启动蜂鸣器。
- 功能:当火灾被检测到时,蜂鸣器发出声音警报,持续时间由程序控制。
蜂鸣器提供了音响警报,使得火灾发生时能够及时引起注意。
2.5 LED灯模块
LED灯模块用于显示火灾警报状态。当系统检测到火灾时,LED灯会闪烁,提示人员发生火灾。LED灯通过GPIO口与STM32单片机连接。
- 控制方式:通过控制GPIO口的电平,STM32单片机控制LED灯的开关状态。
- 功能:当火灾发生时,LED灯开始闪烁,增强视觉警示效果。
LED灯模块通过视觉信号提醒人员及时注意火灾情况,增强了报警效果。
2.6 WiFi模块(ESP8266)
ESP8266 WiFi模块用于将火灾数据上传至OneNet云平台。ESP8266是一款低成本、低功耗的WiFi模块,广泛应用于物联网项目中。
- 通信接口:ESP8266通过USART接口与STM32单片机进行数据通信。
- 功能:将温湿度、火焰传感器的数据以及报警信息实时上传至OneNet云平台,方便远程监控。
WiFi模块为本系统提供了物联网功能,使得用户能够在任何地方通过互联网访问火灾报警信息。
3 程序设计
本系统的程序设计采用STM32 HAL库,程序结构清晰,主要分为数据采集、数据处理、报警控制、WiFi通信等模块。以下是各个模块的详细设计。
3.1 主程序
主程序负责初始化各硬件模块,进行主循环的控制。它会定时读取传感器的数据,并判断是否存在火灾。一旦发生火灾,主程序会触发蜂鸣器和LED灯的报警,并通过WiFi上传数据。
#include "stm32f1xx_hal.h"
#include "dht11.h"
#include "flame_sensor.h"
#include "wifi.h"
#include "led.h"
#include "buzzer.h"void SystemClock_Config(void);
void MX_GPIO_Init(void);
void MX_USART1_UART_Init(void);
void MX_I2C_Init(void);
void Sensor_Init(void);
void Data_Collect(void);
void Data_Upload(void);
void Alarm_Control(void);int main(void)
{HAL_Init();SystemClock_Config();MX_GPIO_Init();MX_USART1_UART_Init();MX_I2C_Init();Sensor_Init();while (1){Data_Collect();Data_Upload();Alarm_Control();HAL_Delay(1000); // 每秒采集一次数据}
}
3.2 数据采集程序
数据采集模块负责从传感器读取温湿度和火焰数据,并存储到相应的变量中。
温湿度采集
void Data_Collect_Temperature_Humidity(void)
{DHT11_ReadData(&temperature, &humidity);
}
火焰传感器采集
void Data_Collect_Flame(void)
{flame_status = FlameSensor_ReadData();
}
3.3 数据上传程序
数据上传模块通过ESP8266 WiFi模块将采集到的数据上传至OneNet云平台,用户可以远程查看火灾报警信息。
void Data_Upload(void)
{char data[100];sprintf(data, "Temperature=%d, Humidity=%d, FlameStatus=%d", temperature, humidity, flame_status);ESP8266_ConnectWiFi("SSID", "Password");ESP8266_SendData("http://api.onenet.com/data", data);
}
3.4 报警控制程序
报警控制模块负责根据火灾发生与否,触发蜂鸣器和LED灯的报警。
void Alarm_Control(void)
{if (flame_status == 1) {LED_Flash();Buzzer_On();} else {LED_Off();Buzzer_Off();}
}
4 总结
本文介绍了基于STM32的物联网OneNet火灾报警系统的设计与实现。系统通过温湿度传感器和火焰传感器实时监测环境数据,并结合WiFi模块将数据上传至OneNet物联网平台,实现远程监控。同时,通过蜂鸣器和LED灯提供本地报警,确保火灾发生时能够及时发出警报。系统的设计