一、介紹
上一篇「透過LinkIt 7697 IoT 小屋學習打造智慧家庭(上)」教大家如何讀取各感測器的數值,並且依照感測器的狀態結合其他模組,做出一些連動的功能。本篇將針對藍牙與Wi-Fi的連結、資料上傳、手機控制……等,一步步帶大家實現如何用手機與電腦,來監控我們的IoT小屋。
MediaTek Labs提供了手機App,LinkIt Remote。讓使用者的手機可以透過藍牙連接LinkIt 7697,透過App讀取或控制自己製作的裝置。
線上雲端服務MediaTek Cloud Sandbox(MCS),可讓使用者透過Wi-Fi將資料上傳到MCS上,除了可以查看上傳的資料,也能透過自己設定的頁面控制LinkIt 7697。比較可惜的是MCS已終止服務,但還是能使用自行架設的版本MCS Lite,MCS Lite使用上與MCS並無太大差異,差別在於該服務是架設在自己的電腦上,資料的控制與上傳,皆仰賴在同一個網域底下。
接下來我們將針對這兩項功能做說明。
二、LinkIt Remote
(一)簡易說明
LinkIt 7697本身自帶BLE(低功耗藍牙),透過手機App(同時支援iOS與Android)的LinkIt Remote,能使用藍牙與LinkIt 7697 連接。BlocklyDuino中也提供能方便使用者設定App連線與控制版面的程式,就讓我們來看看怎麼使用吧!
透過LinkIt Remote說明頁面我們可以看到,如下圖所示,手機的App畫面與我們常見的App Inventor不同,並不需要透過另外的平台做撰寫,我們可以在原本的BlocklyDuino做撰寫即可,只要符合他的使用規則,App連上的時候,我們設計的畫面就會跑出來。
(二)版面程式撰寫
請點開BlocklyDuino左側積木列表的「遙控器」選項,點開後可以看到右側出現該選項內的程式清單,如下圖所示:
連線手機App的操作主要分成兩個部份,第一部份是設定手機版面與顯示或控制元件,第二部份則是依照設置好的元件作讀取或是上傳資訊。
如下圖所示,我們從列表中拖拉出「新增[直式]遙控器 名稱”LinkIt 7697” 切割為寬[3] 高[5]」的這個程式,並放到「初始化」區塊當中,這個程式主要用來設定手機版面與顯示或控制元件,也就是第一個部份。
我們來看一下這個程式,有個「直式」的選項可以選擇,這個可以選擇手機顯示是採用橫的還是直的。「名稱」則是手機連線時會查找到的裝置名稱,可自行設定。
切割為「寬」與「高」是用來設定手機顯示畫面的區塊分割,如LinkIt Remote說明頁面所示:
當設定為「寬=3」與「高=5」時,畫面會被分割成如上圖所示。每個小區塊會有對應的座標,元件可以依照對應的座標擺放,如下圖所示,開關被擺放在座標(0, 1)的位子。
除了名稱自行設定之外,其餘的參數我們原封不動。我們來設計一個上方六格區塊顯示各感測器的數值與控制蜂鳴器的按鈕。下方九格以橫的三格為一個區塊,共可組成三個區塊來擺放三個滑桿控制RGB LED。
我們會用到程式如下圖所示:
- 「新增文字標籤”label1”顯示文字””位置(X,Y)[0][0]大小(寬,高)[1][1]…」
- 「新增方形按鈕”button1”顯示文字””位置(X,Y)[0][0]大小(寬,高)[1][…」
- 「新增滑桿”slider1”顯示文字””位置(X,Y)[0][0]大小(寬,高)[1][1]最小…」
IoT小屋總共有4個感測器並能偵測5個感測值,新增5個文字標籤用作顯示在手機上的元件,要特別注意的是文字標籤後面的名稱需要不一樣,程式在呼叫元件時會依照這個名稱找到對應的位子。如下圖所示設定各元件的座標與大小,顏色可以依照喜好自訂,顯示文字的部份不用設定,資料上傳後會覆蓋掉。
接著新增按鈕,因為是用來控制蜂鳴器,顯示文字的部份輸入「Buzzer」,並設置擺放位子與顏色。
然後新增最後的三個滑桿,記得名稱需要不同,顯示文字的部份分別輸入「R」、「G」、「B」,擺放位置以最左邊的座標為主,寬度設定為3表示佔領橫向三格。調整滑桿的範圍與初始值。
(三)控制程式撰寫
完成第一部份的設定後,緊接著撰寫第二部份的上傳與控制到「重複執行」的區塊中。我們會用到以下程式,如下圖所示:
首先我們需要確認「遙控器是否連線中」,當手機連接LinkIt 7697時我們才繼續以下的程式控制,「處理手機程式指令」可以獲取手機上的控制資訊。
接著我們使用「更新[label]文字標籤 內容」將感測器的數值上傳到每個文字標籤。
再來我們撰寫控制的程式碼,首先透過程式偵測手機上的「按鈕狀態是否更新」,若有變化,則進一步讀取按鈕是被按下(讀取為1),還是放開(讀取為0),並針對狀態控制蜂鳴器。按下時發出聲音,放開則關閉蜂鳴器。
滑桿的部份與按鈕一樣,都是偵測狀態是否有被改變,若是改變則將讀取的數值直接作為類比腳位輸出數值。
最後依照我們使用的經驗,使用LinkIt Remote時,建議在程式最後加上「延遲100毫秒」,這樣較容易與手機連線成功並增加穩定性。
程式撰寫完畢後,將程式燒錄到LinkIt 7697內。記得手機要先下載App並打開藍牙,打開LinkIt Remote按下BUZZER按鈕或是滑桿,看看IoT小屋有沒有動作。觀察每個文字標籤的顯示是否有更新,實際連線畫面如下:
(四)程式下載
三、MCS Lite
(一)軟體下載
首先要下載 MCS Lite應用程式。進到網頁請點選「立即下載MCS Lite應用程式」。
並針對您使用的電腦作業系統版本下載對應的程式,例如您的電腦是Windows並且是64位元的作業系統,那就下載「win64.zip」這個選項,如下圖所示:
將下載下來的檔案解壓縮後,可以看到執行檔案「mcs-lite-app.exe」,應用程式與BlocklyDuino一樣是免安裝的。
(二)設定MCS Lite本地端服務器
開啟「mcs-lite-app.exe」,並隨意填寫資料註冊管理者帳戶。
依照剛剛註冊的訊息登入,如下圖所示:
登入後請確認使用的電腦有連上網路,然後點選右上角的「啟動」開啟服務器。
啟動服務器後可以得到「連線服務器的IP」,請記下這個IP並點選「前往MCS Lite」即可開啟MCS Lite服務。
(三)設定MCS Lite個人頁面
依照上一步開啟MCS Lite服務後,會跳出登入畫面,請建立一個帳戶,並登入。
登入後需要創建產品原型,產品原型簡單來說就是控制介面的樣式。
請於必填的原型名稱隨己意填入名稱,並儲存。
儲存後點選自己創建的產品原型,進入設定頁面。
點選新增資料通道,該選項可以逐一新增控制介面或顯示介面。
可以新增「控制器」或是「顯示器」,在此先新增顯示器,用來顯示感測器數值。
「資料通道名稱」是畫面當中會顯示的名稱,「資料通道Id」則是撰寫程式中會控制的名稱,請取英文並超過2個字,可隨己意設定資料型態與單位,設定完畢請按下「新增」。
新增完畢會如下圖所示,顯示在畫面上。
請依照剛才的步驟新增其餘的顯示項。
接著新增蜂鳴器的控制項目,設定與顯示項目一樣,不同的是出現的不是數據而是元件圖案。
再來新增操控LED顏色滑桿的部份,「資料型態」請選擇PWM,並填入上、下限。
請一次新增其餘LED顏色控制,如下圖:
操作到此我們的產品原型就設定完成了,最後~真的是最後了,請點選右上方有個「創建測試裝置」。
幫測試裝置取的名稱,並按下「儲存」。
您將得到兩個最重要的碼,分別是「DeviceId」與「DeviceKey」,請記下這兩個碼,並且不要將任何有關 MCS Lite 的視窗關閉呦。
(四)Wi-Fi連線程式
讓我們回到BlocklyDuino,點開BlocklyDuino左側積木列表的「Wi-Fi」選項,點開後可以看到右側出現該選項內的程式清單,如下圖所示:
將「連線到Wi-Fi AP…」的這個程式拖拉到「初始化」區塊當中,並填入想要連線的AP名稱與密碼,請連接與電腦相同的網路。
(五)MCS Lite連線程式
點開BlocklyDuino左側積木列表的「MCS」選項,點開後可以看到右側出現該選項內的程式清單,如下圖所示:
將「連線到MCS Lite…」的這個程式拖拉到「初始化」區塊當中,並填入剛剛記錄的「DeviceId」與「DeviceKey」,還有「連線服務器的IP」。
與LinkIt Remote一樣,我們需要預先新增我們要控制或顯示的通道。
我們會用到的通到有:
- 「新增MCS[開關(布林值)]控制通道””」
- 「新增MCS[開關(布林值)]顯示通道””」
請一次新增所有「顯示通道」,並填入創建原型時,各個通道的Id。
請新增其餘「控制通道」,並填入創建原型時,各個通道的Id。
完成設定之後,我們將「和MCS同步」這行程式拖拉到「重複執行」的區塊中,這行程式可呼叫MCS並同步資料。
接著使用「更新””顯示通道數值為[]」這行程式,依序新增各感測器的數值,此程式能將資料上傳到MCS。
接下來新增控制通道來控制蜂鳴器,需要先判斷MCS的控制通道是否更新,若有改變狀態,才接著讀取通道目前的數值,並依照開與關啟動蜂鳴器或關閉。
控制RGB三個顏色的方式與蜂鳴器的一樣,都是先判斷狀態有無更新。若通道有更新,再將數值直接填入各類比腳位來控制顏色。
程式到這邊就完成了,將程式燒錄到LinkIt 7697內,並回到 MCS Lite ,應該就能看到畫面開始有數據跑動,拖動畫面上的滑桿或是按下蜂鳴器按鈕試試看。
(六)程式下載
結論
本篇教學教大家如何使用藍牙連線LinkIt Remote,並花了不少時間設定 MCS Lite 與Wi-Fi連線。這些只是簡單的應用,熟悉之後可以互相搭配出新的玩法。您也能替換IoT小屋上的感測器與外觀,或是將其轉變並應用在另一個場景。