雖然香港並沒有地震,但是很多其他地區經常受到地震的困擾例如日本、台灣、菲律賓等等。在這些地區一個地震警報系統可以讓大家及時做好安全措施、減少地震帶來的危害。今次我們嘗試使用 MODI 電子積木平台提供的模組來設計地震警報系統。
在決定使用哪些模組和其他硬件之前,我們需要決定好整個系統的運作。以下是其中一種可行的運作模式範例:
1. 量度環境數據檢測震動
2. 如果檢測到連續3秒有震動,響起警報並閃爍LED指示燈
3. 用家按下按鈕後停止警報
首先我們需要量度並檢測震動,結合了加速度計的陀螺儀 (Gyroscope with Accelerometer) 正符合這項需求。如果我們將 MODI 陀螺儀模組平放在一個平面上,地震時會令模組上下震動,所以原則上我們可以透過量度z軸的加速度來檢測震動。但是發生震動時加速度並不是固定在一個數值,而是會在正負數之間浮動,所以難以用簡單的計算來判定。不過 MODI 的陀螺儀模組有內置的功能可以直接量度震動的強度,避免了繁複的計算。
根據先前我們所設計的系統運作模式,除了陀螺儀外,我們還需要揚聲器模組 (Speaker Module) 和 二極管模組 (LED Module) 作為警報用途,以及一個按鈕模組 (Button Module) 用來停止警報。最後還需要一個網絡模組 (Network Module) 連接到電腦或iPad編程以及電池模組 (Battery Module) 供電給整個系統。以下總結了今次所需要的所有模組:
陀螺儀模組 (Gyroscope Module)
揚聲器模組 (Speaker Module)
二極管模組 (LED Module)
按鈕模組 (Button Module)
網絡模組 (Network Module)
電池模組 (Battery Module)
將所有模組連接後,用USB數據線將網絡模組連接到電腦並打開 MODI Studio,或者在 iPad MODI Studio 應用程式中透過無線網絡連接模組。如果連接成功,大家應可以在 MODI Studio 右邊的面板看見所有已連接的模組 (電池模組除外),如下圖所示:
如果我們成功在右手邊看見我們所連接的網絡模組 (network0)、LED模組 (led0)、陀螺儀模組 (gyro0) 、揚聲器模組 (speaker0) 以及按鈕模組 (button0),就可以開始根據我們的設計編程 MODI 模組了。我們先前的運作流程可以重新寫成以下更詳細的偽代碼 (pseudo-code):
1. 將LED的顏色預設為藍色
2. 如果陀螺儀的震動強度讀數大於50%:
3. 等待1500ms (即1.5秒)
4. 如果陀螺儀的震動強度讀數大於50%:
5. 等待1500ms
6. 當陀螺儀的震動強度讀數大於50%,重複執行以下代碼:
7. 將LED的顏色改為紅色
8. 揚聲器以100%音量發出聲音
9. 等待200ms
10. 將LED的顏色改為黃色
11. 揚聲器以100%音量發出另一聲音
12. 等待200ms
13. 如果按鈕被按下:
14. 將LED改為藍色
15. 停止迴圈 (即停止重複7-15行)
我們寫出以上偽代碼的目的是方便我們在 MODI Studio 搭建代碼,因為結構上完全相同:
如果大家對於對應的 C代碼有興趣,亦可以在按下 "GUI" 切換檢視:
我們在這個例子中假設了發生地震時陀螺儀的讀數會大於50% 而沒有地震時則不會大於50%。實際上這個數值會隨地區和震央的距離而改變,大家可以嘗試改為其他數值來測試對震動的檢測敏感度。
大家可以想一想,我們還可以如何根據在以下幾個方面更改或改善地震警報系統的運作?
地震持續5秒才會觸發警報
觸發警報後,LED以每秒2次的頻率閃爍紅燈,而且不會閃爍其他顏色
觸發警報後,需要按下按鈕兩下才能停止警報以免誤觸
觸發警報後,發送訊息到電話的 MODI 應用程式
使用顯示器模組顯示陀螺儀的震動強度讀數並定時更新
Comments