实用指南:基于STM32单片机的OneNet物联网粉尘烟雾检测系统

news/2025/9/30 11:02:13/文章来源:https://www.cnblogs.com/slgkaifa/p/19120208

实用指南:基于STM32单片机的OneNet物联网粉尘烟雾检测系统

基于STM32单片机的OneNet物联网粉尘烟雾检测系统设计


1 功能介绍

随着工业化和城市化的加速发展,空气质量问题越来越受到人们的重视,尤其是粉尘和烟雾对人体健康和居住环境产生了显著影响。为了实现家庭、工厂、实验室等场所的空气质量智能监测,本设计基于STM32单片机构建了一个粉尘与烟雾检测系统,并接入OneNet物联网云平台,实现远程数据查看与实时控制。

本系统主要实现以下功能:

  1. 通过STM32单片机实时采集粉尘浓度和烟雾浓度数据,并将检测结果显示和处理;
  2. 通过WiFi模块将检测到的数据上传至OneNet物联网云平台,用户可通过手机APP或网页实时查看;
  3. 当烟雾浓度超过预设阈值时,系统会自动驱动舵机模拟窗户开启,以保证空气流通;当烟雾浓度恢复到正常水平时,窗户自动关闭;
  4. 当粉尘浓度超过设定阈值时,系统通过继电器驱动风扇进行通风,同时蜂鸣器报警,提醒用户采取相应措施;
  5. 整个系统可以在无人值守的情况下持续运行,适合环境监测与家庭安全防护场景。

通过该系统,用户不仅能够实时掌握周围环境中的粉尘与烟雾情况,还能够借助智能硬件联动措施降低风险,具备较高的实用价值。


2 系统电路设计

系统电路设计以STM32单片机为核心,扩展粉尘传感器、烟雾传感器、舵机、继电器、蜂鸣器及通信模块等外设,构成完整的监测与执行系统。以下分模块详细介绍。

2.1 主控芯片电路(STM32最小系统)

STM32F103C8T6作为系统的主控芯片,具备高速处理能力和丰富的外设接口,适用于多传感器数据采集与外设控制。最小系统电路包括:

2.2 粉尘浓度检测电路

粉尘浓度检测可选用GP2Y1010AU0F粉尘传感器,该传感器通过红外光散射原理检测空气中的粉尘颗粒浓度。其模拟信号输出接入STM32的ADC通道,经过模数转换后即可得到粉尘浓度值。该模块功耗低,适合连续监测。

2.3 烟雾浓度检测电路

烟雾检测采用MQ-2气体传感器,该传感器对烟雾、可燃气体等敏感,能够输出与浓度成比例的模拟电压信号。信号通过STM32的ADC接口采样,并与设定的阈值比较。该电路在系统中主要负责触发开窗动作。

2.4 舵机控制电路

舵机用于模拟窗户的开合状态,通过PWM波进行驱动。STM32的定时器输出PWM信号,不同的占空比对应不同的转角。烟雾超过阈值时,MCU输出控制信号使舵机旋转到“开窗”位置;恢复正常后舵机回到“关窗”位置。

2.5 风扇控制电路(继电器驱动)

当粉尘浓度过高时,系统通过继电器驱动直流风扇。继电器作为开关器件,能够承受较大电流,从而保证风扇稳定运行。控制信号来自STM32的GPIO口,经三极管放大后驱动继电器线圈,完成开关动作。

2.6 蜂鸣器电路

蜂鸣器作为报警提示装置,与STM32的GPIO口相连。当粉尘浓度超过设定阈值时,系统驱动蜂鸣器发声提醒用户。通过PWM控制可以实现间歇或连续报警。

2.7 OneNet通信电路

本系统选用ESP8266 WiFi模块作为通信媒介,通过UART接口与STM32连接。STM32通过AT指令或透传协议控制ESP8266接入WiFi,并通过MQTT协议将粉尘与烟雾浓度数据上传至OneNet平台,实现云端监测。

2.8 电源电路

整个系统采用5V直流电源输入,经过稳压电路输出3.3V供STM32及传感器使用,5V直接用于继电器和风扇驱动。为保证电源稳定性,设计中加入滤波电容和二极管防反接保护。


3 程序设计

程序设计包括传感器采集、阈值判断、执行机构控制及数据上传至OneNet平台四大部分。系统基于STM32标准外设库开发,采用C语言实现。

3.1 主程序设计

主程序负责调用各模块的初始化与运行逻辑,整体结构包括:系统初始化、传感器采集、阈值判断、执行控制、数据上传。

#include "stm32f10x.h"
#include "adc.h"
#include "usart.h"
#include "esp8266.h"
#include "servo.h"
#include "relay.h"
#include "buzzer.h"
#include "delay.h"
float dust_value;
float smoke_value;
float dust_threshold = 200.0;
float smoke_threshold = 300.0;
int main(void)
{
SystemInit();
USART1_Init(115200);
ADC_InitConfig();
ESP8266_Init();
Servo_Init();
Relay_Init();
Buzzer_Init();
while(1)
{
// 采集传感器数据
dust_value = Read_Dust();
smoke_value = Read_Smoke();
// 上传数据至OneNet
ESP8266_SendData(dust_value, smoke_value);
// 烟雾判断
if(smoke_value > smoke_threshold)
{
Servo_Open();
}
else
{
Servo_Close();
}
// 粉尘判断
if(dust_value > dust_threshold)
{
Relay_On();   // 打开风扇
Buzzer_On();  // 蜂鸣器报警
}
else
{
Relay_Off();
Buzzer_Off();
}
Delay_ms(1000);  // 每秒采集一次
}
}

3.2 粉尘浓度采集程序

float Read_Dust(void)
{
uint16_t adc_val;
float voltage, density;
adc_val = ADC_GetConversionValue(ADC1); // 假设通道接粉尘传感器
voltage = (adc_val / 4096.0) * 3.3;    // 转换为电压
density = voltage * 500;               // 简化公式:电压与浓度换算
return density;
}

3.3 烟雾浓度采集程序

float Read_Smoke(void)
{
uint16_t adc_val;
float voltage, concentration;
adc_val = ADC_GetConversionValue(ADC2); // 假设通道接烟雾传感器
voltage = (adc_val / 4096.0) * 3.3;
concentration = voltage * 600;         // 烟雾浓度换算
return concentration;
}

3.4 舵机控制程序

void Servo_Open(void)
{
TIM_SetCompare1(TIM3, 200);  // 设置PWM占空比对应开窗角度
}
void Servo_Close(void)
{
TIM_SetCompare1(TIM3, 50);   // 设置PWM占空比对应关窗角度
}

3.5 继电器与蜂鸣器控制程序

void Relay_On(void)
{
GPIO_ResetBits(GPIOB, GPIO_Pin_5);
}
void Relay_Off(void)
{
GPIO_SetBits(GPIOB, GPIO_Pin_5);
}
void Buzzer_On(void)
{
GPIO_SetBits(GPIOB, GPIO_Pin_6);
}
void Buzzer_Off(void)
{
GPIO_ResetBits(GPIOB, GPIO_Pin_6);
}

3.6 ESP8266通信程序

void ESP8266_SendData(float dust, float smoke)
{
char buffer[100];
sprintf(buffer,"{\"dust\":%.2f,\"smoke\":%.2f}",dust,smoke);
USART_SendString(USART1, "AT+CIPSEND=0,");
USART_SendString(USART1, buffer);
}

4 总结

本系统基于STM32单片机,结合粉尘传感器、烟雾传感器、继电器、舵机、蜂鸣器及ESP8266 WiFi模块,构建了一个功能完善的空气质量监测与控制平台。系统能够实时检测粉尘和烟雾浓度,并通过OneNet物联网平台实现远程查看,提升了用户对环境状况的感知能力。

在系统运行中,当烟雾超过阈值时,自动开启“窗户”保持空气流通;当粉尘超过阈值时,自动开启风扇并报警,提醒用户注意空气质量。系统具备自动化、实时性与远程监测三大优势,应用场景广泛,如家庭空气净化、实验室安全监控、工厂车间环境监测等。

通过该设计,可以有效提升空气质量管理水平,为人们创造更加安全健康的生活与工作环境。

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

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

相关文章

青岛专业公司网站设计wordpress自动安装

HTML学习第三天&#xff01; PS&#xff1a;牛牛只是每天花了1.5-2小时左右来学习HTML。 书接上回 HTML<div>和<span> HTML 可以通过<div> 和 <span>将元素组合起来。 HTML 区块元素 大多数 HTML 元素被定义为块级元素或内联元素。 块级元素在浏…

springboot3 mybatis 数据库操控入门与实战

springboot3 mybatis 数据库操控入门与实战pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "…

青岛网站设计工作室清远哪里有网页设计培训学费

比较器是一个简单的概念-在输入端对两个电压进行比较。输出为高或者低。因此&#xff0c;在转换的过程中为什么存在振荡。 当转换电平缓慢改变的时候&#xff0c;这个现象经常会发生。常常是由于输入信号存在噪声&#xff0c;因此在转换电平附近的轻微波动会引起输出端的振荡。…

解决winform调用wpf窗体时原窗体缩小的问题

在使用winform调用wpf窗体时,原来的winform窗体会缩小,同时分辨率会发生变化,用如下方法来解决这个问题。 方法一、 首先找到winform项目中的Properties ==>AssemblyInfo.cs,打开该文件,在末尾加入如下代码,之…

便宜的seo网站优化排名专业酒店设计网站建设

OTA简介 随着设备系统日新月异&#xff0c;用户如何及时获取系统的更新&#xff0c;体验新版本带来的新的体验&#xff0c;以及提升系统的稳定性和安全性成为了每个厂商都面临的严峻问题。OTA&#xff08;Over the Air&#xff09;提供对设备远程升级的能力。升级子系统对用户…

三明北京网站建设设计网站排名

[react] 怎么在JSX里属性可以被覆盖吗&#xff1f;覆盖的原则是什么&#xff1f; 会被覆盖&#xff0c;类似Object.assign&#xff0c;后面的覆盖前面的 个人简介 我是歌谣&#xff0c;欢迎和大家一起交流前后端知识。放弃很容易&#xff0c; 但坚持一定很酷。欢迎大家一起讨…

C# invoke C++ method

1. Platform Invocation (P/Invoke) Set C++ project as dll, compile, copy compiled c++ dll to C# bin/debug matched location //C++ // ConsoleApplication1.cpp : This file contains the main function. Progra…

本土化优势凸显:Gitee如何成为中国开发团队的效率引擎

本土化优势凸显:Gitee如何成为中国开发团队的效率引擎 在全球数字化转型加速的背景下,中国开发者正面临着独特的挑战与机遇。作为国内领先的代码托管平台,Gitee凭借其深度本土化服务和技术合规优势,正在重塑企业级…

Linux系统OOM终止Oracle进程

提供的系统日志截图,这是一次典型的 Linux 系统因内存不足(Out of Memory, OOM)而强制终止进程的事件。系统内核为了保护自身不被完全挂起,选择了终止占用大量内存的 Oracle 数据库进程。 核心问题分析:根本原因:…

实用指南:《C++进阶之C++11》【可变参数模板 + emplace接口 + 新的类功能】

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

Filebeat写ElasticSearch故障排查思路(上) - 教程

Filebeat写ElasticSearch故障排查思路(上) - 教程pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas"…

告别 “一刀切” 管理!MyEMS 为不同行业定制专属能源优化方案

在能源管理领域,“一刀切” 的粗放式管理曾是行业普遍痛点 —— 统一的节能指标、相同的管控策略,既无法适配不同行业的能源消耗特性,也难以解决企业个性化的能耗难题。随着 “双碳” 目标推进与企业降本需求升级,…

网站你应该明白我的意思吗二级分销

一、问题 什么是悬空指针&#xff1f;为什么会出现&#xff1f;我们该如何避免悬空指针的出现&#xff1f; 二、解答 在C语言中&#xff0c;悬空指针指的是指向已删除&#xff08;或释放&#xff09;的内存位置的指针。如果一个指针指向的内存被释放&#xff0c;但指针本身并未…

贵阳公司网站建立网站开发费待摊年限

在Android项目中&#xff0c;如果你想在一个Gradle文件中引入另一个Gradle文件&#xff0c;你可以使用apply from语句。以下是一个简单的例子&#xff1a; 假设你有一个通用的Gradle配置脚本common.gradle&#xff0c;它位于项目的根目录下。 common.gradle 文件内容示例&…

网站运营有前途吗设计一个自己的电商网站

Varjo 的新一代头显将世界上最先进的混合现实技术与顶尖的图形处理能力连接起来&#xff0c;满足最高级别的视觉保真度和沉浸感至关重要的工业用例。 光学设计的根本性突破 体验全新的沉浸感。大幅扩展的视野&#xff0c;跨越 120 x 105 度&#xff0c;打破了受人尊敬的“全双眼…

网站建设工作小组推进表怎样才能把网站做好

文章目录 前言1.群晖Synology Drive套件的安装1.1 安装Synology Drive套件1.2 设置Synology Drive套件1.3 局域网内电脑测试和使用 2.使用cpolar远程访问内网Synology Drive2.1 Cpolar云端设置2.2 Cpolar本地设置2.3 测试和使用 3. 结语 前言 群晖作为专业的数据存储中心&…

东莞制作网站公司企业网站风格

STM32——串口实践 1.蓝牙控制点灯 项目需求 通过蓝牙模块&#xff0c;实现手机控制蓝牙插座/风扇/灯。 本质&#xff1a; 采用蓝牙的透传功能&#xff1b; 控制 IO 口的输出。 硬件清单 HC01蓝牙模块 CH340 杜邦线 项目设计 HC01_TX – RX1 HC01_RX – TX1 项目…

Fourier Features Let Networks Learn High Frequency Functions in Low Dimensional Domains

[NIPS20] 建立“位置坐标-标量”的隐式神经表示过程中使用傅里叶特征映射对MLP性能增益的理论证明Fourier Features Let Networks Learn High Frequency Functions in Low Dimensional Domains 原文:从理论层面解释位…

「突发奇想,灵光乍现」 - hello

1. 困住自己的,是一种执着,和来自沉迷于某种欲望的享受。

BST(self saved)

#include<iostream> #include<cstdio> using namespace std; int root,tot; struct bst {int v,l,r,vnum,lnum;bst(){v=l=r=vnum=lnum=0;}void nw(int a){v=a;vnum=1;lnum=0;l=r=0;} }tree[1000010]; stru…