物聯網開發硬體應用

提升國內高職學生物聯網開發硬體應用入門技術 待進入科技大學再升級為物聯網開發硬體設計人員


您沒有登錄。 請登錄註冊

MCS 雲端控制 LED 開關

向下  內容 [第1頁(共1頁)]

1 MCS 雲端控制 LED 開關 于 周四 10月 19, 2017 9:28 pm

Admin


Admin
專案說明

透過控制 MCS (MediaTek Cloud Sandbox) 的 "開關"控制通道,來遠端操控 LinkIt 7697 開發板上的 USR LED 明暗。
實作此案例時, 必須先要先註冊一個 MCS 帳號 (免費)。


MCS 相關教學可以到 MCS > 資源 來學習, 在使用此範例前, 需先確認了解 MCS 的主要幾個主要概念
MCS 的通道(Data Channel) 有分兩種。 控制通道 (稱為 ControllerChannel, 從雲端控制開發板, 方向主要是 雲 → 開發板) 還有 顯示通道 (稱為 DisplayChannel, 在開發板收集資料丟到雲端顯示, 方向主要是 開發板 → 雲)
MCS 要先創建 產品原型 (Prototype), 再由這原型創建多個 測試裝置 (Test Device)
每個 測試裝置 都有一個獨特的 DeviceId 和 DeviceKey, 開發板上執行的軟體透過這 Id 和 Key 和雲端的這測試裝置連接


雲端設定

在 MCS 建立一個含有 "開關控制通道" 的原型 (Prototype), 並使用這原型來創建一個使操作使用的測試裝置 (Test Device)

▼ 點選 創建 原型


▼ 幫原型取個名稱和版本。 硬體平台選擇 "LinkIt 7697" , 產業和應用程式隨意選擇。 填完後按下 儲存

▼ 原型已創建成功, 點選 詳情

▼ 點選 新增 來新增 資料通道



▼ 原型已創建成功, 接下來就是 新增 "控制器型態" 的資料通道


▼幫資料通道取個名稱(隨意), 並取一個 Id (此 Id 會用於程式中來控制此通道), 然後選擇 "開關" 的資料型態。 最後 儲存 此通道。

▼紅色圈圈為新增的 開關控制通道 , 紅色箭頭為這 資料通道 Id (會用在程式內)。 接下來就要用這原型創建一個測試裝置 (橘色箭頭)]
]


▼幫這測試裝置取個裝置名稱, 並按下 創建

▼測試裝置新增完成, 畫面上的三個紅色箭頭所指的 "資料通道 Id", "DeviceId", "DeviceKey" 為之後開發板上軟體開發時會用到的三個重要資料


積木畫布

初始化
建立 Wi-Fi 連線, 連到 AP (Wi-Fi SSID 和密碼請填寫要連接的 AP 的資料)
建立 MCS 連線, 填入 DeviceID 和 DevieKey, 和前面建立的雲端測試物件做連接
新增一個 "開關控制通道" (Switch ControllerChannel) 物件, 填入 控制通道 Id
重複執行
第一步要加上 和 MCS 同步。 每次執行這一個積木, 程式會去和雲端做資料同步
檢查此 "開關控制通道" 是否有跟新資料
若有新資料, 則讀取最新資料來開關板子上的 LED


產生出的 Arduino 程式如下
#include <LWiFi.h>
#include "MCS.h"

char _lwifi_ssid[] = "MediaTek_Labs";
char _lwifi_pass[] = "84149961";

MCSDevice mcs("DLg6BkHM", "BL60hjNKCHThyrW4");
MCSControllerOnOff MySwitch("MySwitch");

void setup()
{
Serial.begin(9600);

mcs.addChannel(MySwitch);
Serial.println("Wi-Fi 開始連線");
while (WiFi.begin(_lwifi_ssid, _lwifi_pass) != WL_CONNECTED) { delay(1000); }
Serial.println("Wi-Fi 連線成功");
while(!mcs.connected()) { mcs.connect(); }
Serial.println("MCS 連線成功");
Serial.begin(9600);
pinMode(LED_BUILTIN, OUTPUT);
}

void loop()
{
while (!mcs.connected()) {
mcs.connect();
if (mcs.connected()) { Serial.println("MCS 已重新連線"); }
}
mcs.process(100);

if (MySwitch.updated()) {
Serial.print("控制通道更新 :");
Serial.println(MySwitch.value());

if (MySwitch.value()) {
digitalWrite(LED_BUILTIN, HIGH);

} else {
digitalWrite(LED_BUILTIN, LOW);
}
}
delay(1000);
}

於範例中插入一些 logs, 可以幫助了解目前狀態和除錯。



產生出的 Arduino 程式如下
#include <LWiFi.h>
#include "MCS.h"

char _lwifi_ssid[] = "MediaTek_Labs";
char _lwifi_pass[] = "84149961";

MCSDevice mcs("DLg6BkHM", "BL60hjNKCHThyrW4");
MCSControllerOnOff MySwitch("MySwitch");

void setup()
{
Serial.begin(9600);

mcs.addChannel(MySwitch);
Serial.println("Wi-Fi 開始連線");
while (WiFi.begin(_lwifi_ssid, _lwifi_pass) != WL_CONNECTED) { delay(1000); }
Serial.println("Wi-Fi 連線成功");
while(!mcs.connected()) { mcs.connect(); }
Serial.println("MCS 連線成功");
Serial.begin(9600);
pinMode(LED_BUILTIN, OUTPUT);
}

void loop()
{
while (!mcs.connected()) {
mcs.connect();
if (mcs.connected()) { Serial.println("MCS 已重新連線"); }
}
mcs.process(100);

if (MySwitch.updated()) {
Serial.print("控制通道更新 :");
Serial.println(MySwitch.value());

if (MySwitch.value()) {
digitalWrite(LED_BUILTIN, HIGH);

} else {
digitalWrite(LED_BUILTIN, LOW);
}
}
delay(1000);
}

於範例中插入一些 logs, 可以幫助了解目前狀態和除錯。





檢視會員個人資料 http://iotboard.666forum.com

回頂端  內容 [第1頁(共1頁)]

這個論壇的權限:
無法 在這個版面回復文章