作者:Ches拔(Sco Lin)
因為想用聯發科的MCS來Debug,發現MCS(MediaTek Cloud Sandbox)其實做的還不錯,可以玩的跟ThingSpeak有得拚,這篇是從MTK官網這篇專案文章延伸而來。
首先呢!需要註冊一個帳號,如果你已經有了,那就直接輸入吧!
然後選prototype及Create:
想先試一下從遠端控制Linkit7697:
選擇Controller:
再選擇Create test device:
就會得到了Deviceid、Devicekey與channel ID:
完整的Code
#include “MCS.h”
char _lwifi_ssid[] =”家用AP的帳號”;
char _lwifi_pass[] =”家用AP的密碼”;
MCSDevice mcs(“Deviceid”, “Devicekey”);
MCSControllerOnOff MySwitch(“channel id”);
void setup()
{
Serial.begin(9600);
mcs.addChannel(MySwitch);
Serial.println(“Wi-Fi Start Connecting…”);
while (WiFi.begin(_lwifi_ssid, _lwifi_pass) != WL_CONNECTED) { delay(1000); }
Serial.println(“Wi-Fi Connect Success”);
while(!mcs.connected()) { mcs.connect(); }
Serial.println(“MCS Connect Success”);
Serial.begin(9600);
pinMode(LED_BUILTIN, OUTPUT);
}
void loop()
{
while (!mcs.connected()) {
mcs.connect();
if (mcs.connected()) { Serial.println(“MCS Reconnect”); }
}
mcs.process(100);
if (MySwitch.updated()) {
Serial.print(“Channel Update :”);
Serial.println(MySwitch.value());
if (MySwitch.value()) {
digitalWrite(LED_BUILTIN, HIGH);
} else {
digitalWrite(LED_BUILTIN, LOW);
}
}
delay(1000);
}
當Switch變化的時候,Linkit7697會收到一個”1”:
這樣就變成”0”了:
相當的容易。這可以做什麼呢?可以應用在 Smart Home Security、Smart Plug或Smart Bulb Light!想到的遠端控制系列全都可以做!接下來就是主題了,這裡做Serial輸入整數上傳至MCS:
選擇Add:
使用Display:
在Data Type的部份,MTK包山包海,還能送Video Stream,這樣讓我想做Video Doolbell!
最後我是選others,因為還想丟其他資料試試:
抄下Deviceid、Devicekey與channel ID:
太有趣啦~就這麼成功了!但因為沒有溫度感測器,所以我們就手動輸入吧!
完整的Code
#include <LWiFi.h>
#include “MCS.h”
#include “DHT.h”
int t;
int h;
char _lwifi_ssid[] = “家用AP的帳號”;
char _lwifi_pass[] = “家用AP的密碼”;
MCSDevice mcs(“Deviceid”, “Devicekey”);
MCSDisplayInteger Devicechannel(“Devicechannel “);
void setup()
{
Serial.begin(9600);
mcs.addChannel(temp);
Serial.println(“Wi-Fi Start Connecting…”);
while (WiFi.begin(_lwifi_ssid, _lwifi_pass) != WL_CONNECTED) { delay(1000); }
Serial.println(“Wi-Fi Connect Success”);
while(!mcs.connected()) { mcs.connect(); }
Serial.println(“MCS Connect Success”);
Serial.begin(9600);
}
void loop()
{
int switchStatus = digitalRead(2);
String s = “”;
while (Serial.available()) {
char c = (char) Serial.read();
if(c!=’\n’)
{
s += c;
}
delay(1);
}
while (!mcs.connected()) {
mcs.connect();
if (mcs.connected()) { Serial.println(“MCS Reconnect”); }
}
mcs.process(100);
temp.set(s.toInt());
Serial.print(“input value : “);
Serial.println(s.toInt());
delay(1000);
}
沒有溫度感測器也能玩MCS~ 再修改一下Code(如下),看Library最快能到多快的時間就丟一串資料:
完整Code
#include <LWiFi.h>
#include “MCS.h”
#include “DHT.h”
int t;
int h;
char _lwifi_ssid[] = “家用AP的帳號”;
char _lwifi_pass[] = “家用AP的密碼”;
MCSDevice mcs(“Deviceid”, “Devicekey”);
MCSDisplayInteger Devicechannel(“Devicechannel “);
void setup()
{
Serial.begin(9600);
mcs.addChannel(temp);
Serial.println(“Wi-Fi Start Connecting…”);
while (WiFi.begin(_lwifi_ssid, _lwifi_pass) != WL_CONNECTED) { delay(1000); }
Serial.println(“Wi-Fi Connect Success”);
while(!mcs.connected()) { mcs.connect(); }
Serial.println(“MCS Connect Success”);
Serial.begin(9600);
}
void loop()
{
while (!mcs.connected()) {
mcs.connect(); if (mcs.connected()) { Serial.println(“MCS Reconnect”); } }
temp.set(j);
Serial.print(“input value : “); Serial.println(j);
j++;
if(j==100)
j=0;
}
Debug有一點FU了!Linkit7697應該是每半秒丟一次到MCS上,而MCS的前端數據也好端端的顯示出來。
這代表Firmware要修正一些,MQTT不要丟這麼快,需要限制時間,Back end的部份也有一些問題要修正(再多串聯幾個Linkit 7697試試!)社群接下來想導入Video Doorbell !你也想玩嗎?那快來一起加入社群!社群內神人愈來愈多了!
(本文同步發表於作者部落格 — 物聯網學習筆記,文章連結;責任編輯:葉于甄。)
- 【育教於樂】我家日常的康達效應 - 2019/04/25
- 【Tutorial】一起走進 ROS 的世界吧(5) - 語音辨識篇 - 2018/12/26
- 【Tutorial】一起走進 ROS 的世界吧(4) — 視覺辨識篇 - 2018/11/14
訂閱MakerPRO知識充電報
與40000位開發者一同掌握科技創新的技術資訊!