/AntiTheft

基於 ESP32S 的 IoT 車輛防盜警報系統。

Primary LanguageC++MIT LicenseMIT

基於ESP32S的 IoT 車輛防盜警報系統

請注意:
由於 Line Notify 將在 2025 年 3 月 31 日結束服務,屆時目前版本 AntiTheft 將可能失效。
未來預計將此系統改版使用 Line Message API 發送訊息通知。

demo

目錄

  • 專題實作
  • 架構原理
  • 開發流程
  • 應用發展
  • 展望未來
  • 實作功能
  • 資料整理
  • 心得感想

專題實作

這份專題是基於ESP32S晶片所實作的IoT車輛防盜警報系統。
它可以透過MPU6050的陀螺儀感測器,當車輛在停放時,如果有人搬動車輛,MPU6050的加速度計會感應到車輛的**,並將資料傳送至ESP32S。
ESP32S會將此資料透過Line Notify傳送至使用者的Line帳號上,並且同時將LED燈改為紅色閃爍和蜂鳴器發出逼逼逼的聲音,提醒車主車輛已被搬動。如果車輛未被搬動,則LED燈會保持綠色並且蜂鳴器不會發出聲音。


專題實作(動機與目的)

我的動機來自於日常生活中經常發生的車輛防盜問題。
在車輛防盜方面,大多數人都會對汽車使用警報或尋車功能。但在機車上,卻很少有人使用這種功能。
因此,我決定開發一種可以安裝於任何車輛上的防盜警鈴系統。並且,我希望通過結合Line Notify,使用者能夠更方便地收到警報,從而提高車輛的安全性。
目的是提供一種有效且方便使用的車輛防盜解決方案,幫助使用者保護自己的車輛。


架構原理

在本專題中,我使用了 ESP32S 控制器,連接到 WiFi 網路並透過 Line 通知功能,在發生特定條件時發送訊息。
實作過程中,我需要使用到 MPU6050 六軸 IMU 感測器,並使用 Adafruit_MPU6050 資料庫進行程式設計。
我還需要使用 TridentTD_LineNotify 資料庫,以便在程式中使用 Line 通知功能。


架構原理(專題材料)

  • MPU6050
    MPU6050 是一個內置三軸陀螺儀的加速度感測器。它使用 I2C 通信協定,能夠測量旋轉和加速度。MPU6050 可以用於測量體內的**,例如體感遊戲、步數器、體感操作介面等等。

  • LINE NOTIFY
    Line Notify是一個使用Line Bot的API,能夠透過HTTP POST傳送訊息的第三方服務。使用者可以設定自己的Line Token,並且經由API傳送訊息,使得訊息出現在自己的Line帳號中。在此程式中,我使用Line Notify在ESP32成功連接網路後,將訊息傳送至Line上,以提醒使用者。


開發流程

  1. 想到主題
  2. 考慮可行性
  3. 選擇需要的材料
  4. 測試材料是否正常
  5. 撰寫程式碼
  6. 測試與偵錯
  7. 完成專題作品

開發流程(使用的函式庫)

  1. WiFi.h:定義WiFi相關函式和常數。
  2. WiFiClient.h:定義網路連線的物件和函式,例如TCP/IP連線等。
  3. ESP32Servo.h:定義讓ESP32可以控制伺服馬達的函式。
  4. TridentTD_LineNotify.h:定義可以讓ESP32透過Line Notify傳送訊息的函式。
  5. Adafruit_MPU6050.h:定義可以使用MPU6050加速度計與陀螺儀的函式。

開發流程(程式設計流程)

  1. 先在 setup 函數中進行 WiFi 連線,並設定 RGB LED 與蜂鳴器的腳位。
  2. 如果 WiFi 連線成功,則使用蜂鳴器提醒,並使用 Line Notify 通知 ESP32 已成功連線。
  3. 在 loop 函數中使用 MPU6050 感測器取得加速度值。
  4. 根據加速度值的大小判斷車輛是否被移動,如果車輛被移動則透過 Line Notify 通知使用者並同時發出蜂鳴聲。
  5. 每隔一段時間,使用 Line Notify 向使用者發送車輛當前狀態的訊息。
  6. 重複步驟 3-5。

應用發展

此程式目前的應用是利用Line Notify的API,將ESP32的連線狀態以及異常訊息發送到Line上面。
未來發展的話,除了可以持續改用Line Message API製作可互動的機器人新增更多功能之外,還可以加入GPS模組,讓使用者能夠透過Line即時查看位置。
例如:設定一個定時任務,每隔一段時間就會自動發送訊息到Line上,告訴使用者裝置目前的位置。
這樣一來,使用者就可以透過Line即時掌握狀態,並且可以利用GPS功能進行追蹤。


展望未來

  • 在未來上,能夠掌握網路、硬體整合、軟體開發等技能將會是一個很大的優勢。
  • 透過這份專題的實作,可以幫助我提升對於這些技能的熟練程度,並提升在未來的就業市場上或是就讀研究所時的競爭力。

實作功能

目前這份專題的實作功能是透過ESP32控制器,並使用MPU6050感測器取得加速度資料,再利用WiFi連線以及Line Notify服務進行警報。
在車輛被移動或是震動過大時,就會使用Line Notify發送警報訊息到指定的Line帳號上,藉此提醒車主車輛被移動或是遭受震動。
另外,程式中也設有RGB LED燈和蜂鳴器作為警報的顯眼提示。


實作功能(硬體上)

  1. WiFi連線:程式中使用了WiFi.h與WiFiClient.h兩個函式庫,可以讓ESP32透過WiFi與其他裝置建立連線,並且能夠顯示連線的SSID以及IP位置。
  2. Line Notify:程式中使用了TridentTD_LineNotify.h函式庫,可以讓ESP32透過Line Notify的API將訊息發送到Line上,並且能夠提醒使用者ESP32的連線狀態。
  3. MPU6050感測器:程式中使用了Adafruit_MPU6050.h函式庫,可以讓ESP32使用MPU6050感測器來取得加速度資料。程式碼中定義了三個變數accelX、accelY、accelZ來分別儲存MPU6050感測器取得的X軸、Y軸、Z軸加速度資料。
  4. RGB LED和蜂鳴器:程式中定義了四個變數LEDR、LEDG、LEDB、buzzer來分別代表RGB LED燈的紅色、綠色、藍色、蜂鳴器的腳位。程式中使用了digitalWrite函式來控制RGB LED燈的亮滅,並且使用了delay函式來控制蜂鳴器的響聲。

實作功能(軟體上)

  1. 通電時,RGB LED燈會先亮為黃燈,表示正在取得無線網路連線。
  2. 成功連線後,RGB LED燈會轉為綠燈,並在 Line 於 Serial 視窗皆可得知連線成功的訊息,蜂鳴器同時會發出聲響進行提醒。
  3. 車輛發生震動或被移動時蜂鳴器將發出連續聲響,RGB LED燈也將轉為閃爍紅燈發出警示,同時我可以在 Line 和 Serial 視窗皆看到警告訊息。
  4. 車輛溫度過高時蜂鳴器將發出聲響,RGB LED燈轉為閃爍藍燈做為警示,同時我可以在 Line 和 Serial 視窗皆看到警告訊息。
  5. 正常運作時RGB LED燈將為綠燈,且可於 Serial 視窗中得知各項數據的即時狀況。

心得感想

這是我第一次使用 Line Notify 進行串接,其實原本是想使用 Line Message API 再加上 GPS 模組做更多的功能,但購入的 GPS 模組有些異常無法使用,只好刪減部分功能後決定使用 Line Notify 實作。
在這之前我嘗試開發其他機器人多是使用 Discord 社群平台來實作,但考量到這樣的裝置會需要更方便的可攜性,我決定使用在臺灣相對多人使用的 Line 來進行開發。
這樣的功能會想到其實是某次我在停車場尋找車輛時意識到這樣的問題,就恰好成為了我這次期末專題的題目,開發的過程中也學到了很多對於嵌入式系統開發時的問題,例如如何測試各種硬體材料,並使用軟體實作功能予以使用等。對於資訊領域這行我認為是相當實用的,且在未來也有幫助,希望日後還有其他機會使用像這樣的開發控制板來做不一樣且更有趣的作品。


參考文獻


這是我在大學二年級時「嵌入式系統」的期末報告專題作品。 MIT LICENSE