Raspberry Pi Pico W 環境監測:MQ-2 傳感器與 Make.com 整合
Raspberry Pi Pico W 連接 MQ-2 傳感器並透過 Make.com Webhook 上傳數據到 Notion ,並且當氣體濃度超過警戒值時,會透過 LINE Notify 來通知使用者。
📖 教案:使用 Raspberry Pi Pico W 進行空氣品質監測
🔹 課程目標
- 了解 MQ-2 煙霧傳感器 的原理及應用
- 學習 Raspberry Pi Pico W 如何連接 WiFi
- 學習如何透過 Make.com Webhook 來寫入數據到 Notion
- 設定 氣體警戒值,並透過 LINE Notify 發送警報通知
📌 一、所需設備
設備 | 數量 |
---|---|
Raspberry Pi Pico W | 1 |
MQ-2 煙霧傳感器 | 1 |
面包板 | 1 |
杜邦線 | 若干 |
📌 二、硬體連接
MQ-2 傳感器 | Raspberry Pi Pico W (GPIO) |
---|---|
VCC | 3.3V |
GND | GND |
A0 | A5 |
📌 三、程式說明
- 連接 WiFi
- 讀取 MQ-2 傳感器數值
- 透過 Make.com Webhook 上傳數據
- 當偵測到超標時,發送 LINE Notify
📌 四、完整程式
🔹 上傳數據到 Notion & 透過 LINE Notify 發送警報
#include <WiFi.h>
#include <HTTPClient.h>
#include <WiFiClientSecure.h>
#include <TridentTD_LineNotify.h>
// 🔹 WiFi 連線資訊
char SSID[] = "你的 WiFi 名稱";
char PASSWORD[] = "你的 WiFi 密碼";
// 🔹 Make.com Webhook URL(用於寫入 Notion)
const char* MAKE_WEBHOOK_URL = "https://hook.integromat.com/你的webhook網址";
// 🔹 LINE Notify Token(當氣體超標時發送警報)
#define LINE_TOKEN "你的 LINE Notify 金鑰"
// 🔹 MQ-2 煙霧傳感器
int gasSensor = A5;
int qualityLevel = 2; // 傳感器敏感度 (qualityLevel * 200 = gasValue)
// 🔹 氣體濃度警戒值
int GAS_WARNING_LEVEL = 500;
void setup() {
Serial.begin(115200);
// 連線到 WiFi
Serial.print("正在連接 WiFi: ");
Serial.println(SSID);
WiFi.begin(SSID, PASSWORD);
while (WiFi.status() != WL_CONNECTED) {
Serial.print(".");
delay(500);
}
Serial.println("\nWiFi 連線成功!");
Serial.print("IP 地址: ");
Serial.println(WiFi.localIP());
// 設定 LINE Notify Token
LINE.setToken(LINE_TOKEN);
}
void loop() {
if (WiFi.status() == WL_CONNECTED) {
HTTPClient http;
http.begin(MAKE_WEBHOOK_URL);
http.addHeader("Content-Type", "application/json");
// 讀取 MQ-2 傳感器數值
int gasValue = analogRead(gasSensor) * qualityLevel;
bool isOverLimit = gasValue > GAS_WARNING_LEVEL;
Serial.print("偵測到的氣體濃度: ");
Serial.println(gasValue);
// 建立 JSON 數據
String jsonPayload = "{";
jsonPayload += "\"timestamp\": \"" + String(millis()) + "\",";
jsonPayload += "\"sensor_id\": \"MQ-2\",";
jsonPayload += "\"value\": " + String(gasValue) + ",";
jsonPayload += "\"over_limit\": \"" + String(isOverLimit ? "是" : "否") + "\"";
jsonPayload += "}";
// 發送資料到 Make.com
int httpResponseCode = http.POST(jsonPayload);
if (httpResponseCode > 0) {
Serial.print("數據發送成功, HTTP 回應碼: ");
Serial.println(httpResponseCode);
} else {
Serial.print("數據發送失敗, 錯誤: ");
Serial.println(http.errorToString(httpResponseCode).c_str());
}
http.end();
// 🔹 如果超標,發送 LINE Notify 警報
if (isOverLimit) {
String message = "⚠️ 煙霧警報!\n氣體濃度超標!\n";
message += "當前濃度:" + String(gasValue) + "\n";
message += "請儘速查看環境狀況!";
LINE.notify(message);
}
} else {
Serial.println("WiFi 未連線, 無法發送數據");
}
delay(60000); // 每 60 秒發送一次數據
}
📌 五、Make.com 設定
-
創建 Webhook
- 步驟 1:進入 Make.com
- 步驟 2:建立新的 Scenario
- 步驟 3:新增 Webhook 模組,選擇 Custom Webhook
- 步驟 4:點擊 Add,命名 Webhook,例如
MQ2_Sensor
- 步驟 5:點擊 Copy address to clipboard,將 Webhook URL 貼到程式
MAKE_WEBHOOK_URL
-
寫入 Notion
- 步驟 1:新增 Notion 模組
- 步驟 2:選擇 Create a Database Item
- 步驟 3:選擇你要寫入的 Notion 資料庫
- 步驟 4:對應
sensor_id
、value
、timestamp
、over_limit
欄位
-
設置 LINE Notify
- 步驟 1:新增 HTTP 模組
- 步驟 2:選擇 Make a request
- 步驟 3:請求類型選擇 POST
- 步驟 4:網址填入
https://notify-api.line.me/api/notify
- 步驟 5:Header 設置
Authorization: Bearer 你的 LINE Notify Token
- 步驟 6:Body 設置
message=⚠️ 煙霧警報!氣體濃度超標!
📌 六、學習成果
✅ 了解 MQ-2 傳感器的工作原理
✅ 學會用 Pico W 連接 WiFi
✅ 使用 Make.com Webhook 傳送數據到 Notion
✅ 透過 LINE Notify 及時警報
🎯 未來擴展:
📌 加入溫溼度感測器
📌 讓數據繪製成報表
📌 增加警報聲響裝置
這樣的課程能夠結合 物聯網 (IoT) 與 自動化通知,適合用來設計 智慧家居或環境監測 相關應用!🚀