ESP32, IOT物聯網

【ESP32】第十八篇:SW-420震動感測器模組搭配LED實作防震警報器

一、 實驗說明:打造智慧防震與車輛防盜警報系統!

在智慧居家與車載物聯網(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. 燒錄與操作測試

  1. 點擊 Arduino IDE 的 「上傳 (Upload)」 按鈕將程式碼上傳至 ESP32。

  2. 開啟 「序列埠監控視窗 (Serial Monitor)」(鮑率設為 115200)。

  3. 當 SW-420 靜止放置時,LED 燈維持熄滅狀態。

  4. 用手輕敲桌面或拍打 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 遠端告警,打造出全方位的物聯網智慧防盜系統!

 

ESP32 教學系列|延伸閱讀與章節導覽

相關文章