Post on 21-Jan-2018
硬體介紹
Product
NameLinkIt 7697
Manufacturer Seeed Studio
Module wrtnode7 (wrtnode.com)
Chipset
MT7697
Cortex-M4 with FPU @
192Mhz
RAM 352 KB
Flash 4 MB
Wi-Fi 802.11 b/g/n (2.4G)
Bluetooth 4.2 LE
Dimension 48x26 mm
Operating Voltage 3v3
Input Voltage 5v (microUSB)
USB2UART CP2102N
Peripheral
Interfaces
GPIO x18
UART x2
I2C x1
SPI x1
PWM x18
EINT x4
ADC x4 (0~2.5V)
IrDA x1
I2S x1
Debug Interfaces SWD x1
LinkIt 7697• 聯發科技最新的物聯網開發板
– Wi-Fi / BLE 雙通訊功能
– 採用主流 Cortex-M4 架構
– 開放的軟體開發環境 (FreeRTOS)
腳位圖https://labs.mediatek.com/en/download/1ega2lbl
Copyright © MediaTek Inc. All rights reserved.
4
LinkIt 7697 開發板外觀介紹
Copyright © MediaTek Inc. All
rights reserved.5
WrtNode7無線模組內含:• MediaTek MT7697 SoC
• 快閃記憶體• 天線
重置按鈕(RST)
使用者自定義按鈕(P6)
UART0
傳輸燈號(P0/P1)
供電指示燈
自定義燈(P7) CP2102N UART 轉 USB 晶片
製造廠商:Silicon Labs
LinkIt 系列開發板比較
6
LinkIt ONE LinkIt Smart 7688/Duo LinkIt 7697
定位all-in-one
IoT Dev Board
Rich IoT Endpoint
/ GatewayLightweight IoT Endpoint
發售年分 2014/7 2015/11 2017/4
微控制器MT2502
(ARM7EJ-S)
MT7688
(MIPS)
MT7697
(ARM Cortex-M4F)
主頻 260Mhz 580Mhz 196Mhz
RAM 4MB 128MB 352K
Flash 16MB 32MB 3612K
Dev Platform Proprietary RTOS*1+ Arduino OpenWrt (Linux) + Arduino FreeRTOS + Arduino
Programming Lang C/C++ C/C++/JS/Python C/C++/JS/Visual
Wi-Fi 802.11 b/g/n 802.11 b/g/n 802.11 b/g/n
BLE BT 2.1/BLE 4.0 - BLE 4.2
Cellular GSM/GPRS*2 - -
GNSS GPS/GLONASS/BeiDou*2 - -
Ethernet - 10/100 PHY -
USB Device Host -
SD Card MicroSD MicroSD -
終端售價 ~2000 NTD ~500 NTD ~500 NTD
*1 沒有開源*2 隨著台灣 2G 關台, GSM/GPRS 和 GNSS 的功能應用性就不高
腳位圖與 Arduino 對應關係https://labs.mediatek.com/en/download/1ega2lbl
Copyright © MediaTek Inc. All
rights reserved.7
Digital Pin 以絲印上面的數字作為參數,例:digitalWrite(7, HIGH);
Analog Pin 以絲印上面的數字作為參數,或使用 A0 ~ A3
Seeed 7697 Grove套件包
• Grove Breakout x1
• Grove - IMU 9DOF x1
• Grove – Temperature & Humidity
Sensor Pro x1
• Grove - Ultrasonic Ranger x1
• Grove - Relay x1
• Grove - OLED Display 0.96" x1
• Grove - Light Sensor x1
• Grove - LED Bar x1
• Grove – Servo x1
• Breadboard 82mm x 53mm x1
• Button x5
• 10K Ohm Rotary Potentiometer x1
• 1K/10k/330 Ohm Resistor x1
• RGB LED x1
• Red LED x5
• Micro USB Cable – 48 cm x1
• Breadboard Jumper Wire x25
Arduino IDE 下載
1. 請下載 Arduino 1.6.4 以後的版本
2. 從 board manager 安裝 7697 套件
3. 下載CP2102N驅動程式
在Arduino IDE 偏好設定中貼上這個連結
• File / Preferences
• http://download.labs.mediatek.com/package_mtk_linkit_7697_index.json
• 旁邊的按鈕可以加入多個定義檔
在選單中看到 7697,按 Install
• Tools / Board / Boards Manager
• 目前最新版為 0.7.11 (示意圖如下)
完成之後就可以看到 7697 了
• 在很下面…
安裝 driver,請把 7697 接上電腦
• 下載CP2102N驅動程式,並根據您的作業系統版本來安裝 x86/x64版本
• 安裝完畢之後請將7697接上電腦,就可自動抓到它。
抓到COM port
如果無法編譯
• 請到以下路徑檢查,是否有 0.7.4 (最新版本) 之資料夾,其他檔案請刪除
• C:\Users\user\AppData\Local\Arduino15\p
ackages\LinkIt\hardware\linkit_rtos
BlocklyDuino for LinkIt 7697
今天請用google drive上的blockyduino.v2.2.1.rar 來上課喔!
BlocklyDuino for LinkIt 7697
18
• 視覺化的程式編輯環境
• 不只適用於LinkIt 7697
• 周邊I/O指令已經準備好
• Open source (github)
BlocklyDuino for LinkIt 7697的優點
19
• 可離線執行(github)
• 能產生對應的Arduino sketch ,便於學習與除錯
• 與Arduino IDE結合,函式庫相容性與擴充性高
• 可快速驗證想法可行性
• Open source
離線執行
• 根據您所使用的作業系統(Windows 32/64,
MAC, Linux32/64)解壓縮之後,點擊執行檔即可開啟
21
Arduino Blockly
優點:
• 適合入門,培訓基礎程式能力• 降低門檻,沒有硬梆梆的英文與程式碼
優點:
• 適合進階學生,完成較複雜的功能
• 除錯較為方便
右上角的設定
22
如何匯入範例
• 在BlocklyDuino 右上角點選”匯入”
• 把github所下載之 /examples/ 各範例中的.xml 檔貼進去即可
完成了
LESSON 1 : BLINK
25
LED閃爍
26
點選Arduino
可轉換為Arduino Sketch
按存檔,即可同步存入IDE
中
1.Linkit 7697 上有一個內建的LED 燈,上面寫著 USR 三個字。2.Linkit 7697的內建 LED 燈和 PIN 7 在板子內部的線路並聯的
LESSON 2 : 電位計控制LED
27
線路示意圖
28
範例在雲端:code/Blocky/example/lightsensor
Demo (實際示例)
29
利用A0腳位的數值變化,控制D7 LED是否亮滅。
30
Arduino Sketch
LESSON 3 : SERVO
31
用7697 控制Servo
32
範例在example/servosweep
您將在本例子使用的Block
33
•如果 < 事件 > 執行 < 事件>
•< 資料 > 大於 < 資料>
•< 數字>
•賦值 < 資料型態 > < 變數 > 到 < 資料>
•加入Setup()
•延遲 < 資料>
•寫入 Pin < 腳位 > 角度 < 資料>
Demo (實際示例)
34
Servo 會在一開機轉回原點,之後在每秒都會多轉 15 度直至轉滿 180 度,接著再次回到原點不斷重複。
Arduino Sketch
35
Examples/LWiFi/WiFiWebClient
MediaTek Cloud Sandbox
(MCS)
MCS主要功能
• 雲端平台,執行程式
• 例:Google App Engine、Amazon Web
Services、Microsoft Azure
• 提供網頁介面,讓你「點按滑鼠」就能建立雲端程式
• 提供API程式存取介面
• 提供網頁介面,觀看與控制各種資料
MCS其他功能
• 通知(Notification),當某資料符合特定條件時,寄送電子郵件
• 使用者權限(User Privilege),設定開發成員的存取修改權限
• FOTA(Firmware Over The Air),版本控管,韌體經由無線傳輸自動更新
目標
• 到MCS註冊帳號
• 建立網頁應用程式(web application)
• 透過MCS REST API進行溝通
• LinkIt 家族開發板、手機、瀏覽器
範例
• 從雲端控制板子內建的LED
• LED:想像成家裡的燈
• 為什麼從雲端?不能直接連線嗎?
MCS重要觀念與名詞
• Prototype,裝置原型,具備各種 data
channel
• Data Channel,帶有時間資訊的資料串
• Data Channel Id:對應的資料接口
• Datapoint:每筆上傳的資料
• Test Device,想像為實際執行後的程式
• DeviceId、DeviceKey:用這個來鎖定裝置
• 例:LED控制器、溫濕度感測站
MCS Android app
• Google Play 下載
MCS Dashboard(儀表板)
MCS 重要選項• Console:主控台
• Development:建立Prototype、新增修改Data
channel、查詢Data channel Id
• Test Devices:查詢DeviceId、DeviceKey
• Resources:教學文件、參考資料
• Resources:常見問題、論壇、回饋
範例:控制LED並檢視狀態
程式:mcsled.js
流程
1. 建立Prototype
2. 依照所需功能,新增Data channel,記下Data channel Id
3. 建立Test device,記下DeviceId與DeviceKey
建立Prototype
• Prototype name:LED
Manager (或自定)
• Prototype version:1.0
• Hardware platform:LinkIt
Smart 7688 (MT7688)
• Industry:自定
• Application:自定
Data channel 資料頻道
• Controller型:可控制腳位
• Display型:接收腳位/周邊裝置回傳的資料
分享與觸發
• 您可以把建好的 test device 與別人共享
• 也可以自行設定觸發條件,讓 MCS 寄信給您
目前有哪些類型?
Controller
• ON/OFF• Category• Integer• Float• Hex• String• GPS• GPIO• PWM• Analog• GamePad
Display
• ON/OFF• Category• Integer• Float• Hex• String• GPS• GPIO• PWM• Image Display• Video Stream
ON/OFF
• 控制高低電位。LED、繼電器等
• 顯示裝置的電位高低狀態
Category
• 讓系統可在2~5個狀態之間切換
Integer / Float / Hex
• 傳整數/浮點數/16進位值給裝置
• 顯示裝置的數值參數。各種感測器
String
• 傳送字串給裝置 / 顯示裝置回傳的字串
GPS (Google Map~)
• 傳送經度、緯度、標高給裝置
• 顯示裝置的GPS座標
日期區間搜尋
GPIO
• 控制/顯示裝置的 GPIO 腳位高低電位
PWM
• 控制/顯示裝置的PWM腳位,可指定範圍
Analog (只有Controller)
• 以滑桿方式送出指定範圍之內的數值
GamePad (只有Controller)
• 這…很直覺吧 MCS教學請點我
MCS 控制 LED 閃爍
Arduino IDE 範例路徑:File/examples/MCS/LED_Control
BlocklyDuino: MCS Blink
MCS 新增on/off
控制器/顯示器各一個
Id: LED_Control
完成如下圖
更新Device Id/Key: #6,7,10
• #define _SSID "Maker_3F_A1"
• #define _KEY "25584819"
• MCSDevice mcs("DT95rNZa",
"QZg3IJdbXXC4uSgr");
Arduino程式說明: #16 17
• MCSControllerOnOff led(“LED_Control");
– 在此填入控制用的Channel id
• MCSDisplayOnOff remote(“LED");
– 在此填入顯示用的Channel id
紅字可修改,在此代表定義一個名為led的MCS OnOff 控制器與名為remote的MCS
OnOff 顯示器
以上圖來說分別是LED_Control與LED
連接channel id 與 mcs: #41 42
• mcs.addChannel(led);
• mcs.addChannel(remote);
持續嘗試連上MCS : #43~47
• while(!mcs.connected())
• {
• Serial.println("MCS.connect()...");
• mcs.connect();
• }
讀取來自MCS的數值: #51~55
• while(!led.valid()) //如果控制器有變化
• {
• Serial.println("read LED value from MCS...");
• led.value(); //取得MCS數值
• }
• Serial.print("done, LED value = ");
• Serial.println(led.value()); //顯示出來
根據MCS數值控制LED: #58
• digitalWrite(LED_PIN,
led.value() ? HIGH : LOW);
led.value() 如為1,則上述判斷結果為 HIGH
反之為 LOW,這樣即可控制LED
更新資料上MCS: #74~78
• if(!remote.set(led.value()))
• {
• Serial.print("Failed to update remote");
• Serial.println(remote.value());
• }
使用remote.set() 把數值更新到指定channel
如果更新資料失敗則顯示錯誤訊息
Serial monitor畫面
改用BlockyDuino玩玩看
78
BlocklyDuino 的MCS相關指令
MCS 雲端控制輕鬆上手
79
請匯入 /code/Blockly/MCS_simple.xml
如.ino修改對應參數即可
執行吧!
• 執行時可看到 MCS test device 名稱左邊亮起綠燈,代表裝置已與 MCS 連通
• 拿起Android裝置打開 MCS app 來玩吧
MCS範例2:上傳A0資料
雲端/code/Arduino/mcs_post.ino
MCS端
• 請新增 Integer顯示頻道,id “Temp”
• 一樣要建立 test device
程式解說,不要填錯#4~8
• char _lwifi_ssid[] = “OOOO";
• char _lwifi_pass[] = “XXXX";
• MCSDevice mcs(“****", “%%%%");
• MCSDisplayInteger Temp("Temp");
程式解說
執行畫面
• Channel右上角 -> Show History data
如何新增觸發條件?
電子郵件、手機推播、webhook
1. 原型:編輯觸發條件與動作
2. 編輯觸發條件
請注意只支援整數/浮點數之顯示器
3. 選擇觸發動作
設定觸發條件完成
還可加入更多動作
開啟推播權限
右上角 / 個人頁面
1. 手機列表 -> 打開您想要接收推播的手機
test device
“觸發條件與動作”--> 管理您的觸發動作來開啟手機推播通知
手機MCS app
手機app端左側 setting -> push notification (應該都會自動啟動,再檢查一下)
手機MCS app
手機app端,在測試裝置右上角檢查 Trigger & Action 是否開啟
[數值超標] 為我們所定義的觸發條件名稱
挑戰:上傳溫度溼度到MCS
路徑:
7697 BLE
範例:
手機:BLE_LED_7697.aia
BlocklyDuino: LBLEperipheral.xml
Arduino: Simpleperipheral.ino
App Inventor介紹
• 圖形化Android開發環境
• App Inventor中文學習網 -教學
• MIT App Inventor -開發
• CAVEDU為 MIT App Inventor 之物聯網教學推廣夥伴
請先上傳simpleperipheral到7697
Serial.print("Device Address = [");
Serial.print(LBLE.getDeviceAddress());
Serial.println("]");
7697 作為BLE裝置名稱可自訂
advertisement.configAsC
onnectableDevice("CAVE
DU");
#43
可透過手機的藍牙介面來掃描
Designer頁面
Blocks
• Addr 要改為您手邊7697的 BLE addr
按鈕來連線與斷線
BLE本身的連線斷線事件
ON/OFF 送出整數 1,0
您可以此為架構來擴充
• 加入更多I/O
• 手機端改為其他的觸發方式:例如Google
語音辨識/ 手機方位感測器等
Arduino程式說明
Simpleperipheral.ino
設定UUID: #16,17
• LBLEService ledService("19B10010-
E8F2-537E-4F6C-D104768A1214");
• LBLECharacteristicInt
switchCharacteristic("19B10011-E8F2-
537E-4F6C-D104768A1214",
LBLE_READ | LBLE_WRITE);
• 需與 App Inventor 端一致
Arduino程式說明:#29~36
• LBLE.begin();
• Serial.print(LBLE.getDeviceAddress());
顯示 7697 的 BLE addr,重要!!
讀取收到的值控制LED:#65~73
• if (switchCharacteristic.isWritten()) {• const char value =
switchCharacteristic.getValue();• switch (value) {• case 1:• digitalWrite(LED_BUILTIN, HIGH);• break;• case 0:• digitalWrite(LED_BUILTIN, LOW);• break;
操作
• 請先上傳7697程式,並開啟 serial monitor
• 檢查一下 App Inventor 中有沒有修改 7697
的 BLE addr
• 先點選 [Connect] 按鈕,如看到[connected]字樣代表連線成功
• 點選 [ON] [OFF] 按鈕即可控制LED亮滅
• 點選 [Disconnect] 按鈕(同Connect) 斷線
參考資料
• MCS 台灣使用者討論 FB 社團
• MCS github
• 機器人王國商城