連接到 MCS

MediaTek已經於 2021.4.16 停止 MCS 服務,如要使用請使用MCSLite

以下範例將介紹如何使用 MCS 函式庫提供的 MCSDevice 類別連接到 MCS 伺服器,並透過 MCS 網頁控制介面操縱 LinkIt 7697 板上的 USR LED。

建立 MCS 測試裝置

開啟 MCS 網頁控制介面建立新的產品原型、資料通道、以及測試裝置。在本範例中,需要建立兩個資料通道:

  1. 一個 "開/關" 類型的控制器通道。

  2. 以及一個 "開/關" 類型的顯示器通道。

若不清楚如何產生產品原型、資料通道、以及測試裝置,請參考 MCS 入門導覽頁面。

完成設置後,會產生如下的測試裝置頁面。需特別留意 Data channel IdDeviceId、和 DeviceKey 欄位 (如下圖箭頭所指),後續撰寫程式碼的過程中會使用這些資訊。

使用 MCS 函式庫連接 MCS

下列步驟將說明如何在程式裡,使用 device keydevice ID 產生 MCSDevice 物件,並設置對應的資料通道,以連接到 MCS 平台服務。

1.點選 Arduino IDE 的 File > Examples > MCS > LED_control 選單。

2.由於需要 Wi-Fi 網路以連接 MCS,請依照使用的 AP 設定修改程式中的 Wi-Fi SSIDpassword 資訊

// Assign AP ssid/password here
#define _SSID "your_ssid"
#define _KEY  "your_password"

3.將 device IDdevice key 填入 MCSDevice 類別的建構函式中:

// Assign device id/key of your test device
MCSDevice mcs("your_device_id", "your_device_key");

Device ID 和 device key 可從上述的 MCS 測試裝置頁面取得:

4.同樣地將 channel ID 填入資料通道類別的建構函式:

// Assign data channel ID 
MCSControllerOnOff led("your_channel1_id");
MCSDisplayOnOff    remote("your_channel2_id");

Channel IDs 可在 MCS 測試裝置頁面的資料通道資訊下方取得:

執行 Sketch

1.點選 Upload 按鈕並等待 Done Uploading 訊息顯示完成。

2.點選工具列的 Serial Monitor 按鈕開啟 Serial Monitor 視窗並將 Baud rate 設定為 9,600。

3.此時可操作 MCS 網頁控制介面開/關控制器通道來開啟、或關閉開發板上的 LED。在開發板 LED 狀態變化的同時,開/關顯示器通道的顯示狀態也會隨之變化

4.對應 MCS 網頁控制介面的操縱,開發板上的 USR LED 將會開啟或關閉。

程式碼說明

在以上範例中,使用了 MCS 函式庫處理開發板與 MCS 伺服器之間的連線。使用函式庫需先加入 MCS 的 header file:

#include <MCS.h>

接著建立 MCSControllerOnOffMCSDisplayOnOff 類別實體,用來控制事先在 MCS 網頁控制介面定義的兩個開/關資料通道 (控制器與顯示器)。建立時需將各資料通道所對應的 channel ID 傳入類別建構函式當中。

MCSControllerOnOff led("your_channel1_id");
MCSDisplayOnOff    remote("your_channel2_id")

下一步利用 device ID 與 device key 產生 MCSDevice 類別實體,使開發板對應到之前在 MCS 網頁控制介面產生的測試裝置

MCSDevice mcs("your_device_id", "your_device_key");

相關實體建立完成後,使用 addChannel() 將資料通道加入至測試裝置,並呼叫 connect() 來連接至 MCS 伺服器。

  // setup MCS connection
  mcs.addChannel(led);
  mcs.addChannel(remote);
  while(!mcs.connected())
  {
    Serial.println("MCS.connect()...");
    mcs.connect();
  }

在 Arduino 的 loop() 裡,呼叫 updated() 檢查是否有來自開/關控制器通道的新資料,若有新的資料,則根據該數值設定 LED_PIN 所對應的 LED 明滅,並同時更新顯示器通道的數值,以在網頁控制介面正確呈現出開發板的狀態。

if(led.updated())
  {
    Serial.print("LED updated, new value = ");
    Serial.println(led.value());
    digitalWrite(LED_PIN, led.value() ? HIGH : LOW);
    if(!remote.set(led.value()))
    {
      Serial.print("Failed to update remote");
      Serial.println(remote.value());
    }
  }

更多 MCS 函式庫的使用說明,請參考 MCS 函式庫 API 手冊

Last updated