0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

基于STM32设计的工地环境实时监测与控制系统

DS小龙哥-嵌入式技术 来源:DS小龙哥-嵌入式技术 作者:DS小龙哥-嵌入式技 2025-01-21 09:30 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

一、项目开发背景

随着城市化进程的推进,工地建设和拆迁作业逐渐增多,工地环境的空气污染、噪声污染等问题越来越严重。为了改善工地周边居民的生活环境和施工人员的工作环境,工地环境实时监测与控制系统应运而生。该系统通过实时监测空气中的PM2.5、噪声、温湿度等环境参数,将数据上传至云端平台进行存储和分析,从而实现对环境的实时监控和智能控制。

此外,本项目通过控制加湿系统降低空气中的粉尘浓度,确保工地作业环境符合安全和健康标准。通过将监测数据上传至云端服务器,项目还能够提供全面的环境可视化展示,便于施工方和管理方进行数据分析与决策。

image-20241225142059654

二、设计实现的功能

1. 支持检测空气中的PM2.5含量

系统通过使用夏普PM2.5传感器检测空气中的PM2.5浓度,并实时反馈到本地LCD显示屏,同时上传到云平台进行进一步分析。

2. 支持检测环境的噪声

通过噪声检测传感器检测周围环境的噪声水平,转换为电压信号,经过处理后得到噪声值,实时显示在LCD屏幕上并上传至云端。

3. 本地实时显示数据

采用1.44寸LCD显示屏,实时显示PM2.5浓度、噪声级别、温湿度值等环境数据,方便现场人员实时查看。

4. 数据上云并可视化展示

系统通过WIFI连接到华为云物联网服务器,实时上传采集到的环境数据。然后通过搭建自有的后端服务器,使用Python的socket模块从华为云获取数据,并通过Flask框架构建Web应用,展示环境监测数据的可视化大屏。

5. 设备端数据传输使用WIFI+MQTT协议

设备端(STM32)通过ESP8266模块连接WiFi,并使用MQTT协议将监测数据传输到华为云物联网平台。MQTT协议轻量且高效,非常适合物联网环境下的数据传输。

6. 加湿系统控制

当PM2.5浓度超过设定范围时,系统自动控制加湿器工作,通过继电器驱动喷洒水雾,降低空气中的粉尘浓度。

7. 支持环境温度和湿度检测

系统通过SHT30传感器实时监测环境的温度和湿度,数据通过STM32处理后显示在LCD上,并上传至云端平台。

三、项目硬件模块组成

  1. 主控芯片:STM32F103RCT6
    • 负责处理所有传感器的信号,控制加湿器,并进行数据上传。
    • 支持GPIO、ADCUART接口,适用于本项目的各项需求。
  2. PM2.5传感器(夏普)
    • 采用红外光散射原理,实时检测空气中的PM2.5浓度。
  3. 噪声传感器
    • 模拟输出,通过转换为电压信号来表示噪声的强度。
  4. LCD显示屏(1.44寸)
    • 用于实时显示环境数据,包括PM2.5浓度、噪声、温湿度等。
  5. ESP8266 WiFi模块
    • 提供无线连接功能,将设备端数据通过WiFi传输到云端。
  6. 继电器模块
    • 用于控制加湿器的开关,响应PM2.5浓度的变化,启动喷水加湿。
  7. SHT30温湿度传感器
    • 精度高,稳定性好,用于检测环境的温度和湿度。
  8. 电源模块USB供电)
    • 提供稳定的5V电源,确保系统运行。

四、设计思路

1. 硬件设计

  • 主控芯片STM32F103RCT6通过GPIO和ADC接口与PM2.5传感器、噪声传感器、SHT30温湿度传感器进行数据采集。
  • 通过UART接口与ESP8266通信,进行WiFi连接和MQTT协议数据传输。
  • LCD显示屏通过SPI接口与STM32连接,用于实时显示环境参数。
  • 使用继电器控制加湿器,当PM2.5浓度超标时启动加湿器,保持工地环境的稳定。

2. 软件设计

  • 使用Keil5开发环境编写STM32的控制程序,程序包括传感器数据采集、加湿器控制、LCD显示更新、WiFi连接、MQTT数据上传等功能。
  • 在后端,使用Python的socket模块建立与云服务器的通信,通过Flask框架提供Web界面,展示云端环境数据。

3. 数据上传和可视化

  • STM32通过ESP8266模块上传数据到华为云物联网平台,数据格式采用JSON。
  • 后端服务器通过MQTT协议从华为云获取实时数据,使用Flask框架展示数据,并通过前端大屏进行实时数据可视化。

五、系统功能总结

| 功能模块 | 具体内容 |

| ---------- | ------------------------------------------------------- |

| 环境监测 | 检测PM2.5、噪声、温湿度等环境数据 |

| 本地显示 | LCD显示屏实时显示各项监测数据 |

| 数据上传 | 通过WiFi将数据上传至华为云物联网平台 |

| 数据展示 | 使用Flask框架搭建Web应用,展示实时环境数据 |

| MQTT协议 | 设备端与云平台使用MQTT协议进行数据传输 |

| 加湿器控制 | 根据PM2.5浓度自动控制加湿器,降低空气中的粉尘浓度 |

| 后端服务器 | 使用Python和Flask框架搭建后端服务器,支持数据获取与展示 |

| 可视化大屏 | 提供前端大屏显示,实时显示环境数据 |

六、使用的模块的技术详情介绍

1. PM2.5传感器(夏普)

  • 工作原理:通过红外光散射原理检测空气中的颗粒物(如PM2.5)。
  • 输出信号:通过数字信号输出PM2.5的浓度,单位为µg/m³。
  • 精度:±10%(标准测试条件下)。

2. 噪声传感器

  • 工作原理:根据声音的强度变化,输出与噪声大小成比例的电压信号。
  • 输出信号:模拟电压输出。
  • 测量范围:一般为30dB至120dB。

3. SHT30温湿度传感器

  • 工作原理:通过电容式湿度传感器和温度传感器芯片实现高精度的温湿度检测。
  • 输出信号:通过I2C总线输出温度(°C)和湿度(%RH)值。
  • 精度:温度±0.3°C,湿度±2%RH。

4. ESP8266 WiFi模块

  • 技术特点:支持WiFi协议、TCP/IP协议栈,具有独立的处理能力,可以作为WiFi终端连接到网络。
  • 功能:用于无线数据传输,支持MQTT协议。

5. 继电器模块

  • 用于控制电气设备(如加湿器),响应系统的控制信号。

6. LCD显示屏

  • 技术特点:1.44寸的彩色LCD显示屏,分辨率128x128像素。
  • 用途:实时显示环境数据,便于现场人员查看。

七、总结

本项目设计了一个基于STM32的工地环境实时监测与控制系统,涵盖了空气质量、噪声、温湿度的检测与展示,数据上云并可视化展示,通过控制加湿器自动调节空气质量。系统结合硬件和软件的设计,实现了环境监测与控制的智能化与自动化,提升了工地环境的安全性和舒适度,具有较高的实用价值。

八、STM32代码设计

其他子模块(如PM2.5传感器、噪声传感器、SHT30温湿度传感器、LCD显示、WiFi模块ESP8266等)的驱动和功能已经写好,只需要在main.c中整合这些模块,实现系统的整体功能。为了简化代码,重点展示如何初始化和使用这些模块。

#include "stm32f1xx_hal.h"

#include "lcd.h"

#include "pm25.h"

#include "noise_sensor.h"

#include "sht30.h"

#include "wifi.h"

#include "mqtt.h"

#include "relay.h"


// 定义外部传感器和硬件接口

extern PM25_TypeDef pm25_sensor;    // PM2.5传感器实例

extern NoiseSensor_TypeDef noise_sensor;  // 噪声传感器实例

extern SHT30_TypeDef sht30_sensor;  // 温湿度传感器实例

extern Relay_TypeDef relay;         // 继电器控制实例

extern WifiModule_TypeDef wifi_module;  // ESP8266 WiFi模块

extern MQTT_Client_TypeDef mqtt_client;  // MQTT客户端


// 定义全局变量

float pm25_value = 0.0;    // 存储PM2.5浓度值

float noise_value = 0.0;   // 存储噪声值

float temperature = 0.0;   // 存储温度值

float humidity = 0.0;      // 存储湿度值


// 功能声明

void SystemClock_Config(void);

void MX_GPIO_Init(void);

void MX_USART1_UART_Init(void);

void MX_I2C1_Init(void);

void MX_SPI1_Init(void);


// 主程序

int main(void)

{

    // 初始化硬件

    HAL_Init();

    SystemClock_Config();

    MX_GPIO_Init();

    MX_USART1_UART_Init();

    MX_I2C1_Init();

    MX_SPI1_Init();


    // 初始化外设

    LCD_Init();      // 初始化LCD显示屏

    PM25_Init(&pm25_sensor);  // 初始化PM2.5传感器

    NoiseSensor_Init(&noise_sensor);  // 初始化噪声传感器

    SHT30_Init(&sht30_sensor);  // 初始化SHT30温湿度传感器

    Relay_Init(&relay);    // 初始化继电器

    Wifi_Init(&wifi_module);  // 初始化WiFi模块

    MQTT_Init(&mqtt_client);  // 初始化MQTT客户端


    // 连接WiFi网络

    if (Wifi_Connect(&wifi_module)) {

        printf("WiFi Connected.n");

    } else {

        printf("WiFi Connection Failed!n");

    }


    // 连接MQTT服务器

    if (MQTT_Connect(&mqtt_client)) {

        printf("MQTT Connected.n");

    } else {

        printf("MQTT Connection Failed!n");

    }


    // 主循环

    while (1)

    {

        // 1. 获取环境数据

        pm25_value = PM25_Read(&pm25_sensor);  // 读取PM2.5浓度

        noise_value = NoiseSensor_Read(&noise_sensor);  // 读取噪声值

        SHT30_Read(&sht30_sensor, &temperature, &humidity);  // 读取温湿度


        // 2. 显示数据到LCD

        LCD_Clear();

        LCD_DisplayString("PM2.5: %.2f µg/m³", pm25_value);

        LCD_DisplayString("Noise: %.2f dB", noise_value);

        LCD_DisplayString("Temp: %.2f C", temperature);

        LCD_DisplayString("Humidity: %.2f %%", humidity);


        // 3. 控制加湿器(如果PM2.5超标)

        if (pm25_value > 100.0) {  // 如果PM2.5浓度超过100 µg/m³,启动加湿器

            Relay_SetState(&relay, RELAY_ON);  // 打开加湿器

        } else {

            Relay_SetState(&relay, RELAY_OFF);  // 关闭加湿器

        }


        // 4. 上传数据到云端

        char payload[256];

        snprintf(payload, sizeof(payload), 

                 "{"pm25": %.2f, "noise": %.2f, "temperature": %.2f, "humidity": %.2f}", 

                 pm25_value, noise_value, temperature, humidity);

        

        // 发布数据到MQTT服务器

        MQTT_Publish(&mqtt_client, "environment/data", payload);


    }

}

代码解析

  1. 硬件初始化:
    • main()函数的开头,通过HAL_Init()初始化HAL库,然后调用各个硬件初始化函数初始化GPIO、串口、I2C和SPI接口。
    • 初始化LCD、PM2.5传感器、噪声传感器、SHT30传感器、WiFi模块和MQTT客户端。
  2. 环境数据采集:
    • 使用传感器驱动函数(如PM25_Read()NoiseSensor_Read()SHT30_Read())从相应的传感器获取PM2.5浓度、噪声值、温湿度值。
  3. 数据展示:
    • 使用LCD显示模块在LCD上显示PM2.5、噪声、温湿度数据。
  4. 加湿器控制:
    • 根据PM2.5浓度的阈值(如100 µg/m³),判断是否需要启动加湿器,通过Relay_SetState()数控制继电器开关。
  5. 数据上传:
    • 将读取的环境数据通过JSON格式上传至MQTT服务器。调用MQTT_Publish()将数据发布到指定的MQTT主题上。

以上代码展示了如何将各个子模块(传感器、WiFi、MQTT、继电器等)整合在一个STM32项目中,完成实时环境监测、数据展示、数据上传和控制加湿器的功能。

审核编辑 黄宇

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 控制系统
    +关注

    关注

    41

    文章

    7004

    浏览量

    114612
  • STM32
    +关注

    关注

    2314

    文章

    11214

    浏览量

    375466
  • 实时监测
    +关注

    关注

    1

    文章

    212

    浏览量

    13341
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    基于STM32与机智云的智能家居系统(完整项目)

    物联网与嵌入式技术推动智能家居成为主流,传统家居存在功能单一、监测不全、控制繁琐等缺陷。本文设计基于STM32F103C8T6与机智云平台的智能家居控制系统,通过多传感器采集
    的头像 发表于 05-15 18:04 240次阅读
    基于<b class='flag-5'>STM32</b>与机智云的智能家居<b class='flag-5'>系统</b>(完整项目)

    深入剖析AMC7891:高度集成的模拟监测控制系统

    深入剖析AMC7891:高度集成的模拟监测控制系统 一、引言 在电子设备的设计中,模拟监测控制功能至关重要。TI推出的AMC7891是一款高度集成、低功耗的模拟
    的头像 发表于 04-18 14:30 206次阅读

    大棚温度自动控制系统实时采集环境数据,远程管理温室

    大棚温度自动控制系统是一套以物联网+智能控制为核心的闭环解决方案,通过“实时感知—数据传输—智能决策—自动执行”,将棚内温度稳定在作物适宜区间,实现无人值守、精准控温、远程管理。 一、系统
    的头像 发表于 02-24 16:36 674次阅读

    控制模式的智能家居系统设计

    随着物联网技术的发展,智能家居的需求不断增加,但仍存在设备兼容性差和成本高等问题。本文提出了一种基于STM32单片机的多模式智能家居控制系统,该系统通过温湿度、光照强度和烟雾浓度传感器与OLED
    的头像 发表于 01-15 18:01 1016次阅读
    多<b class='flag-5'>控制</b>模式的智能家居<b class='flag-5'>系统</b>设计

    基于STM32的矿井作业环境监测系统的设计与实现

    煤矿开采作业中瓦斯爆炸等安全隐患严重,针对这一问题,设计了基于STM32的矿井环境监测系统。该系统实时
    的头像 发表于 12-05 18:04 1734次阅读
    基于<b class='flag-5'>STM32</b>的矿井作业<b class='flag-5'>环境监测</b><b class='flag-5'>系统</b>的设计与实现

    伺服电机控制系统的高宽带电流环参数设计

    上回我们介绍了EtherCAT是如何利用SSC产生的sync信号,与电机控制系统完成同步的,如此我们即可保证整个控制系统的同步性能伺服控制。在此基础上,伺服电机的实时精确
    的头像 发表于 11-17 09:53 8030次阅读
    伺服电机<b class='flag-5'>控制系统</b>的高宽带电流环参数设计

    基于STM32与LoRa的智慧工地扬尘在线监测系统设计与实战

    在线监测系统设计方案。文章将深度剖析硬件选型、电路设计、低功耗策略以及数据滤波算法,并分享在真实工地环境中遇到的挑战与解决方案。一、系统总体
    的头像 发表于 10-27 15:12 1326次阅读
    基于<b class='flag-5'>STM32</b>与LoRa的智慧<b class='flag-5'>工地</b>扬尘在线<b class='flag-5'>监测</b><b class='flag-5'>系统</b>设计与实战

    生态环境智慧监测系统方案

    在生态环境保护与治理体系中,精准掌握大气、水体、土壤等环境要素的实时状态,是开展污染防治、生态修复及环境决策的核心前提,直接关系到区域生态安全、人居
    的头像 发表于 10-22 17:10 943次阅读
    生态<b class='flag-5'>环境</b>智慧<b class='flag-5'>监测</b><b class='flag-5'>系统</b>方案

    工厂安全环境监测管理系统方案

    等。 传统的人工巡检与抄录汇总方式已难以满足实时、精准、全面的监测需求。因此,构建一套以工厂安全环境监测管理系统,实现数据的实时采集、传输、
    的头像 发表于 10-16 17:11 704次阅读
    工厂安全<b class='flag-5'>环境监测</b>管理<b class='flag-5'>系统</b>方案

    物联网温室智能化控制系统:实现精准环境调控与水肥管理

    智能化控制系统通过 “实时感知、数据传输、智能决策、自动执行” 的闭环管理,将温室环境调控、水肥供给、病虫害防控等环节标准化、精准化,成为推动温室种植从 “经验驱动” 向 “数据驱动” 转型的核心技术。 一、
    的头像 发表于 09-18 17:04 1384次阅读

    智慧工地管理系统正在公路建设中逐渐被广泛应用

    、费用管理、合同管理和资料管理等方面,为工地管理者提供了全方位的支持和帮助。        1、质量管理        智慧工地管理系统中的质量管理模块主要包括拌合站管理和梁场管理。拌合站管理通过
    的头像 发表于 08-28 08:48 728次阅读
    智慧<b class='flag-5'>工地</b>管理<b class='flag-5'>系统</b>正在公路建设中逐渐被广泛应用

    STM32项目分享:矿井环境监测系统

    01—项目简介1.功能详解STM32矿井环境监测系统功能如下:STM32F103C8T6单片机作为主控制器DS18B20测量
    的头像 发表于 08-16 10:03 1218次阅读
    <b class='flag-5'>STM32</b>项目分享:矿井<b class='flag-5'>环境监测</b><b class='flag-5'>系统</b>

    温度位元式控制系统与连续的PID控制系统的区别

    电子发烧友网站提供《温度位元式控制系统与连续的PID控制系统的区别.pdf》资料免费下载
    发表于 08-13 15:54 1次下载

    亩产飙升35%!智能控制系统如何用数据重塑水产养殖利润

    水产养殖作为现代农业的重要组成部分,其高效、可持续发展离不开智能化技术的支持。养殖环境监测控制系统作为现代水产养殖的核心技术之一,通过实时监测、数据分析和智能调控,显著提升了养殖效率和水产品
    的头像 发表于 07-16 18:13 712次阅读

    Linux系统环境监测终极指南

    Linux系统环境主要监测CPU、内存、磁盘I/O和网络流量。
    的头像 发表于 06-25 14:41 1091次阅读
    Linux<b class='flag-5'>系统</b><b class='flag-5'>环境监测</b>终极指南