基于STM32设计的工地环境实时监测与控制系统
科技驱动的环保监测系统实时监控环境污染 #生活知识# #科技生活# #科技改变生活# #科技环保#
一、项目开发背景
随着城市化进程的推进,工地建设和拆迁作业逐渐增多,工地环境的空气污染、噪声污染等问题越来越严重。为了改善工地周边居民的生活环境和施工人员的工作环境,工地环境实时监测与控制系统应运而生。该系统通过实时监测空气中的PM2.5、噪声、温湿度等环境参数,将数据上传至云端平台进行存储和分析,从而实现对环境的实时监控和智能控制。
此外,本项目通过控制加湿系统降低空气中的粉尘浓度,确保工地作业环境符合安全和健康标准。通过将监测数据上传至云端服务器,项目还能够提供全面的环境可视化展示,便于施工方和管理方进行数据分析与决策。

二、设计实现的功能
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、ADC、UART等接口,适用于本项目的各项需求。 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项目中,完成实时环境监测、数据展示、数据上传和控制加湿器的功能。
【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
网址:基于STM32设计的工地环境实时监测与控制系统 https://www.yuejiaxmz.com/news/view/1103320
相关内容
基于STM32的家庭环境监测与控制系统设计.docx基于STM32的家庭环境监测与控制系统设计
基于STM32单片机家电控制及家居环境监测系统设计与实现
基于STM32的智能家居环境监测与控制系统毕业设计
基于STM32单片机的智能家居环境监测与控制系统设计
基于STM32的智能家居环境监测系统设计与实现.docx
基于STM32单片机家电控制及家居环境监测系统设计与实现共3篇.docx
基于STM32的智能家居环境监控与控制系统
基于STM32的智能家居环境监测系统设计
基于STM32的仓库环境监测系统的毕业设计