一、項(xiàng)目開發(fā)背景
隨著城市化進(jìn)程的推進(jìn),工地建設(shè)和拆遷作業(yè)逐漸增多,工地環(huán)境的空氣污染、噪聲污染等問題越來越嚴(yán)重。為了改善工地周邊居民的生活環(huán)境和施工人員的工作環(huán)境,工地環(huán)境實(shí)時(shí)監(jiān)測(cè)與控制系統(tǒng)應(yīng)運(yùn)而生。該系統(tǒng)通過實(shí)時(shí)監(jiān)測(cè)空氣中的PM2.5、噪聲、溫濕度等環(huán)境參數(shù),將數(shù)據(jù)上傳至云端平臺(tái)進(jìn)行存儲(chǔ)和分析,從而實(shí)現(xiàn)對(duì)環(huán)境的實(shí)時(shí)監(jiān)控和智能控制。
此外,本項(xiàng)目通過控制加濕系統(tǒng)降低空氣中的粉塵濃度,確保工地作業(yè)環(huán)境符合安全和健康標(biāo)準(zhǔn)。通過將監(jiān)測(cè)數(shù)據(jù)上傳至云端服務(wù)器,項(xiàng)目還能夠提供全面的環(huán)境可視化展示,便于施工方和管理方進(jìn)行數(shù)據(jù)分析與決策。
二、設(shè)計(jì)實(shí)現(xiàn)的功能
1. 支持檢測(cè)空氣中的PM2.5含量
系統(tǒng)通過使用夏普PM2.5傳感器檢測(cè)空氣中的PM2.5濃度,并實(shí)時(shí)反饋到本地LCD顯示屏,同時(shí)上傳到云平臺(tái)進(jìn)行進(jìn)一步分析。
2. 支持檢測(cè)環(huán)境的噪聲
通過噪聲檢測(cè)傳感器檢測(cè)周圍環(huán)境的噪聲水平,轉(zhuǎn)換為電壓信號(hào),經(jīng)過處理后得到噪聲值,實(shí)時(shí)顯示在LCD屏幕上并上傳至云端。
3. 本地實(shí)時(shí)顯示數(shù)據(jù)
采用1.44寸LCD顯示屏,實(shí)時(shí)顯示PM2.5濃度、噪聲級(jí)別、溫濕度值等環(huán)境數(shù)據(jù),方便現(xiàn)場(chǎng)人員實(shí)時(shí)查看。
4. 數(shù)據(jù)上云并可視化展示
系統(tǒng)通過WIFI連接到華為云物聯(lián)網(wǎng)服務(wù)器,實(shí)時(shí)上傳采集到的環(huán)境數(shù)據(jù)。然后通過搭建自有的后端服務(wù)器,使用Python的socket模塊從華為云獲取數(shù)據(jù),并通過Flask框架構(gòu)建Web應(yīng)用,展示環(huán)境監(jiān)測(cè)數(shù)據(jù)的可視化大屏。
5. 設(shè)備端數(shù)據(jù)傳輸使用WIFI+MQTT協(xié)議
設(shè)備端(STM32)通過ESP8266模塊連接WiFi,并使用MQTT協(xié)議將監(jiān)測(cè)數(shù)據(jù)傳輸?shù)饺A為云物聯(lián)網(wǎng)平臺(tái)。MQTT協(xié)議輕量且高效,非常適合物聯(lián)網(wǎng)環(huán)境下的數(shù)據(jù)傳輸。
6. 加濕系統(tǒng)控制
當(dāng)PM2.5濃度超過設(shè)定范圍時(shí),系統(tǒng)自動(dòng)控制加濕器工作,通過繼電器驅(qū)動(dòng)噴灑水霧,降低空氣中的粉塵濃度。
7. 支持環(huán)境溫度和濕度檢測(cè)
系統(tǒng)通過SHT30傳感器實(shí)時(shí)監(jiān)測(cè)環(huán)境的溫度和濕度,數(shù)據(jù)通過STM32處理后顯示在LCD上,并上傳至云端平臺(tái)。
三、項(xiàng)目硬件模塊組成
- 主控芯片:STM32F103RCT6
- PM2.5傳感器(夏普)
- 采用紅外光散射原理,實(shí)時(shí)檢測(cè)空氣中的PM2.5濃度。
- 噪聲傳感器
- 模擬輸出,通過轉(zhuǎn)換為電壓信號(hào)來表示噪聲的強(qiáng)度。
- LCD顯示屏(1.44寸)
- 用于實(shí)時(shí)顯示環(huán)境數(shù)據(jù),包括PM2.5濃度、噪聲、溫濕度等。
- ESP8266 WiFi模塊
- 提供無線連接功能,將設(shè)備端數(shù)據(jù)通過WiFi傳輸?shù)皆贫恕?/li>
- 繼電器模塊
- 用于控制加濕器的開關(guān),響應(yīng)PM2.5濃度的變化,啟動(dòng)噴水加濕。
- SHT30溫濕度傳感器
- 精度高,穩(wěn)定性好,用于檢測(cè)環(huán)境的溫度和濕度。
- 電源模塊(USB供電)
- 提供穩(wěn)定的5V電源,確保系統(tǒng)運(yùn)行。
四、設(shè)計(jì)思路
1. 硬件設(shè)計(jì)
- 主控芯片STM32F103RCT6通過GPIO和ADC接口與PM2.5傳感器、噪聲傳感器、SHT30溫濕度傳感器進(jìn)行數(shù)據(jù)采集。
- 通過UART接口與ESP8266通信,進(jìn)行WiFi連接和MQTT協(xié)議數(shù)據(jù)傳輸。
- LCD顯示屏通過SPI接口與STM32連接,用于實(shí)時(shí)顯示環(huán)境參數(shù)。
- 使用繼電器控制加濕器,當(dāng)PM2.5濃度超標(biāo)時(shí)啟動(dòng)加濕器,保持工地環(huán)境的穩(wěn)定。
2. 軟件設(shè)計(jì)
- 使用Keil5開發(fā)環(huán)境編寫STM32的控制程序,程序包括傳感器數(shù)據(jù)采集、加濕器控制、LCD顯示更新、WiFi連接、MQTT數(shù)據(jù)上傳等功能。
- 在后端,使用Python的socket模塊建立與云服務(wù)器的通信,通過Flask框架提供Web界面,展示云端環(huán)境數(shù)據(jù)。
3. 數(shù)據(jù)上傳和可視化
- STM32通過ESP8266模塊上傳數(shù)據(jù)到華為云物聯(lián)網(wǎng)平臺(tái),數(shù)據(jù)格式采用JSON。
- 后端服務(wù)器通過MQTT協(xié)議從華為云獲取實(shí)時(shí)數(shù)據(jù),使用Flask框架展示數(shù)據(jù),并通過前端大屏進(jìn)行實(shí)時(shí)數(shù)據(jù)可視化。
五、系統(tǒng)功能總結(jié)
| 功能模塊 | 具體內(nèi)容 |
| ---------- | ------------------------------------------------------- |
| 環(huán)境監(jiān)測(cè) | 檢測(cè)PM2.5、噪聲、溫濕度等環(huán)境數(shù)據(jù) |
| 本地顯示 | LCD顯示屏實(shí)時(shí)顯示各項(xiàng)監(jiān)測(cè)數(shù)據(jù) |
| 數(shù)據(jù)上傳 | 通過WiFi將數(shù)據(jù)上傳至華為云物聯(lián)網(wǎng)平臺(tái) |
| 數(shù)據(jù)展示 | 使用Flask框架搭建Web應(yīng)用,展示實(shí)時(shí)環(huán)境數(shù)據(jù) |
| MQTT協(xié)議 | 設(shè)備端與云平臺(tái)使用MQTT協(xié)議進(jìn)行數(shù)據(jù)傳輸 |
| 加濕器控制 | 根據(jù)PM2.5濃度自動(dòng)控制加濕器,降低空氣中的粉塵濃度 |
| 后端服務(wù)器 | 使用Python和Flask框架搭建后端服務(wù)器,支持?jǐn)?shù)據(jù)獲取與展示 |
| 可視化大屏 | 提供前端大屏顯示,實(shí)時(shí)顯示環(huán)境數(shù)據(jù) |
六、使用的模塊的技術(shù)詳情介紹
1. PM2.5傳感器(夏普)
- 工作原理:通過紅外光散射原理檢測(cè)空氣中的顆粒物(如PM2.5)。
- 輸出信號(hào):通過數(shù)字信號(hào)輸出PM2.5的濃度,單位為μg/m3。
- 精度:±10%(標(biāo)準(zhǔn)測(cè)試條件下)。
2. 噪聲傳感器
- 工作原理:根據(jù)聲音的強(qiáng)度變化,輸出與噪聲大小成比例的電壓信號(hào)。
- 輸出信號(hào):模擬電壓輸出。
- 測(cè)量范圍:一般為30dB至120dB。
3. SHT30溫濕度傳感器
- 工作原理:通過電容式濕度傳感器和溫度傳感器芯片實(shí)現(xiàn)高精度的溫濕度檢測(cè)。
- 輸出信號(hào):通過I2C總線輸出溫度(°C)和濕度(%RH)值。
- 精度:溫度±0.3°C,濕度±2%RH。
4. ESP8266 WiFi模塊
- 技術(shù)特點(diǎn):支持WiFi協(xié)議、TCP/IP協(xié)議棧,具有獨(dú)立的處理能力,可以作為WiFi終端連接到網(wǎng)絡(luò)。
- 功能:用于無線數(shù)據(jù)傳輸,支持MQTT協(xié)議。
5. 繼電器模塊
- 用于控制電氣設(shè)備(如加濕器),響應(yīng)系統(tǒng)的控制信號(hào)。
6. LCD顯示屏
- 技術(shù)特點(diǎn):1.44寸的彩色LCD顯示屏,分辨率128x128像素。
- 用途:實(shí)時(shí)顯示環(huán)境數(shù)據(jù),便于現(xiàn)場(chǎng)人員查看。
七、總結(jié)
本項(xiàng)目設(shè)計(jì)了一個(gè)基于STM32的工地環(huán)境實(shí)時(shí)監(jiān)測(cè)與控制系統(tǒng),涵蓋了空氣質(zhì)量、噪聲、溫濕度的檢測(cè)與展示,數(shù)據(jù)上云并可視化展示,通過控制加濕器自動(dòng)調(diào)節(jié)空氣質(zhì)量。系統(tǒng)結(jié)合硬件和軟件的設(shè)計(jì),實(shí)現(xiàn)了環(huán)境監(jiān)測(cè)與控制的智能化與自動(dòng)化,提升了工地環(huán)境的安全性和舒適度,具有較高的實(shí)用價(jià)值。
八、STM32代碼設(shè)計(jì)
其他子模塊(如PM2.5傳感器、噪聲傳感器、SHT30溫濕度傳感器、LCD顯示、WiFi模塊ESP8266等)的驅(qū)動(dòng)和功能已經(jīng)寫好,只需要在main.c
中整合這些模塊,實(shí)現(xiàn)系統(tǒng)的整體功能。為了簡(jiǎn)化代碼,重點(diǎn)展示如何初始化和使用這些模塊。
#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傳感器實(shí)例
extern NoiseSensor_TypeDef noise_sensor; // 噪聲傳感器實(shí)例
extern SHT30_TypeDef sht30_sensor; // 溫濕度傳感器實(shí)例
extern Relay_TypeDef relay; // 繼電器控制實(shí)例
extern WifiModule_TypeDef wifi_module; // ESP8266 WiFi模塊
extern MQTT_Client_TypeDef mqtt_client; // MQTT客戶端
// 定義全局變量
float pm25_value = 0.0; // 存儲(chǔ)PM2.5濃度值
float noise_value = 0.0; // 存儲(chǔ)噪聲值
float temperature = 0.0; // 存儲(chǔ)溫度值
float humidity = 0.0; // 存儲(chǔ)濕度值
// 功能聲明
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();
// 初始化外設(shè)
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網(wǎng)絡(luò)
if (Wifi_Connect(&wifi_module)) {
printf("WiFi Connected.n");
} else {
printf("WiFi Connection Failed!n");
}
// 連接MQTT服務(wù)器
if (MQTT_Connect(&mqtt_client)) {
printf("MQTT Connected.n");
} else {
printf("MQTT Connection Failed!n");
}
// 主循環(huán)
while (1)
{
// 1. 獲取環(huán)境數(shù)據(jù)
pm25_value = PM25_Read(&pm25_sensor); // 讀取PM2.5濃度
noise_value = NoiseSensor_Read(&noise_sensor); // 讀取噪聲值
SHT30_Read(&sht30_sensor, &temperature, &humidity); // 讀取溫濕度
// 2. 顯示數(shù)據(jù)到LCD
LCD_Clear();
LCD_DisplayString("PM2.5: %.2f μg/m3", pm25_value);
LCD_DisplayString("Noise: %.2f dB", noise_value);
LCD_DisplayString("Temp: %.2f C", temperature);
LCD_DisplayString("Humidity: %.2f %%", humidity);
// 3. 控制加濕器(如果PM2.5超標(biāo))
if (pm25_value > 100.0) { // 如果PM2.5濃度超過100 μg/m3,啟動(dòng)加濕器
Relay_SetState(&relay, RELAY_ON); // 打開加濕器
} else {
Relay_SetState(&relay, RELAY_OFF); // 關(guān)閉加濕器
}
// 4. 上傳數(shù)據(jù)到云端
char payload[256];
snprintf(payload, sizeof(payload),
"{"pm25": %.2f, "noise": %.2f, "temperature": %.2f, "humidity": %.2f}",
pm25_value, noise_value, temperature, humidity);
// 發(fā)布數(shù)據(jù)到MQTT服務(wù)器
MQTT_Publish(&mqtt_client, "environment/data", payload);
}
}
代碼解析
- 硬件初始化:
- 在
main()
函數(shù)的開頭,通過HAL_Init()
初始化HAL庫(kù),然后調(diào)用各個(gè)硬件初始化函數(shù)初始化GPIO、串口、I2C和SPI接口。 - 初始化LCD、PM2.5傳感器、噪聲傳感器、SHT30傳感器、WiFi模塊和MQTT客戶端。
- 在
- 環(huán)境數(shù)據(jù)采集:
- 使用傳感器驅(qū)動(dòng)函數(shù)(如
PM25_Read()
、NoiseSensor_Read()
、SHT30_Read()
)從相應(yīng)的傳感器獲取PM2.5濃度、噪聲值、溫濕度值。
- 使用傳感器驅(qū)動(dòng)函數(shù)(如
- 數(shù)據(jù)展示:
- 使用LCD顯示模塊在LCD上顯示PM2.5、噪聲、溫濕度數(shù)據(jù)。
- 加濕器控制:
- 根據(jù)PM2.5濃度的閾值(如100 μg/m3),判斷是否需要啟動(dòng)加濕器,通過
Relay_SetState()
函數(shù)控制繼電器開關(guān)。
- 根據(jù)PM2.5濃度的閾值(如100 μg/m3),判斷是否需要啟動(dòng)加濕器,通過
- 數(shù)據(jù)上傳:
- 將讀取的環(huán)境數(shù)據(jù)通過JSON格式上傳至MQTT服務(wù)器。調(diào)用
MQTT_Publish()
將數(shù)據(jù)發(fā)布到指定的MQTT主題上。
- 將讀取的環(huán)境數(shù)據(jù)通過JSON格式上傳至MQTT服務(wù)器。調(diào)用
以上代碼展示了如何將各個(gè)子模塊(傳感器、WiFi、MQTT、繼電器等)整合在一個(gè)STM32項(xiàng)目中,完成實(shí)時(shí)環(huán)境監(jiān)測(cè)、數(shù)據(jù)展示、數(shù)據(jù)上傳和控制加濕器的功能。
審核編輯 黃宇
-
控制系統(tǒng)
+關(guān)注
關(guān)注
41文章
6859瀏覽量
113170 -
STM32
+關(guān)注
關(guān)注
2301文章
11075瀏覽量
369423 -
實(shí)時(shí)監(jiān)測(cè)
+關(guān)注
關(guān)注
1文章
186瀏覽量
13124
發(fā)布評(píng)論請(qǐng)先 登錄
STM32項(xiàng)目分享:礦井環(huán)境監(jiān)測(cè)系統(tǒng)

手機(jī)APP遠(yuǎn)程控制,智能家居監(jiān)測(cè)、智能控制系統(tǒng)(STM32L4、服務(wù)器、安卓源碼)實(shí)例項(xiàng)目打包下載
STM32項(xiàng)目分享:室內(nèi)無線控制系統(tǒng)

手機(jī)APP遠(yuǎn)程控制,智能家居監(jiān)測(cè)、智能控制系統(tǒng)(STM32L4、服務(wù)器、安卓源碼)

灌區(qū)水情監(jiān)測(cè)及閘門智能控制系統(tǒng):實(shí)時(shí)通信+智能分析,真高效!#灌區(qū)信息化 #閘門智能控制系統(tǒng) #灌區(qū)量測(cè)水
工地AI行為識(shí)別系統(tǒng)作用
基于STM32設(shè)計(jì)的倉(cāng)庫(kù)環(huán)境監(jiān)測(cè)與預(yù)警系統(tǒng)

基于STM32單片機(jī)礦井礦工作業(yè)安全監(jiān)測(cè)設(shè)計(jì)
基于STM32設(shè)計(jì)的森林火災(zāi)監(jiān)測(cè)系統(tǒng)

自動(dòng)控制系統(tǒng)與物聯(lián)網(wǎng)的結(jié)合 自動(dòng)控制系統(tǒng)的實(shí)時(shí)監(jiān)測(cè)技術(shù)
日光溫室智能控制系統(tǒng)
智慧工地解決方案——工地環(huán)境監(jiān)測(cè)系統(tǒng)

花卉智能灌溉控制系統(tǒng)功能應(yīng)用
雞舍環(huán)境智能控制系統(tǒng)
STM32項(xiàng)目實(shí)戰(zhàn):基于STM32U5的智能燈光控制系統(tǒng)(LVGL),附項(xiàng)目教程/源碼

評(píng)論