一、 實驗說明:打造智慧防震與車輛防盜警報系統!
在智慧居家與車載物聯網(IoT)應用中,異常震動感測是防盜與災害防護不可或缺的一環。無論是機車/單車防盜、門窗異常撞擊警報,或是地震來臨時的防範提醒,都需要一套靈敏且反應迅速的震動偵測機制。
本實驗米羅將帶大家使用 ESP32 開發板 搭配 SW-420 震動感測器模組 與 LED 警示燈。當環境或設備保持靜止時,SW-420 內部開關保持閉合導通;當受到外力撞擊或震動時,開關會瞬間斷開並輸出高電位,ESP32 接收到訊號後便會立即點亮 LED 燈發出警示,輕鬆實現低成本、高效能的防震防盜防護系統!
二、 實驗材料準備清單
本篇實作 ESP32 震動感應警報專案所需的硬體元件如下:
-
ESP32 開發板
-
麵包板 (Breadboard)
-
SW-420 震動感測器模組
-
直插式 LED 燈
-
220Ω 限流電阻
-
麵包板跳線 若干
-
USB 傳輸線
⭐ 一次備齊創客工具!
歡迎直接購買米羅科技的 ESP32 物聯網應用學習套件,免去東奔西跑湊零件的煩惱。內含 SW-420 震動感測器、LED 燈及豐富基礎元件,是學校教學與專案開發的最佳首選!
三、 核心知識:SW-420 震動感測器工作原理與接線
1. SW-420 震動感測器簡介
SW-420 是一款無方向性的滾珠/金屬彈簧式震動開關感測器,具有以下特性:
-
靜止狀態:內部滾珠或導電體接觸良好,開關呈閉合導通狀態,模組數位輸出端(DO)輸出 低電位 (LOW)。
-
震動狀態:當受到外力搖晃或振動時,內部開關會瞬間斷開,模組數位輸出端(DO)會輸出 高電位 (HIGH)。
-
應用場景:車輛防盜、地震警報、智能小車碰撞檢測、設備震動監測等。

2. 板載靈敏度調節電位器
SW-420 模組板載設有一個藍色十字形可變電阻(電位器),旋轉它可以根據實際環境需求微調震動觸發的靈敏度(順時針或逆時針微調可改變觸發難易度)。
3. ESP32 與各模組接線對照表
| 元件名稱 | 元件針腳 / 標記 | 連接至 ESP32 腳位 | 腳位功能說明 |
| SW-420 感測器 | VCC | 3.3V ~ 5V | 電源輸入端 |
| SW-420 感測器 | GND | GND | 電源接地端 |
| SW-420 感測器 | DO (Digital Out) | GPIO 17 | 數位輸入腳,讀取震動狀態 (LOW:靜止 / HIGH:震動) |
| LED 警示燈 | 正極 (長腳) | GPIO 16 | 數位輸出腳,觸發高電位點亮 LED(需串接 220Ω 電阻) |
| LED 警示燈 | 負極 (短腳) | GND | 電源接地端 |
四、 實作實驗程式碼:震動檢測與 LED 警報觸發
請將以下程式碼複製到 Arduino IDE 中並上傳至 ESP32 開發板:
1. 範例程式碼
int ledPin = 16; // LED 正極連接至 ESP32 GPIO16
int sensorPin = 17; // SW-420 DO 訊號腳連接至 ESP32 GPIO17
int val = 0; // 儲存感測器讀取值的變數
void setup() {
Serial.begin(115200); // 初始化序列埠監控視窗,鮑率設定為 115200。
pinMode(ledPin, OUTPUT); // 設置 GPIO16 為輸出模式
pinMode(sensorPin, INPUT); // 設置 GPIO17 為輸入模式
digitalWrite(ledPin, LOW); // 初始化預設關閉 LED
Serial.println("ESP32 防震防盜警報系統已啟動...");
}
void loop() {
val = digitalRead(sensorPin); // 讀取 SW-420 數位訊號 (HIGH 或 LOW)
if (val == HIGH) { // 檢測到震動時(開關瞬間斷開)
digitalWrite(ledPin, HIGH); // 點亮 LED 警示燈
Serial.println("【警告】檢測到外力震動!觸發防盜警報!");
}
else { // 靜止狀態時(開關閉合導通
digitalWrite(ledPin, LOW); // 熄滅 LED 警示燈
}
delay(50); // 微幅延遲,保持快速採樣反應
}
2. 燒錄與操作測試
-
點擊 Arduino IDE 的 「上傳 (Upload)」 按鈕將程式碼上傳至 ESP32。
-
開啟 「序列埠監控視窗 (Serial Monitor)」(鮑率設為 115200)。
-
當 SW-420 靜止放置時,LED 燈維持熄滅狀態。
-
用手輕敲桌面或拍打 SW-420 模組,模組上的指示燈會閃爍,且 LED 燈會同步點亮,序列埠視窗也會及時印出「【警告】檢測到外力震動!觸發防盜警報!」。
五、 初學者常見卡關問題與排錯指南(Troubleshooting)
1. 輕輕碰一下就一直觸發警報,或是敲很大力都沒反應?
-
微調電位器靈敏度:用小螺絲起子旋轉 SW-420 板上的藍色電位器。若太敏感(稍有風吹草動就觸發),請適度調整直至平靜狀態下開關能穩定維持在 LOW。
2. 震動發生時 LED 只閃了一下就熄滅,如何讓警報維持一段時間?
-
修改程式邏輯(延遲保持):目前範例為實時反應(震動停止即關閉)。若希望觸發後警報維持數秒,可在
digitalWrite(ledPin, HIGH);後方加入delay(3000);(保持亮燈 3 秒),達到更明確的警示效果。
3. 可以把 LED 換成蜂鳴器嗎?
-
完全可以:只需將原本連接 LED 的 GPIO 16 改接至有源蜂鳴器的正極,即可將光學警示升級為聲響警報器(如需結合蜂鳴器與 LED,亦可以多用一組 GPIO 進行同步控制)。
六、 結語與下一篇教學
恭喜你!成功掌握了使用 SW-420 震動感測器模組搭配 ESP32 實作防震防盜警報器的技巧。這個基礎範例可以很容易地擴充結合蜂鳴器、Wi-Fi Line Notify 訊息通知或是 Blynk App 遠端告警,打造出全方位的物聯網智慧防盜系統!