详细介绍:基于stm32的物联网OneNet火灾报警系统

news/2025/10/31 20:07:22/文章来源:https://www.cnblogs.com/gccbuaa/p/19181167

基于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单片机是系统的核心控制部分,主要负责传感器数据采集、信号处理、逻辑判断和数据上传。

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

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


2.2 DHT11温湿度传感器电路

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

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

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


2.3 火焰传感器电路

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

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


2.4 蜂鸣器与LED报警电路

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

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

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


2.5 ESP8266 WiFi通信模块电路

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

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


2.6 OLED显示模块电路

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

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

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


3. 系统程序设计

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


3.1 主程序设计

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

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传感器,通过单总线协议读取温湿度值。

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口电平即可判断火焰状态。

uint8_t FireSensor_Read(void)
{
return GPIO_ReadInputDataBit(GPIOA, GPIO_Pin_1);
}

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


3.4 蜂鸣器与LED控制程序

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指令实现网络连接与数据上传。

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接口显示实时信息。

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/952182.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Java的实战与思想:从代码到架构的工程之美

Java最大的优势,不仅在于语言本身,更在于它形成了一整套企业级软件工程方法论。无论是传统的单体系统,还是现代的微服务与云原生架构,Java都具备系统化的开发、测试、部署与维护能力。 1. 分层架构(Layered Archi…

revit api创建风管

revit api创建风管public static Duct CreateDuct(Document doc) {ElementId systemTypeId, ductTypeId, levelId;systemTypeId = ductTypeId = levelId = ElementId.InvalidElementId;// 获取标高Idvar levelFilter =…

代码大全2 第四五章

读《代码大全 2》第四、五章,感觉像被老程序员拽着纠正自己的坏毛病,每句话都戳中日常编程的痛点。第四章讲变量命名和数据类型,以前写代码总图懒省事,变量叫个 “temp”“val” 就完事,结果过两天再看,根本记不…

mac | Windows 本地部署 Seata1.7.0,Nacos 作为配置中心、注册中心,MySQL 存储信息 - 教程

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

程序员修炼之道:从小工到专家读后感1

初闻《程序员修炼之道:从小工到专家》之名,以为是本堆砌进阶技巧的“武功秘籍”。但通读三分之一后豁然开朗,这本书更像一位历经千帆的技术前辈的箴言集,它不教具体语法,而是直指程序员成长的核心——如何建立职业…

代码大全2阅读1

初读《代码大全 2》时,我以为它只是一本罗列编码技巧的工具手册。但通读三分之一后才发现,这本书更像一位资深架构师的经验复盘,将编码从 “技术操作” 升华为 “工程思维”,彻底颠覆了我对 “写好代码” 的认知。…

代码大全2阅读2

通读《代码大全2,书中内容从编码前的准备工作深入到代码构建的核心环节,如循环结构优化、数据类型选择、函数设计原则等,让我对“优质代码”的理解从“可读”延伸到“高效”“可维护”,更深刻体会到编码中的工程思…

软件工程学习日志2025.10.30

在软件开发中,加密算法是保护数据安全的重要手段。不同的加密算法有着不同的特点和应用场景,如何优雅地组织和管理这些算法是一个值得探讨的问题。本文将介绍如何使用工厂方法模式构建一个灵活、可扩展的加密算法系统…

BOE(京东方)“百堂故宫传统文化公益课”暨2025照亮成长路收官 推动“科技+教育+文化”可持续发展

10月31日,BOE(京东方)“百堂故宫传统文化公益课”暨2025照亮成长路收官仪式在故宫博物院隆重举行。故宫博物院作为BOE(京东方)“照亮成长路”公益项目的重要合作伙伴,双方自2023年携手启动“百堂故宫传统文化公益…

Java的深层逻辑与未来生态延伸

Java虚拟机(JVM, Java Virtual Machine)是Java语言的核心所在。它不仅仅是一个“解释器”,更是一个高度优化的执行平台。JVM实现了Java的跨平台能力、内存管理与安全保障,是整个生态运转的基石。 1. JVM的工作流程…

软件工程学习日志2025.10.31

🌱 机器学习日常 | 用朴素贝叶斯挑个好瓜 ——从一道习题到生活化的分类思维 今天复习机器学习时,遇到一道用朴素贝叶斯分类器判断西瓜好坏的题目。样本的特征是:青绿色泽、浊响敲声、稍蜷根蒂、清晰纹理。需要根据…

Java:从跨平台梦想到生态帝国的编程语言

一、Java的诞生与发展历程 Java的故事始于20世纪90年代初。1991年,詹姆斯高斯林(James Gosling)和他的团队在Sun Microsystems公司启动了一个名为“Green”的项目,最初的目标是为家电设备开发一种可移植的编程语言…

MySQL COALESCE 函数使用详解

COALESCE 是 MySQL 中一个非常有用的函数,用于返回参数列表中的第一个非 NULL 值。下面详细介绍它的用法和示例。 基本语法COALESCE(value1, value2, ..., valueN)功能说明函数从左到右依次检查每个参数 返回第一个不…

[KaibaMath]1016 关于数列与其子数列下标不等关系的证明

[KaibaMath]1016 关于数列与其子数列下标不等关系的证明子数列是从原数列中按原顺序任意选取无穷多项组成的新数列。下面给出原数列下标与子数列下标不等关系的证明。

MySQL解析JSON格式字段并取出部分值的方式

在MySQL中,从JSON格式的字段中提取数据可以使用JSON_EXTRACT()函数,或者使用->操作符。 假设你有一个名为mytable的表,其中有一个json_data字段,它的数据类型是JSON,并且包含了一个JSON对象。{"name"…

【详细介绍】一种基于斜二进制的序列树上数据结构

简版。这个文大概是详细地讲讲上面那篇东西里第二种 ds 的原理和实现。不需要读者有太多前置知识。但熟知 BIT 原理将对理解本文有较大帮助。 由于没有查阅到相关资料,本文中的称呼全是作者瞎起的,还请勿要见怪。 作…

drm分析

drm架构是?主要函数有哪些?● DRM(Direct Rendering Manager)是Linux内核中负责管理显卡和GPU的核心子系统,支持硬件加速的2D/3D渲染、显示输出和内存管理。以下是其架构解析和关键函数:DRM核心架构graph LR A[用…

8、认识for循环

学习重点一、for循环的概念 二、for循环的基本格式 三、for循环的基本用法思考题如何打印2行星号,一行50个 ? 写下你的思考: 如何输出20行"hello world"? 写下你的思考:知识点 1、for循环的概念 循环结…

node.js安装搭建

node.js 说明 官网:https://nodejs.org/zh-cn nvm-windows Windows 安装 直接使用 nvm-windows 安装 Node.js:https://github.com/coreybutler/nvm-windows/releases nvm version nvm install latest nvm use 25.1.0…

102302156 李子贤 数据采集第二次作业

作业1 在中国气象网(http://www.weather.com.cn)给定城市集的7日天气预报,并保存在数据库。 (1)代码和运行结果点击查看代码 from bs4 import BeautifulSoup from bs4 import UnicodeDammit import urllib.reques…