Tag Archives: 聯發科技

[MCS雲端服務] 用Scene(場景)功能快速打造物聯網應用情境(一)

作者/攝影

本文改編自聯發科技Cloud Sandbox(MCS)官方部落格上的文章,特此感謝聯發科技的授權,圖文版權均屬於聯發科技。

文章分類教學技術文
時間
成本
難度
材料表

  聯發科技雲沙堡(MEDIATEK Cloud Sandbox,以下簡稱MCS)是一個非常方便的雲端平台,使用者能在MCS上開發出各樣物聯網應用。

 

  然而,當使用者將產品透過 MCS 完成了 API 對接,以及測試驗證階段後,他們將面臨兩個選擇:(1)開始尋找其它公有雲方案,並針對產品應用架設自己的雲端平台;(2)尋找外包廠商開發終端業主的物聯網應用監控介面。至此,針對這個開發項目,使用者將短暫離開 MCS 平台,直至有下個產品開發及需求驗證。

 

  但因物聯網的監控頁面需做大量客製化,業主對使用者開發的介面進行不斷修改,因此使用者的開發時間從3個月增加至半年、8個月不等。好不容易終於耗時費力完成了一個業主的專案。接著,使用者回到 MCS 評估下個新產品,然後再次花費大把時間執行下個專案。

 

  所以,MCS的開發人員便開始思考,是否能針對不同垂直領域的物聯網應用場域,透過 MCS提供一站式使用體驗,進一步優化從完成產品驗證,至商業應用這段期間的開發流程,同時縮短開發時間?在與 MCS 的使用者(包含裝置開發商、系統整合商、模塊方案商等不同類型的使用族群)多次討論後,MCS開發人員決定開發「場景」(Scene)的功能。

 

  簡而言之,就是使用者可上傳一張物聯網場域的圖片,做為物聯網場景的監控背景頁面,接著再選擇已驗證完成的測試裝置或裝置,將不同裝置透過簡易拖拉(drag & drop)方式,將這些裝置定錨至場景圖上,以完成一個實際的物聯網遠端監控監控介面。此外,使用者還可將這些開發好的場景頁面,分享給內部管理者或終端業主,達成中、小型專案的商業應用。

圖1 透過三個步驟讓不同裝置呈現在場景圖內 | mcs.mediatek.com

 

建立一個魚塭監控頁面

  讓我們用一個智慧養殖漁業做例子。

Step1:先在場景頁面新增一個場景,並上傳該養殖池的實際照片,如下圖:

圖2 於場景列表新增場景 | mcs.mediatek.com

 

Step2:點擊下一步,會進入這個養殖池的場景編輯頁面。選擇點擊左側測試裝置裝置項目,下拉選單選取一個你在此 MCS 帳號中開發完成的測試裝置或裝置,加進此養殖池,並在這個裝置編輯頁面中:(1)重新命名此裝置在養殖池內的顯示名稱;(2)勾選裝置所有資料通道中欲顯示的關鍵資料通道,並決定關鍵資料通道從上至下的顯示順序;(3)選擇是否要顯示此裝置的圖片在卡片上方(圖片是在原型prototype開發過程中加入的)。

圖3 點擊左側裝置的「裝置」,進入編輯頁面 | mcs.mediatek.com

 

Step3:儲存後,此裝置卡片會出現在這張魚池的場景左上角,讀者可將這個裝置拖拉定錨至養殖池中的實際位置,裝置將即時顯示連線狀態及這些資料通道收到的數值。

圖4 於場景編輯頁面中,亦可隨時點擊裝置卡片右上角海苔條回到裝置編輯頁面 | mcs.mediatek.com

 

Step4:場景編輯完成後,點擊返回,就會進入檢視頁面,網址列會顯示這個場景的Url Link,讀者也可點擊右上角的編輯按鈕回到場景編輯頁面。

圖5 每個場景都有一個獨立的Url | mcs.mediatek.com

 

  下圖表示了一個魚塭的管理者,如何透過遠程監測和控制自己魚池內的裝置:

圖6 若該裝置具備多個資料通道,且不會一次全部顯示在各裝置卡片中,讀者可在場景檢視頁面內直接點擊裝置卡片,由場景層進入裝置層 | mcs.mediatek.com

 

  當然,讀者也可視場域需求放入室內平面圖或立體圖,甚至是一條智慧生產工廠的產線(如下圖)。

圖7 上傳一張智慧工廠的底圖,將透過MCS開發的裝置拖拉到這條產線上做即時監控 | mcs.mediatek.com

 

將建立的場景分享給客戶

  除了場景畫面的編輯外,讀者也可將此場景圖分享給其它 MCS 的使用帳號,並將該使用者設置為管理者角色或一般檢視角色。兩種身分最主要差異在於對場景編輯上的權限:管理者同樣可對該場景進行編輯,而一般檢視角色無法對該場景進行編輯。讀者也可加入多個 MCS 帳號比較差異。

圖8 在場景編輯頁面右上角可選擇編輯該場景的使用者權限 | mcs.mediatek.com

 

  在這裡要注意的是,場景的權限和裝置的權限是各自獨立的,因此若某個使用者具備共同編輯此場景的權限,但並未被分享場景內某些裝置的權限,則該使用者即便可編輯或檢視該場景,也看不到這些裝置。因此分享場景時,也要確定該使用者對這個場景內的裝置使用權限為何。場景權限及裝置使用者權限這樣的設計是為了針對物聯網監控應用中,不同的物聯網場景管理者對於不同裝置,通常會擁有不同的(通常為上、下級關係)監控權限。

 

  以下說明三種不同 MCS 使用者權限檢視的差異:

表一

 

圖9 系統整合業者畫面,可編輯場景。 | mcs.mediatek.com

 

圖10 業主/老闆檢視畫面,不可編輯場景。 | mcs.mediatek.com

 

圖11 業主/監視人員檢視畫面,僅能監看具有權限的裝置。 | mcs.mediatek.com

 

  未來MCS也將針對事件觸發提供優化,例如可在裝置上嵌入警告燈號,並可在場景中做提示,以及可設定透過顯示型資料通道,連動控制資料通道⋯⋯等等,提供使用者更接近物聯網場景的應用。

 

  下一篇,將會介紹如何將多個不同場景,透過嵌入Url的方式,將各個有關聯的場景彼此鏈結在一起。

 

相關文章

[LinkIt 7697開發板教學]MCS雲端RGB LED類比控制-Blocklyduino圖形化開發環境

作者/攝影  曾吉弘
時間  3小時
成本
  • LinkIt 7697開發板
  • RGB LED
  • 麵包板
  • 線材
難度  * * *
材料表
  • 個人電腦
  • LinkIt 7697開發板
  • RGB LED
  • 麵包板
  • 線材

本文要介紹如何使用Mediatek Cloud Sandbox (聯發科技實驗室推出的雲服務)來控制LinkIt 7697上的 RGB LED 的個別顏色亮度。程式使用Blocklyduino圖形化開發環境開發板製作的小型電路專題。您可由此比較與一般Arduino IDE的類C語法的異同。請參考我們上課的投影片(超過100頁喔)!:

 


 

MCS端設定

        請登入MCS雲服務,建立新的原型,其下有三個整數(integer)型態的控制器,channel id 分別是 red, green, blue,下限0上限255,這是對應於Arduino的 analogWrite語法的參數。詳細建立資料通道畫面如下:

View post on imgur.com

建立好三個資料通道之後,請為這個原型建立一個測試裝置,完成如下圖:

View post on imgur.com

硬體線路

請將Linkit 7697插上麵包板,並根據下圖將RGB LED負極(最長腳)接到GND腳位。左到右分別代表R G B三個顏色的腳位,請分別接到LinkIt 7697的P10、P8與P6腳位。

View post on imgur.com

Blocklyduino程式碼

初始化/setup():在此會先連上指定的Wi-Fi AP、MCS伺服器並新增所指定的通道id。請注意相關資訊不要打錯

View post on imgur.com

重複執行/loop()

在此會持續與MCS保持同步,如果任一通道有更新(使用者在MCS輸入新的數值)的話,就會根據新的數值來控決定對應的RGB LED顏色強度。最後則是把MCS的數值顯示於Serial Monitor

View post on imgur.com

7697程式碼

上述BlocklyDuino轉出來的Arduino程式碼如下,請直接上傳到7697之後就可以執行,重要的指令都以註解方式寫在程式碼中。

 

操作

請先檢查相關資料是否都正確,執行7697端程式。確認7697已連上MCS之後,請在各個控制器通道輸入0~255之間的數值,即可看到RGB LED顏色產生變化,也會把相關數值顯示於Serial Monitor

 

由於BlocklyDuino目前尚未提供MCS的PWM控制器資料通道的指令,但您可以自行在轉為Arduino code之後將 MCSControllerInteger red(“red”);     改為 MCSControllerPWM red(“red”);   這樣就能在MCS端使用PWM控制器資料通道的拉桿來控制LED亮度。

#include <LWiFi.h>
#include "MCS.h"

char _lwifi_ssid[] = "";     //Wi-Fi 帳號
char _lwifi_pass[] = "";   //Wi-Fi 密碼
MCSDevice mcs("", ""); //MCS測試裝置的 deviceId, deviceKey

MCSControllerInteger red("red");            //新增 channelId 為 red 的整數型控制資料通道
MCSControllerInteger green("green");  // green
MCSControllerInteger blue("blue");       // blue

void setup()
{
  mcs.addChannel(red);                             //將這三個channel 加入測試裝置
  mcs.addChannel(green);
  mcs.addChannel(blue);
  while (WiFi.begin(_lwifi_ssid, _lwifi_pass) != WL_CONNECTED) {
    delay(1000);                                            //每隔1秒試著去連上指定的 Wi-Fi AP
  }
  while (!mcs.connected()) {                    //持續與MCS保持連線
    mcs.connect();
  }
  Serial.begin(9600);
  pinMode(10, OUTPUT);
  pinMode(8, OUTPUT);
  pinMode(6, OUTPUT);
  Serial.begin(9600);
}

void loop()
{
  while (!mcs.connected()) {                         //檢查與MCS的連線狀態,如果斷線會在此重連
    mcs.connect();
    if (mcs.connected()) {
      Serial.println("MCS Reconnected.");
    }
  }
  mcs.process(100);
  if (red.updated()) {                                       //如果各控制資料通道更新
    analogWrite(10, red.value());                 //根據該值來控制LED亮度
  } else if (green.updated()) {
    analogWrite(8, green.value());
  } else if (blue.updated()) {
    analogWrite(6, blue.value());
  }

  Serial.print(red.value());
  Serial.print(", ");
  Serial.print(green.value());
  Serial.print(", ");
  Serial.println(blue.value());                      //顯示各資料通道數值於Serial monitor
}

 

 

相關文章: