Quantcast
Channel: CAVEDU教育團隊技術部落格
Viewing all articles
Browse latest Browse all 678

專題教學🌫️ 你每天呼吸的空氣乾淨嗎?用 Arduino 感測空汙狀態

$
0
0

近期,環境部於 11 月 21 日公告修正空氣污染防制區域劃分,將新北市、台中市、彰化縣、南投縣及嘉義市等五縣市增列為懸浮微粒 PM10 的三級防制區。這項政策調整標誌著政府在空氣品質管控上邁向更嚴格的標準,目的是加強資源分配與污染防制,以進一步改善大氣環境品質。

隨著空氣污染議題日益受到關注,空氣品質監測不再僅是政府的責任,民眾也應該參與其中。本篇文章將帶領讀者透過 DIY 的方式,使用 Arduino 和常見感測器,製作一個簡易的 PM2.5 空氣品質監測盒子,不僅能即時了解環境狀況,還能讓您更貼近環境保護的核心議題。

 

 

撰寫/攝影 許鈺莨
時間 1小時 材料
難度 2(滿分5)

 

為了讓讀者能輕鬆製作屬於自己的 PM2.5 空氣品質監測盒子,我們將通過以下 4 個部分一步步帶您完成專案:

  1. 硬體連接
    本節將說明如何將 PMS5003 感測器、OLED 顯示模組以及其他元件與 Arduino 正確接線,確保硬體配置穩定運行。
  2. 下載程式編輯器
    初學者可能尚未安裝 Arduino 開發環境,我們將介紹如何下載並設置 Arduino IDE,讓您的程式開發之旅順利起步。
  3. 程式撰寫
    從感測器初始化到讀取數據,我們將提供詳細的程式碼解說,幫助您瞭解程式的每一部分功能,並將數據成功顯示在 OLED 上。
  4. 功能展示
    最後,我們會展示完成的空氣品質監測盒子,並模擬在不同環境下的運作效果,讓您實際感受到此專案的實用性。

 

1、硬體連接

 

 

2、程式編輯器及程式下載

  • 下載編輯器

首先下載BlocklyduinoF2圖形化編輯器網址: https://reurl.cc/Eg21Aa,並解壓縮到桌面。

開啟BlocklyduinoF2圖形化編輯器

 

開起編輯器後,如下圖所示。

 

 

3、撰寫程式

程式會需要用到4種圖形化模組

  • 首先是 PM5003 粉塵感測器

吉哥積木 > 模組 > PMS7003 空品感測

[註] 我們感測器雖然是 PMS5003,但 PMS7003 的程式碼可以通用。

 

  • OLED 圖形化模組程式

法蘭斯積木 >  OLED 模組

 

  • 變數圖形化積木

變數中可以找到

 

  • 時間圖形化程式

時間 中可以找到

 

  • 全部的程式碼

 

4、上傳程式碼

由於本專案無法直接 BlocklyduinoF2 圖形化介面燒錄,所以還需再使用Arduino IDE 修改程式。

  • 另存新檔產生 ino 檔

 

  • 選擇要存到哪裡

 

  • 建立檔案名稱

可以任意命名,但不可以數字開頭。

 

存檔後,會產生兩種檔案,其中就有 ino 檔,後續要用 Arduino IDE 開啟。

 

  • 用Arduino IDE 開啟

Arduino IDE 在BlocklyduinoF2>arduino-1.8.19 > arduino.exe

 

  • 開啟 PMS5003 的Arduino 程式

 

  • 修改兩處程式碼

第1處: 將第7行的程式

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

 

 

  • 上傳程式

要選擇開發板類型,在 工具 > 開發板 >  Arduino AVR Boards  >  Arduino Uno

 

選擇COM 號

 

上傳程式

按箭頭圖示即可上傳,如下圖所示。+

 

5、功能展示

 

 

更多文章

Ardunio首次接觸就上手-動手做主題總攬

 

專題教學🌫️ 你每天呼吸的空氣乾淨嗎?用 Arduino 感測空汙狀態〉這篇文章最早發佈於《CAVEDU教育團隊技術部落格》。


Viewing all articles
Browse latest Browse all 678

Trending Articles