• Elvis Tsang

MODI 物聯網入門應用 (1):簡易門窗警報系統

更新日期:3月 22

隨著近年物聯網的興起和相關技術的進步,學習物聯網對於大部分人來說已經不再是遙不可及的目標。以往初學者一般會使用Arduino或者micro:bit之類的微處理器主板配合各種傳感器模組和驅動模組來組成物聯網系統中的一部分,然而這一類初步模組化的學習套件仍然需要大量的時間學習和編程,令很多缺乏相關背景的初學者卻步。有見及此,本文將簡單介紹一款簡單易學而又功能齊全的模組化電子積木系統-MODI 用於物聯網中,並建造一個簡單的門窗警報系統。有關MODI 的詳細介紹可按此


有別於傳統模組的電線連接,MODI 模組的連接方式非常簡單,只要把所有需要的模組以磁力接口任意連接即可,無需理會方向或次序。在本文介紹的警報系統中,只需要以下四個模組:

  1. Battery Module 電池模組 - 提供電源

  2. Network Module 網絡模組 - 連接電腦和手機App

  3. Infra-Red (IR) Module 紅外線模組 - 近距離物體感應

  4. Speaker Module 揚聲器模組 - 發出聲響

設計原理亦十分簡單:我們使用紅外線模組感應門窗是否關閉,如果門窗被打開即以揚聲器模組發出警報聲並同時透過網絡模組連接手機App通知用家。下圖為其中一種安裝方式:

此示意圖僅供參考,一切以實物為準

除了剛才提到的四種模組外,我們還需要一個淺色或反光物體在紅外線模組前面用來判定門窗是否安全關好,因為紅外線傳感器的工作原理正是感應發出紅外線到反射到接收器之間的所需時間並計算距離。


在上圖的例子中,如果門被打開,紅外線模組的讀數會有明顯變化並且可以確定門被打開,從而觸發警報。值得一提的是MODI的紅外線模組的感應範圍為4 - 30cm,所以請確保紅外線模組和反光物體的距離在此範圍內並避免接近上下限,因為環境周圍的光線是否充足亦會影響傳感器的實際有效範圍。


硬體設計的部分基本上已完成,代碼的部分亦同樣非常簡單。將USB線把網絡模組(必須與其他模組已連接好)和電腦連接,然後下載並打開MODI Studio及創建新項目(New Project)。

創建新項目並輸入項目名字後應該可以見到以下畫面:

左邊的介面是我們的編程介面,而右邊則會顯示現在電腦已連接並可用作編程的MODI模組。現時右邊應該可以看見network0(網絡模組)、ir0(紅外線模組)、speaker0(揚聲器模組)。


首先我們在左邊把 "if" 拉到空白位置,並選擇ir0 -> Proximity為判定條件的第一部分,"<=" 和 "50" 為第二及第三部分。

這段代碼的意思是「如果紅外線模組 ir0 的讀數小於最高讀數的50%,則會觸發後面的代碼段。」,而紅外線模組的讀數越大則代表距離越近,所以如果讀數少於某一數值則代表紅外線模組感應到物體在較遠的地方,在我們的應用中就代表門窗被打開。我們在這段代碼中使用50%作為例子,但是該數值應該要視乎實際安裝方式和環境因素而決定,一般來說需要多次實驗嘗試和調較。


然後我們在右邊的介面把speaker0拉到 if condition 底下,組成一個完整的 conditional expression (條件運算式),並按照下圖輸入參數:

大家在選擇參數的時候,新視窗的右下角會顯示每個參數的意義並提供相關的描述。例如以上第三個參數是音量,以百分比 % 表示。


暫時我們的代碼已經可以做到最基本的警報功能:當紅外線模組感應到門被打開,揚聲器隨即以最高音量發出響聲。接下來我們需要使用網絡模組 network0 通知用家。首先在右邊介面把 network 0 拉到左邊speaker 0下面:

注意network0 這段代碼必須和speaker0一樣為if condition下面向右退一級的位置。現在除了揚聲器模組會發出聲響外,網絡模組亦會把 "Door Opened" 這段文字發送到用戶的手機App "MODI Play"。


大家亦可以按下圖的 "GUI / CUI" 按鈕切換到對應的C代碼:

如果需要上傳代碼到MODI模組,點擊 "Upload" 即可:

大家如果有相關硬件在手不妨嘗試配合其他MODI模組甚至其他部件,實現更為複雜和全面的門窗警報系統,例如利用電機增加門窗的阻力嘗試制止被打開、利用相機鏡頭拍下防盜眼的畫面等等。如果沒有硬件亦可以在MODI Studio嘗試實現不同功能的代碼。

今次對於使用MODI 實現簡易門窗警報系統的介紹就到此為止,下次我們會介紹更多MODI 物聯網模組在其他情景的應用例子,讓大家可以輕鬆學習和利用物聯網技術於日常生活中。