基于stm32的物联网OneNet火灾报警系统

基于STM32的物联网OneNet火灾报警系统设计


1. 系统功能介绍

本设计的主题为"基于STM32的物联网OneNet火灾报警系统",旨在利用物联网技术实现火灾的实时监测、报警与远程数据上传。系统以STM32F103单片机为核心控制器,通过温湿度传感器、火焰传感器实时采集环境信息。当检测到异常情况时,系统会立即触发蜂鸣器报警并点亮LED警示灯,同时将监测数据通过WiFi模块上传至中国移动OneNet云平台,实现远程火灾预警与环境监控。

系统主要功能如下:

  1. 温湿度实时检测:利用温湿度传感器实时采集环境温度与湿度数据,并在OLED屏幕上显示当前值。
  2. 火焰检测与报警:通过火焰传感器检测环境中是否存在火焰或强光变化,一旦检测到火焰,蜂鸣器与LED灯立即报警。
  3. 物联网数据上传:利用ESP8266 WiFi模块实现与中国移动OneNet物联网平台的数据交互,将温湿度、火焰状态等参数上传至云端。
  4. 远程监控:用户可通过手机或网页端查看实时的火灾环境数据。
  5. 本地显示与状态指示:OLED显示模块实时显示温湿度、火焰状态与网络连接状态,LED灯闪烁指示不同系统状态。

该系统集成了传感器采集、电路控制、数据通信和云端监控等功能,具备响应快速、可扩展性强、操作简便的特点,具有较高的实用价值和教学示范意义。


2. 系统电路设计

整个系统由以下几个模块组成:STM32F103单片机最小系统、DHT11温湿度传感器电路、火焰传感器模块、蜂鸣器与LED报警电路、ESP8266 WiFi通信模块、电源模块和OLED显示模块。下面将详细介绍各个模块的电路组成与工作原理。


2.1 STM32F103最小系统电路

STM32F103单片机是系统的核心控制部分,主要负责传感器数据采集、信号处理、逻辑判断和数据上传。

最小系统主要由以下部分组成:

  • 主控芯片:选用STM32F103C8T6,内置Cortex-M3内核,主频72MHz,具有丰富的外设接口。
  • 时钟电路:采用8MHz晶振作为系统时钟源,配合内部PLL倍频实现高频稳定运行。
  • 复位电路:由按键、上拉电阻与电容组成,用于手动复位单片机。
  • 供电系统:通过稳压芯片AMS1117-3.3V为主控芯片提供稳定的3.3V电源。

该部分为系统提供了稳定的控制平台,为外设通信与数据处理提供硬件基础。


2.2 DHT11温湿度传感器电路

DHT11是一种常用的数字温湿度传感器,具有体积小、响应快、价格低廉的特点。其通过单总线通信方式与STM32进行数据交互。

  • 信号接口:DHT11共有三根引脚,分别为VCC、GND和DATA。DATA引脚通过上拉电阻接入STM32的GPIO端口,实现数据读写。
  • 工作原理:传感器内部集成了电容式湿度传感器与NTC温度传感器,采集到的信号经过A/D转换后以数字信号输出。
  • 通信协议:DHT11采用特定的时序通信协议,主控通过发送起始信号,DHT11响应并发送40位的数据,其中包括温度整数、湿度整数及校验位。

该模块能为系统提供实时的温湿度环境信息,是火灾早期监测的重要依据。


2.3 火焰传感器电路

火焰传感器用于检测火焰的存在,其通过红外敏感二极管感知火焰辐射光谱。

  • 工作原理:火焰在燃烧时会释放特定波长(约760nm左右)的红外光,传感器通过滤波与放大电路检测该波段光信号。
  • 信号输出:火焰传感器一般提供模拟量输出(AO)与数字量输出(DO),本系统选用DO口连接STM32,通过GPIO读取火焰状态信号。
  • 报警触发:当火焰信号被检测到时,系统立即点亮红色LED并启动蜂鸣器报警。

火焰检测模块反应灵敏,能快速识别火焰出现,是系统的核心安全防护单元。


2.4 蜂鸣器与LED报警电路

报警模块由有源蜂鸣器与多色LED组成,用于在检测到火焰或异常温度时进行声光提示。

  • 蜂鸣器:采用有源蜂鸣器,直接由STM32控制,通过高低电平信号驱动。
  • LED指示灯:系统设置多种状态显示方式,如绿色表示正常、红色闪烁表示报警、黄色常亮表示网络未连接。

该模块通过GPIO口控制,能够及时提醒用户异常情况,增强系统的实时警示能力。


2.5 ESP8266 WiFi通信模块电路

ESP8266模块是系统连接OneNet物联网平台的关键部件。

  • 通信方式:采用UART串口通信方式,TXD、RXD分别连接STM32的USART1接口。
  • 供电电压:工作电压为3.3V,需注意与主控电平匹配。
  • 工作原理:STM32通过AT指令控制ESP8266连接WiFi热点,并将传感器数据上传至OneNet平台。

ESP8266具备高性价比和良好的网络兼容性,能有效实现设备到云端的数据传输。


2.6 OLED显示模块电路

OLED显示模块用于显示实时监测到的温湿度、火焰状态以及网络连接信息。

  • 通信接口:采用I2C通信方式,SCL与SDA分别连接STM32的PB6与PB7引脚。
  • 显示内容:包含温度、湿度、火焰状态以及WiFi连接状态等。
  • 刷新机制:系统通过定时任务定期刷新屏幕,确保显示数据实时更新。

OLED模块显示清晰、功耗低,适合嵌入式监测系统的使用。


3. 系统程序设计

本系统的软件部分采用模块化编程思路,主要包括主控程序、传感器数据采集模块、WiFi通信模块、显示模块与报警控制模块。整体程序采用Keil环境编写,C语言实现。


3.1 主程序设计

主程序负责系统初始化与主循环逻辑控制。包括时钟初始化、外设初始化、任务调度与数据上传。

c 复制代码
int main(void)
{
    SystemInit();
    OLED_Init();
    DHT11_Init();
    FireSensor_Init();
    ESP8266_Init();
    Buzzer_Init();
    LED_Init();
    
    OLED_ShowString(0,0,"Fire Alarm System");
    
    while(1)
    {
        DHT11_Read(&temperature, &humidity);
        fire_status = FireSensor_Read();
        
        OLED_ShowNum(0,2,temperature);
        OLED_ShowNum(0,3,humidity);
        
        if(fire_status == 1)
        {
            Buzzer_On();
            LED_RedBlink();
        }
        else
        {
            Buzzer_Off();
            LED_GreenOn();
        }
        
        ESP8266_SendData(temperature, humidity, fire_status);
        delay_ms(2000);
    }
}

3.2 温湿度检测程序设计

温湿度模块使用DHT11传感器,通过单总线协议读取温湿度值。

c 复制代码
void DHT11_Read(uint8_t *temp, uint8_t *humi)
{
    uint8_t buf[5];
    DHT11_Start();
    if(DHT11_Check() == 0)
    {
        for(uint8_t i=0;i<5;i++)
            buf[i] = DHT11_ReadByte();
        if(buf[4] == buf[0]+buf[1]+buf[2]+buf[3])
        {
            *humi = buf[0];
            *temp = buf[2];
        }
    }
}

该程序通过严格的时序控制读取数据,并校验结果,确保采集的温湿度数据准确可靠。


3.3 火焰检测程序设计

火焰传感器模块采用数字输出方式,读取GPIO口电平即可判断火焰状态。

c 复制代码
uint8_t FireSensor_Read(void)
{
    return GPIO_ReadInputDataBit(GPIOA, GPIO_Pin_1);
}

当检测到火焰信号为高电平时,系统将触发报警模块并上传数据。


3.4 蜂鸣器与LED控制程序

c 复制代码
void Buzzer_On(void)
{
    GPIO_SetBits(GPIOB, GPIO_Pin_10);
}

void Buzzer_Off(void)
{
    GPIO_ResetBits(GPIOB, GPIO_Pin_10);
}

void LED_RedBlink(void)
{
    GPIO_SetBits(GPIOB, GPIO_Pin_0);
    delay_ms(200);
    GPIO_ResetBits(GPIOB, GPIO_Pin_0);
}

void LED_GreenOn(void)
{
    GPIO_SetBits(GPIOB, GPIO_Pin_1);
}

该模块通过GPIO口实现蜂鸣器与LED灯的灵活控制,用于不同状态下的警示显示。


3.5 ESP8266 WiFi通信与OneNet数据上传

WiFi模块通过串口通信与OneNet平台交互,使用标准AT指令实现网络连接与数据上传。

c 复制代码
void ESP8266_SendData(uint8_t temp, uint8_t humi, uint8_t fire)
{
    char data[64];
    sprintf(data,"{\"temperature\":%d,\"humidity\":%d,\"fire\":%d}",temp,humi,fire);
    USART_SendString(USART1, "AT+CIPSEND=0,");
    USART_SendString(USART1, data);
    USART_SendString(USART1, "\r\n");
}

程序将温湿度与火焰状态封装为JSON格式数据,发送至OneNet平台进行远程存储与显示。


3.6 OLED显示程序设计

OLED模块通过I2C接口显示实时信息。

c 复制代码
void OLED_Display(uint8_t temp, uint8_t humi, uint8_t fire)
{
    OLED_ShowString(0,0,"Fire Alarm");
    OLED_ShowString(0,2,"Temp:");
    OLED_ShowNum(60,2,temp);
    OLED_ShowString(0,3,"Humi:");
    OLED_ShowNum(60,3,humi);
    
    if(fire)
        OLED_ShowString(0,4,"Fire: YES!");
    else
        OLED_ShowString(0,4,"Fire: NO");
}

该模块保证系统实时显示环境信息,方便用户本地监控。


4. 总结

本设计通过STM32F103单片机、DHT11温湿度传感器、火焰传感器、ESP8266 WiFi模块以及OLED显示模块的协同工作,实现了火灾的实时监测、现场报警与物联网云端数据上传。系统具备响应迅速、稳定可靠、可扩展性强等特点,可广泛应用于智能建筑、仓库防火、实验室安全监控等场景,具有良好的实际应用价值与推广前景。

相关推荐
Rotion_深39 分钟前
单片机 看门狗的作用
单片机·嵌入式硬件
Jason_zhao_MR2 小时前
RK3576机器人核心:三屏异显+八路摄像头,重塑机器人交互与感知
linux·人工智能·嵌入式硬件·计算机视觉·机器人·嵌入式·交互
San_a dreamer fish3 小时前
韦东山嵌入式入门笔记之——应用开发基础篇(七)电阻屏和电容屏
嵌入式硬件
【云轩】3 小时前
RS-485稳定通信的三大基石:接地、线序与终端电阻
单片机·嵌入式硬件
电鱼智能的电小鱼3 小时前
基于电鱼 ARM 工控机的AI视频智能分析方案:让传统监控变得更聪明
网络·arm开发·人工智能·嵌入式硬件·算法·音视频
充哥单片机设计4 小时前
【STM32项目开源】基于STM32的智能水质检测系统
stm32·单片机·嵌入式硬件
wuk9984 小时前
基于STM32平台的ADS1292心电采集驱动程序
stm32·单片机·嵌入式硬件
TDengine (老段)4 小时前
从 Wonderware 到 TDengine:大理卷烟厂的国产化转型之路
数据库·物联网·时序数据库·iot·tdengine·涛思数据
黑客思维者5 小时前
10kV及以下中低压配电物联网的核心技术挑战与工程落地困境
人工智能·物联网
gihigo19985 小时前
基于STM32F4系列MCU和CS5530 24位SDADC的称重传感器系统实现
stm32·单片机·嵌入式硬件