基于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显示模块的协同工作,实现了火灾的实时监测、现场报警与物联网云端数据上传。系统具备响应迅速、稳定可靠、可扩展性强等特点,可广泛应用于智能建筑、仓库防火、实验室安全监控等场景,具有良好的实际应用价值与推广前景。

相关推荐
许商10 小时前
【stm32】【edgetx】解析链接脚本文件(ld)
stm32·单片机·嵌入式硬件
云山工作室12 小时前
基于单片机的三相逆变电源设计
单片机·嵌入式硬件·毕业设计·毕设
小咕聊编程13 小时前
【含文档+PPT+源码】基于微信小程序的农产品自主供销商城系统
微信小程序·小程序·毕业设计·农产品
羊羊小栈13 小时前
基于知识图谱(Neo4j)和大语言模型(LLM)的图检索增强(GraphRAG)的智能音乐推荐系统(vue+flask+AI算法)
人工智能·毕业设计·neo4j·大作业
国科安芯14 小时前
ASP3605电源芯片关键指标测试说明
功能测试·单片机·嵌入式硬件·pcb工艺
SundayBear14 小时前
LVGL 开发指南:从入门到精通的嵌入式 GUI 实战心法
单片机·嵌入式·lvgl
TDengine (老段)15 小时前
TDengine 时序函数 MAVG 用户手册
大数据·数据库·物联网·性能优化·时序数据库·iot·tdengine
弘毅 失败的 mian17 小时前
利用 VsCode + EIDE 进行嵌入式开发(保姆级教程)
经验分享·笔记·vscode·stm32·单片机·嵌入式硬件·eide
小龙报18 小时前
《KelpBar海带Linux智慧屏项目》
linux·c语言·vscode·单片机·物联网·ubuntu·学习方法