專題教學?️ 你每天呼吸的空氣乾淨嗎?用 Arduino 感測空汙狀態
近期,環境部於 11 月 21 日公告修正空氣污染防制區域劃分,將新北市、台中市、彰化縣、南投縣及嘉義市等五縣市增列為懸浮微粒 PM10 的三級防制區。這項政策調整標誌著政府在空氣品質管控上邁向更嚴格的標準,目的是加強資源分配與污染防制,以進一步改善大氣環境品質。
隨著空氣污染議題日益受到關注,空氣品質監測不再僅是政府的責任,民眾也應該參與其中。本篇文章將帶領讀者透過 DIY 的方式,使用 Arduino 和常見感測器,製作一個簡易的 PM2.5 空氣品質監測盒子,不僅能即時了解環境狀況,還能讓您更貼近環境保護的核心議題。
[embedyt] https://www.youtube.com/watch?v=VxutqnroLp8[/embedyt]
為了讓讀者能輕鬆製作屬於自己的 PM2.5 空氣品質監測盒子,我們將通過以下 4 個部分一步步帶您完成專案:
開起編輯器後,如下圖所示。
[註] 我們感測器雖然是 PMS5003,但 PMS7003 的程式碼可以通用。
存檔後,會產生兩種檔案,其中就有 ino 檔,後續要用 Arduino IDE 開啟。
選擇COM 號
上傳程式
按箭頭圖示即可上傳,如下圖所示。+
| 撰寫/攝影 | 許鈺莨 | ||
| 時間 | 1小時 | 材料 | |
| 難度 | 2(滿分5) | ||
- 硬體連接 本節將說明如何將 PMS5003 感測器、OLED 顯示模組以及其他元件與 Arduino 正確接線,確保硬體配置穩定運行。
- 下載程式編輯器 初學者可能尚未安裝 Arduino 開發環境,我們將介紹如何下載並設置 Arduino IDE,讓您的程式開發之旅順利起步。
- 程式撰寫 從感測器初始化到讀取數據,我們將提供詳細的程式碼解說,幫助您瞭解程式的每一部分功能,並將數據成功顯示在 OLED 上。
- 功能展示 最後,我們會展示完成的空氣品質監測盒子,並模擬在不同環境下的運作效果,讓您實際感受到此專案的實用性。
1、硬體連接
2、程式編輯器及程式下載
-
下載編輯器
開起編輯器後,如下圖所示。
3、撰寫程式
程式會需要用到4種圖形化模組-
首先是 PM5003 粉塵感測器
[註] 我們感測器雖然是 PMS5003,但 PMS7003 的程式碼可以通用。
-
OLED 圖形化模組程式
-
變數圖形化積木
-
時間圖形化程式
-
全部的程式碼
4、上傳程式碼
由於本專案無法直接 BlocklyduinoF2 圖形化介面燒錄,所以還需再使用Arduino IDE 修改程式。-
另存新檔產生 ino 檔
-
選擇要存到哪裡
-
建立檔案名稱
存檔後,會產生兩種檔案,其中就有 ino 檔,後續要用 Arduino IDE 開啟。
-
用Arduino IDE 開啟
-
開啟 PMS5003 的Arduino 程式
-
修改兩處程式碼
U8G2_SSD1306_128X64_NONAME_F_HW_I2C u8g2(U8G2_R2, /* reset=*/ U8X8_PIN_NONE);
改成
U8G2_SSD1306_128X64_NONAME_1_HW_I2C u8g2(U8G2_R2, /* reset=*/ U8X8_PIN_NONE);
[註]
全緩衝模式會佔用更多的 RAM,但可以提高繪製速度。而頁面緩衝模式,適合Arduino RAM 較少的開發板。
第2處: 將第11行程式
PMS::DATA_PMS ljj_pms_data;
修改成
PMS::DATA ljj_pms_data;
修改完的Arduino 程式總覽
//Generated Date: Mon, 25 Nov 2024 10:31:21 GMT
#include "PMS.h"
#include <SoftwareSerial.h>
#include <U8g2lib.h>
#include <Wire.h>
U8G2_SSD1306_128X64_NONAME_1_HW_I2C u8g2(U8G2_R2, /* reset=*/ U8X8_PIN_NONE);
SoftwareSerial ljjPmsSoftSerial(8, 9);
PMS pms(ljjPmsSoftSerial);
PMS::DATA ljj_pms_data;
void setup()
{
u8g2.begin();
u8g2.setFont(u8g2_font_10x20_me);
u8g2.disableUTF8Print();
ljjPmsSoftSerial.begin(9600);
delay(2000);
u8g2.setFont(u8g2_font_6x10_tf);
}
void loop()
{
if (pms.readUntil(ljj_pms_data)){
float PM1 = ljj_pms_data.PM_SP_UG_1_0;
float PM25 = ljj_pms_data.PM_SP_UG_2_5;
float PM10 = ljj_pms_data.PM_SP_UG_10_0;
u8g2.firstPage();
do {
u8g2.clearBuffer();
u8g2.setCursor(0,15);
u8g2.print("PM 1 (ug/m3): ");
u8g2.setCursor(90,15);
u8g2.print(PM1);
u8g2.setCursor(0,30);
u8g2.print("PM 2.5 (ug/m3): ");
u8g2.setCursor(90,30);
u8g2.print(PM25);
u8g2.setCursor(0,45);
u8g2.print("PM 10 (ug/m3): ");
u8g2.setCursor(90,45);
u8g2.print(PM10);
u8g2.sendBuffer();
} while ( u8g2.nextPage() );
}
delay(100);
}
完整積木程式下載:
https://reurl.cc/kMVQ3L
- 上傳程式
選擇COM 號
上傳程式
按箭頭圖示即可上傳,如下圖所示。+
5、功能展示

留言 💬 (0)
還沒有留言,來當第一個。