SlideShare a Scribd company logo
1 of 36
物聯網系統與應用
LinkIt Smart 7688 Series
真理大學資訊工程學系
黃信貿、蘇維宗
1
版本控制
• 2016/05/08: 第1.1版(加入HttpClient POST, MCS)
• 2016/03/10: 第1版(Arduino, MRAA, Yun Bridge)
2
簡介
3
LinkIt Smart 7688 Serial
• 處理單元
 MPU: MediaTek MT7688 (580 MHz)
 MCU: Atmega32U4 (7688 Duo only)
 similar to Arduino Leonardo
• 記憶體
 ROM: 32MB
 RAM: 128MB DDR2
• 網路介面
 WiFi 802.11n (1T1R)
 Ethernet (extension board required)
• I/O介面
 Micro USB for PWR/MCU
 Micro USB OTG
 Micro SD card slot
 GPIO, I2C, I2S, SPI, UART, PWM
 USB 2.0 host (extension board required)
• 作業系統
 OpenWrt Linux
4
MT7688 Functional Block*
5
*有些功能在LinkIt Smart 7688中沒有把PIN腳拉出來
開發環境設定
• 開發環境設定概述
 安裝Arduino IDE (建議安裝1.6.5版)
 Step 1. 加入開發版支援套件(將7688開發版資訊匯入Arduino IDE)
 開啟「File」>「Preferences」
 在Additional Boards Manager URL中輸入下列網址
 http://download.labs.mediatek.com/package_mtk_linkit_smart_7688_test_index.json
 Step 2. 安裝開發版支援套件
 開啟「Tools」>「Boards Manager」
 找到MediaTek LinkIt Smart Boards並安裝
 安裝COM Port驅動程式
 安裝SSH客戶端程式(例如,Putty或Tera Term)
• 詳細過程可參閱下列文件
 MediaTek LinkIt™ Smart 7688 Duo Get Started Guide
6
各種在7688 Duo開發的方式
• Programming Arduino (MCU)
• Programming Linux (MPU)
 MRAA
 UPM
• Programming between Arduino and Linux (MCU/MPU)
 Arduino Yun Bridge
 Firmata
 UART
7
Programming Arduino
※ 開發版必須為LinkIt Smart 7688 Duo
8
Programming Arduino
• 適用情境
 需要大量I/O控制而沒有複雜運算的物聯網應用
• 開發環境
 Arduino IDE
• 基本Arduino API請參閱
 https://www.arduino.cc/en/Reference/HomePage
9
Programming Arduino (續)
• Arduino基本程式架構(以範例Blink說明)
int led_pin = 13;
void setup(){ //當MCU啟動後會被執行一次
//將GPIO數位腳位13設定為輸出
pinMode(led_pin, OUTPUT);
}
void loop(){ //重複執行
//數位高電位(LED亮)
digitalWrite(led_pin,HIGH);
delay(1000); //延遲1000微秒(1秒)
//數位低電位(LED暗)
digitalWrite(led_pin,LOW);
delay(1000);
}
• 動手做做看
 結果是什麼?
 試著修改延遲時間
 試著修改腳位
 試著控制多顆LED燈
• 從序列埠輸出/出入資料
int led_pin = 13;
boolean isLedOn = false;
void setup(){
Serial.begin(9600);
pinMode(led_pin, OUTPUT);
digitalWrite(led_pin,LOW);
}
void loop(){
while(Serial.available()){
char cmd = Serial.read(); //從序列埠讀取資料
if(isLedOn == false && cmd == ‘1’){
Serial.println(“LED ON”); //寫入資料到序列埠
digitalWrite(led_pin, HIGH);
isLedOn = true;
}else if(isLedOn == true && cmd ==‘0’){
Serial.println(“LED OFF”);
digitalWrite(led_pin, LOW);
isLedOn = false;
}
}
}
10
Programming Arduino (續)
• 如果是類比訊號輸入呢?
int light_pin = A0;
void setup()
{
Serial.begin(9600);
pinMode(light_pin, INPUT);
}
void loop()
{
//取得類比A0接腳的輸入
int light = analogRead(light_pin);
Serial.println(light);
delay(2000);
}
• 動手做做看
 偵測室內光源,如果
 光源不足,打開LED燈
 光源充足,關閉LED燈
 所需材料(想一想)
• 參考文件
 http://coopermaa2nd.blogspot.tw/2010/12/arduino-
lab8-led.html
11
MRAA
※ 由Intel開發的C/C++函式庫(透過Python, JavaScript, Java來控制I/O)
12
MRAA
• 適用情境
 需要複雜運算但少量I/O控制的物聯網應用
• 開發環境
 Python/Linux via SSH
• 要注意的事項
 MT7688沒有ADC
 MRAA對應腳位要查MT7688規格
• MRAA相關資訊請參閱
 http://iotdk.intel.com/docs/master/mraa/
13
MRAA (續)
• MRAA基本程式架構(以範例Blink說明)
import mraa
import time
print (mraa.getVersion())
# GPIO 17對應到LinkIt Smart 7688 Duo的S0腳位
# 練習時可以試用GPIO 44(對應到LinkIt Smart 7688的WiFi LED)
pin = mraa.Gpio(17)
pin.dir(mraa.DIR_OUT) # 將GPIO設定為輸出
while True:
pin.write(1) #輸出高電位
time.sleep(1) #延遲1秒
pin.write(0) #輸出低電位
time.sleep(1)
14
Arduino Yun Bridge
※ 由Arduino開發的函式庫
15
Arduino Yun Bridge
• 開發環境
 Python/Linux via SSH
 Arduino IDE
• Arduino Yun Bridge相關資訊請參閱
 https://www.arduino.cc/en/Reference/YunBridgeLibrary
• 在OpenWrt Linux中啟用Arduino Yun Bridge
 $ uci set yunbridge.config.disabled=’0’
 $ uci commit
 $ reboot
16
Arduino Yun Bridge
REST API / Internet
運作方向
Internet  HTTP Request  MPU  Bridge  MCU
17
Arduino Yun Bridge - REST API
• 適用情境
 想從網際網路用簡單的HTTP要求進行大量I/O控制的物聯網應用
• 開發環境
 Arduino IDE
• 開發步驟
 設計自己的REST API,例如
 開啟數位腳位13的LED
 http://[URL]/arduino/led/13/on
 關閉數位腳位13的LED
 http://[URL]/arduino/led/13/off
 撰寫Arduino程式處理REST API
18
Arduino Yun Bridge - REST API (續)
• #include<Bridge.h>
#include<YunServer.h>
#include<YunClient.h>
YunServer server;
void setup(){
Bridge.begin();
server.begin();
}
void loop(){
YunClient client = server.accept();
if(client){
process(client);
client.stop();
}
delay(50); //避免同時太多requests
}
• void process(YunClient client){
String cmd = client.readStringUntil(‘/’);
cmd.trim();
//處理led命令
if(cmd == ”led”){
int pin = client.parseInt(); //取得LED腳位
if(client.read()==‘/’) {
String act = client.readString();
act.trim();
if(act == “on”) { //開啟LED
digitalWrite(pin, HIGH);
} else if(act == “off”) {
digitalWrite(pin, LOW);
}
}
}
}
19
Arduino Yun Bridge
REST API / Local
運作方向
Python/MPU  HTTP Request  MPU  Bridge  MCU
20
Arduino Yun Bridge - REST API (續)
• 適用情境
 需要複雜運算且進行大量I/O控制的物聯網應用(限制: 控制頻率不能太高)
• 開發環境
 Python/Linux via SSH
• import httplib
import time
while True:
conn = httplib.HTTPConnection(‘127.0.0.1’)
conn.request(“GET”,”/arduino/led/13/on”)
response = conn.getresponse()
time.sleep(1)
conn = httplib.HTTPConnection(‘127.0.0.1’)
conn.request(“GET”,”/arduino/led/13/off”)
time.sleep(1)
21
Arduino Yun Bridge
HTTP Client
運作方向
MCU  Bridge  MPU  HTTP Request  Internet
22
Arduino Yun Bridge – HttpClient
GET方法
• 適用情境
 想將感測器數值透過HTTP GET Request傳送到
雲端伺服器進行儲存的物聯網應用
• 開發環境
 Arduino IDE
• 必要條件
 確定已經將7688設定成Station Mode並可以連接
上網際網路
• #include<Bridge.h>
#include<HttpClient.h>
void setup() {
Serial.begin(9600);
Bridge.begin();
}
void loop() {
HttpClient client;
client.get([URL]);
while(client.available()) {
char c = client.read();
Serial.print(c);
}
Serial.flush();
delay(5000);
}
23
Arduino Yun Bridge – HttpClient
POST方法
• #include<Bridge.h>
#include<HttpClient.h>
void setup() {
Serial.begin(9600);
Bridge.begin();
}
void loop() {
HttpClient client;
// Set all header fields in one method
client.setHeader(“Host: api.mediatek.comrn”
“Content-type: application/json”);
client.post([URL],[DATA]);
while(client.available()) {
char c = client.read();
Serial.print(c);
}
Serial.flush();
delay(5000);
}
24
Arduino JSON Library
• Arduino JSON library
 https://github.com/bblanchon/ArduinoJson
 下載原始碼解壓縮後放在Arduino/libraries目錄中
• JSON格式範例(以MediaTek Cloud Sandbox為例)
 {
datapoints:
[
{
“dataChnId”: “1”,
“timestamp”: 12345,
“values”: {
“value”: 20
}
}
]
}
 程式碼(接下頁)
25
Arduino JSON Library (續)
• //產生JSON字串的緩衝區
StaticJsonBuffer<150> jsonBuffer;
//產生最外層的JSON Object
JsonObject& root = jsonBuffer.createObject();
//加入資料(key為datapoints, value為一個JSON Array)
//{“datapoints”:[]}
JsonArray& data = root.createNestedArray(“datapoints”);
//在JSON Array中加入一個JSON Object
//{“datapoints”:[{}]}
JsonObject& channel = data.createNestedObject();
//在此JSON Object中加入資料(key為dataChnId, value為1)
//{“datapoints”:[{“dataChnId”:”1”}]}
channel[“dataChnId”] = “1”;
//在此JSON Object中加入資料(key為timestamp, value為12345)
//{“datapoints”:[{“dataChnId”:”1”,“timestamp”:1235}]}
channel[“timestamp”] = 12345;
//在此JSON Object中加入資料(key為values, value為一個JSON Object)
//{“datapoints”:[{“dataChnId”:”1”,“timestamp”:1235,”values”:{}}]}
JsonObject& values = channel.createNestedObject("values");
//在此JSON Object中加入資料(key為value, value為20)
//{“datapoints”:[{“dataChnId”:”1”,“timestamp”:1235,”values”:{“value”:20}}]}
values["value"] = 20;
26
Arduino Yun Bridge
HTTP Client with
MediaTek Cloud Sandbox (MCS)
運作方向
MCU  Bridge  MPU  HTTP Request  Internet
27
MediaTek Cloud Sandbox (MCS)
• MCS是聯發科提供的物聯網雲端服務
 官方網站: https://mcs.mediatek.com/
• 如何將資料傳送到MCS?
28
MCS設定
• Step 1: 產生原型
 點選「開發」>「原型」
 選「創建」產生新的原型
29
MCS設定(續)
• Step 1: 產生原型
 點選「開發」>「原型」
 選「創建」產生新的原型
• Step 2: 新增資料通道
 以「顯示器」顯示溫度為例
30
MCS設定(續)
• Step 1: 產生原型
 點選「開發」>「原型」
 選「創建」產生新的原型
• Step 2: 新增資料通道
 以「顯示器」顯示溫度為例
 “資料通道Id”之後會用到
31
MCS設定(續)
• Step 1: 產生原型
 點選「開發」>「原型」
 選「創建」產生新的原型
• Step 2: 新增資料通道
 以「顯示器」顯示溫度為例
 “資料通道Id”之後會用到
• Step 3: 創建測試裝置
 “DeviceId”與”DeviceKey”
之後會用到
32
透過HTTP將資料傳送到MCS
• 只能用HTTP POST方法
 URL
 https://api.mediatek.com/mcs/v2/devices/[DeviceId]/datapoints
 Header
 deviceKey: [DeviceKey]
 Content-Type: application/json
 Body
 {
"datapoints":[
{ "dataChnId":"563T",
"timestamp":1432538716989,
"values":{"value":"26"}
}
]
}
• 參考資料
 https://mcs.mediatek.com/resources/zh-TW/latest/api_references/
33
透過HTTP將資料傳送到MCS(續)
以Arduino實作發出HTTP POST要求
• #include <ArduinoJson.h>
#include <Bridge.h>
#include <HttpClient.h>
#include <Time.h>
HttpClient http;
int tempPin = A0;
int value = 0;
void setup()
{
pinMode(A0, INPUT);
Serial.begin(9600);
Bridge.begin();
}
void loop()
{
http.setHeader(
“deviceKey: [DeviceKey]rn”
“Content-Type: application/json”);
value = analogRead(tempPin);
String url =
“https://api.mediatek.com/mcs/v2/devices/[DeviceId]/datapoints”;
String json = genJSON(value);
int result = http.post(url, json);
while(http.available()) {
char c = http.read();
Serial.print(c);
}
Serial.flush();
delay(10000);
}
• String genJSON(int value)
{
time_t unixtime = now();
StaticJsonBuffer<150> jsonBuffer;
JsonObject& root = jsonBuffer.createObject();
JsonArray& data =
root.createNestedArray("datapoints");
JsonObject& channel =
data.createNestedObject();
channel["dataChnId"] = “563T”;
channel["timestamp"] = unixtime;
JsonObject& values =
channel.createNestedObject("values");
values["value"] = value;
String temp;
root.printTo(temp);
return temp;
}
34
Firmata
35
安裝firmata
• https://pypi.python.org/pypi/pyFirmata
• 為了讓python程式可以與Arduino溝通
• Arduino端
 寫入firmata sketch
• Linux端
 from firmata import Arduino, util
board = Arduino(‘/dev/ttyXXX’)
Dpin = board.get_pin(‘d:13:o’) #將數位接腳13設定為輸出
Dpin.write(1)
it = util.Iterator(board)
it.start()
Apin = board.get_pin(‘a:0:I’) #將類比接腳0設定為輸入
value = Apin.read()
36

More Related Content

What's hot

Unifi Log 收容與看板應用
Unifi Log 收容與看板應用Unifi Log 收容與看板應用
Unifi Log 收容與看板應用Jason Cheng
 
Using VPP and SRIO-V with Clear Containers
Using VPP and SRIO-V with Clear ContainersUsing VPP and SRIO-V with Clear Containers
Using VPP and SRIO-V with Clear ContainersMichelle Holley
 
論理回路シミュレータ Logisim の使い方
論理回路シミュレータ Logisim の使い方論理回路シミュレータ Logisim の使い方
論理回路シミュレータ Logisim の使い方Takashi Kawanami
 
Uboot startup sequence
Uboot startup sequenceUboot startup sequence
Uboot startup sequenceHoucheng Lin
 
バイナリアンを目指して For a binaryen
バイナリアンを目指して For a binaryenバイナリアンを目指して For a binaryen
バイナリアンを目指して For a binaryenEyes, JAPAN
 
FreeNAS 企業應用經驗分享 [2016/12/17] @台中資策會
FreeNAS 企業應用經驗分享 [2016/12/17] @台中資策會FreeNAS 企業應用經驗分享 [2016/12/17] @台中資策會
FreeNAS 企業應用經驗分享 [2016/12/17] @台中資策會Jason Cheng
 
たのしいPowershell Empire
たのしいPowershell EmpireたのしいPowershell Empire
たのしいPowershell Empiremonochrojazz
 
SDK for NFC Starter Kit(2) 使ってみる
SDK for NFC Starter Kit(2) 使ってみるSDK for NFC Starter Kit(2) 使ってみる
SDK for NFC Starter Kit(2) 使ってみるHirokuma Ueno
 
Introduction to eBPF and XDP
Introduction to eBPF and XDPIntroduction to eBPF and XDP
Introduction to eBPF and XDPlcplcp1
 
DMA Survival Guide
DMA Survival GuideDMA Survival Guide
DMA Survival GuideKernel TLV
 
明日からはじめるネットワーク運用自動化
明日からはじめるネットワーク運用自動化明日からはじめるネットワーク運用自動化
明日からはじめるネットワーク運用自動化Taiji Tsuchiya
 
Fun with Network Interfaces
Fun with Network InterfacesFun with Network Interfaces
Fun with Network InterfacesKernel TLV
 
ゼロから始める自作 CPU 入門
ゼロから始める自作 CPU 入門ゼロから始める自作 CPU 入門
ゼロから始める自作 CPU 入門Hirotaka Kawata
 
Introduction of AMD Virtual Interrupt Controller
Introduction of AMD Virtual Interrupt ControllerIntroduction of AMD Virtual Interrupt Controller
Introduction of AMD Virtual Interrupt ControllerThe Linux Foundation
 
Debian Linux on Zynq (Xilinx ARM-SoC FPGA) Setup Flow (Vivado 2015.4)
Debian Linux on Zynq (Xilinx ARM-SoC FPGA) Setup Flow (Vivado 2015.4)Debian Linux on Zynq (Xilinx ARM-SoC FPGA) Setup Flow (Vivado 2015.4)
Debian Linux on Zynq (Xilinx ARM-SoC FPGA) Setup Flow (Vivado 2015.4)Shinya Takamaeda-Y
 
TensorFlow Lite Delegateとは?
TensorFlow Lite Delegateとは?TensorFlow Lite Delegateとは?
TensorFlow Lite Delegateとは?Mr. Vengineer
 

What's hot (20)

Unifi Log 收容與看板應用
Unifi Log 收容與看板應用Unifi Log 收容與看板應用
Unifi Log 收容與看板應用
 
Using VPP and SRIO-V with Clear Containers
Using VPP and SRIO-V with Clear ContainersUsing VPP and SRIO-V with Clear Containers
Using VPP and SRIO-V with Clear Containers
 
論理回路シミュレータ Logisim の使い方
論理回路シミュレータ Logisim の使い方論理回路シミュレータ Logisim の使い方
論理回路シミュレータ Logisim の使い方
 
詳説WebAssembly
詳説WebAssembly詳説WebAssembly
詳説WebAssembly
 
Uboot startup sequence
Uboot startup sequenceUboot startup sequence
Uboot startup sequence
 
バイナリアンを目指して For a binaryen
バイナリアンを目指して For a binaryenバイナリアンを目指して For a binaryen
バイナリアンを目指して For a binaryen
 
FreeNAS 企業應用經驗分享 [2016/12/17] @台中資策會
FreeNAS 企業應用經驗分享 [2016/12/17] @台中資策會FreeNAS 企業應用經驗分享 [2016/12/17] @台中資策會
FreeNAS 企業應用經驗分享 [2016/12/17] @台中資策會
 
たのしいPowershell Empire
たのしいPowershell EmpireたのしいPowershell Empire
たのしいPowershell Empire
 
ARM and SoC Traning Part II - System
ARM and SoC Traning Part II - SystemARM and SoC Traning Part II - System
ARM and SoC Traning Part II - System
 
SDK for NFC Starter Kit(2) 使ってみる
SDK for NFC Starter Kit(2) 使ってみるSDK for NFC Starter Kit(2) 使ってみる
SDK for NFC Starter Kit(2) 使ってみる
 
Introduction to eBPF and XDP
Introduction to eBPF and XDPIntroduction to eBPF and XDP
Introduction to eBPF and XDP
 
DMA Survival Guide
DMA Survival GuideDMA Survival Guide
DMA Survival Guide
 
明日からはじめるネットワーク運用自動化
明日からはじめるネットワーク運用自動化明日からはじめるネットワーク運用自動化
明日からはじめるネットワーク運用自動化
 
Fun with Network Interfaces
Fun with Network InterfacesFun with Network Interfaces
Fun with Network Interfaces
 
Porting Android
Porting AndroidPorting Android
Porting Android
 
ゼロから始める自作 CPU 入門
ゼロから始める自作 CPU 入門ゼロから始める自作 CPU 入門
ゼロから始める自作 CPU 入門
 
Introduction of AMD Virtual Interrupt Controller
Introduction of AMD Virtual Interrupt ControllerIntroduction of AMD Virtual Interrupt Controller
Introduction of AMD Virtual Interrupt Controller
 
レシピの作り方入門
レシピの作り方入門レシピの作り方入門
レシピの作り方入門
 
Debian Linux on Zynq (Xilinx ARM-SoC FPGA) Setup Flow (Vivado 2015.4)
Debian Linux on Zynq (Xilinx ARM-SoC FPGA) Setup Flow (Vivado 2015.4)Debian Linux on Zynq (Xilinx ARM-SoC FPGA) Setup Flow (Vivado 2015.4)
Debian Linux on Zynq (Xilinx ARM-SoC FPGA) Setup Flow (Vivado 2015.4)
 
TensorFlow Lite Delegateとは?
TensorFlow Lite Delegateとは?TensorFlow Lite Delegateとは?
TensorFlow Lite Delegateとは?
 

Viewers also liked

MQTT簡介與使用開放原始碼
MQTT簡介與使用開放原始碼MQTT簡介與使用開放原始碼
MQTT簡介與使用開放原始碼Wei-Tsung Su
 
LinkIt Smart 7688 Duo and MCS basics
LinkIt Smart 7688 Duo and MCS basicsLinkIt Smart 7688 Duo and MCS basics
LinkIt Smart 7688 Duo and MCS basicsCAVEDU Education
 
Peripheral Programming using Arduino and Python on MediaTek LinkIt Smart 7688...
Peripheral Programming using Arduino and Python on MediaTek LinkIt Smart 7688...Peripheral Programming using Arduino and Python on MediaTek LinkIt Smart 7688...
Peripheral Programming using Arduino and Python on MediaTek LinkIt Smart 7688...MediaTek Labs
 
C Cross Compile for Linkit Smart 7688
C Cross Compile for Linkit Smart 7688C Cross Compile for Linkit Smart 7688
C Cross Compile for Linkit Smart 7688Nattapong Rodmuang
 
軟體系統測試簡介
軟體系統測試簡介軟體系統測試簡介
軟體系統測試簡介Wei-Tsung Su
 
台灣樹莓派 2016/12/26 #17 站在Nas的中心呼喊物聯網 QNAP QIoT
台灣樹莓派 2016/12/26 #17 站在Nas的中心呼喊物聯網 QNAP QIoT台灣樹莓派 2016/12/26 #17 站在Nas的中心呼喊物聯網 QNAP QIoT
台灣樹莓派 2016/12/26 #17 站在Nas的中心呼喊物聯網 QNAP QIoTAnderson Cheng
 
How to create your Smart Toy with bluemix & 7688 Duo board
How to create your Smart Toy with bluemix & 7688 Duo boardHow to create your Smart Toy with bluemix & 7688 Duo board
How to create your Smart Toy with bluemix & 7688 Duo board湯米吳 Tommy Wu
 
Arduino 底層原始碼解析心得
Arduino 底層原始碼解析心得Arduino 底層原始碼解析心得
Arduino 底層原始碼解析心得roboard
 
超酷炫科幻 UI:QML 入門
超酷炫科幻 UI:QML 入門超酷炫科幻 UI:QML 入門
超酷炫科幻 UI:QML 入門Fred Chien
 
Introducing MQTT
Introducing MQTTIntroducing MQTT
Introducing MQTTAndy Piper
 
MQTT - A practical protocol for the Internet of Things
MQTT - A practical protocol for the Internet of ThingsMQTT - A practical protocol for the Internet of Things
MQTT - A practical protocol for the Internet of ThingsBryan Boyd
 
Project humix overview - For Raspberry pi community meetup
Project humix overview - For  Raspberry pi  community meetupProject humix overview - For  Raspberry pi  community meetup
Project humix overview - For Raspberry pi community meetupJeffrey Liu
 
以物聯網打造智慧城市研討會簡報
以物聯網打造智慧城市研討會簡報以物聯網打造智慧城市研討會簡報
以物聯網打造智慧城市研討會簡報Taipei Smart City PMO
 
BBS crawler for Taiwan
BBS crawler for TaiwanBBS crawler for Taiwan
BBS crawler for TaiwanBuganini Chiu
 
自己的空汙自己測動手玩 Lass(location aware sensor system)感測資料
自己的空汙自己測動手玩 Lass(location aware sensor system)感測資料自己的空汙自己測動手玩 Lass(location aware sensor system)感測資料
自己的空汙自己測動手玩 Lass(location aware sensor system)感測資料Wayne Chen
 
Introduction to Version Control
Introduction to Version ControlIntroduction to Version Control
Introduction to Version ControlWei-Tsung Su
 
Google Glass - Unit01: Design
Google Glass - Unit01: DesignGoogle Glass - Unit01: Design
Google Glass - Unit01: DesignWei-Tsung Su
 
Introduction to OAuth
Introduction to OAuthIntroduction to OAuth
Introduction to OAuthWei-Tsung Su
 
Arduino Yun Mini - 使用SQLite
Arduino Yun Mini - 使用SQLiteArduino Yun Mini - 使用SQLite
Arduino Yun Mini - 使用SQLiteWei-Tsung Su
 

Viewers also liked (20)

MQTT簡介與使用開放原始碼
MQTT簡介與使用開放原始碼MQTT簡介與使用開放原始碼
MQTT簡介與使用開放原始碼
 
LinkIt Smart 7688 Duo and MCS basics
LinkIt Smart 7688 Duo and MCS basicsLinkIt Smart 7688 Duo and MCS basics
LinkIt Smart 7688 Duo and MCS basics
 
Peripheral Programming using Arduino and Python on MediaTek LinkIt Smart 7688...
Peripheral Programming using Arduino and Python on MediaTek LinkIt Smart 7688...Peripheral Programming using Arduino and Python on MediaTek LinkIt Smart 7688...
Peripheral Programming using Arduino and Python on MediaTek LinkIt Smart 7688...
 
C Cross Compile for Linkit Smart 7688
C Cross Compile for Linkit Smart 7688C Cross Compile for Linkit Smart 7688
C Cross Compile for Linkit Smart 7688
 
軟體系統測試簡介
軟體系統測試簡介軟體系統測試簡介
軟體系統測試簡介
 
台灣樹莓派 2016/12/26 #17 站在Nas的中心呼喊物聯網 QNAP QIoT
台灣樹莓派 2016/12/26 #17 站在Nas的中心呼喊物聯網 QNAP QIoT台灣樹莓派 2016/12/26 #17 站在Nas的中心呼喊物聯網 QNAP QIoT
台灣樹莓派 2016/12/26 #17 站在Nas的中心呼喊物聯網 QNAP QIoT
 
How to create your Smart Toy with bluemix & 7688 Duo board
How to create your Smart Toy with bluemix & 7688 Duo boardHow to create your Smart Toy with bluemix & 7688 Duo board
How to create your Smart Toy with bluemix & 7688 Duo board
 
Arduino 底層原始碼解析心得
Arduino 底層原始碼解析心得Arduino 底層原始碼解析心得
Arduino 底層原始碼解析心得
 
超酷炫科幻 UI:QML 入門
超酷炫科幻 UI:QML 入門超酷炫科幻 UI:QML 入門
超酷炫科幻 UI:QML 入門
 
Introducing MQTT
Introducing MQTTIntroducing MQTT
Introducing MQTT
 
MQTT - A practical protocol for the Internet of Things
MQTT - A practical protocol for the Internet of ThingsMQTT - A practical protocol for the Internet of Things
MQTT - A practical protocol for the Internet of Things
 
Project humix overview - For Raspberry pi community meetup
Project humix overview - For  Raspberry pi  community meetupProject humix overview - For  Raspberry pi  community meetup
Project humix overview - For Raspberry pi community meetup
 
以物聯網打造智慧城市研討會簡報
以物聯網打造智慧城市研討會簡報以物聯網打造智慧城市研討會簡報
以物聯網打造智慧城市研討會簡報
 
BBS crawler for Taiwan
BBS crawler for TaiwanBBS crawler for Taiwan
BBS crawler for Taiwan
 
自己的空汙自己測動手玩 Lass(location aware sensor system)感測資料
自己的空汙自己測動手玩 Lass(location aware sensor system)感測資料自己的空汙自己測動手玩 Lass(location aware sensor system)感測資料
自己的空汙自己測動手玩 Lass(location aware sensor system)感測資料
 
Introduction to Version Control
Introduction to Version ControlIntroduction to Version Control
Introduction to Version Control
 
Google Glass - Unit01: Design
Google Glass - Unit01: DesignGoogle Glass - Unit01: Design
Google Glass - Unit01: Design
 
創業的藝術
創業的藝術創業的藝術
創業的藝術
 
Introduction to OAuth
Introduction to OAuthIntroduction to OAuth
Introduction to OAuth
 
Arduino Yun Mini - 使用SQLite
Arduino Yun Mini - 使用SQLiteArduino Yun Mini - 使用SQLite
Arduino Yun Mini - 使用SQLite
 

Similar to LinkIt Smart 7688程式開發

160603 T客邦7688物聯網實作坊
160603  T客邦7688物聯網實作坊160603  T客邦7688物聯網實作坊
160603 T客邦7688物聯網實作坊CAVEDU Education
 
LinkIt 7697 開發平台簡介 (Traditional Chinese)
LinkIt 7697 開發平台簡介 (Traditional Chinese)LinkIt 7697 開發平台簡介 (Traditional Chinese)
LinkIt 7697 開發平台簡介 (Traditional Chinese)Bear Wang
 
20170415- 智慧空調通訊系統實務_柯大
20170415- 智慧空調通訊系統實務_柯大20170415- 智慧空調通訊系統實務_柯大
20170415- 智慧空調通訊系統實務_柯大MAKERPRO.cc
 
181201_CoAP_coding365
181201_CoAP_coding365181201_CoAP_coding365
181201_CoAP_coding365Peter Yi
 
物聯網技術分享 使用ESP8266
物聯網技術分享 使用ESP8266物聯網技術分享 使用ESP8266
物聯網技術分享 使用ESP8266Power Wu
 
物聯網科技與實作 Iot technology and projects
物聯網科技與實作 Iot technology and projects物聯網科技與實作 Iot technology and projects
物聯網科技與實作 Iot technology and projectsKuo-Yi Chen
 
2018 VLSI/CAD Symposium Tutorial (Aug. 7, 20:00-21:00 Room 3F-VII)
2018 VLSI/CAD Symposium Tutorial (Aug. 7, 20:00-21:00 Room 3F-VII)2018 VLSI/CAD Symposium Tutorial (Aug. 7, 20:00-21:00 Room 3F-VII)
2018 VLSI/CAD Symposium Tutorial (Aug. 7, 20:00-21:00 Room 3F-VII)Simen Li
 
智慧家庭 簡報
智慧家庭 簡報智慧家庭 簡報
智慧家庭 簡報艾鍗科技
 
Arduino Yun Mini簡介
Arduino Yun Mini簡介Arduino Yun Mini簡介
Arduino Yun Mini簡介Wei-Tsung Su
 
探索 ISTIO 新型 DATA PLANE 架構 AMBIENT MESH - GOLANG TAIWAN GATHERING #77 X CNTUG
探索 ISTIO 新型 DATA PLANE 架構 AMBIENT MESH - GOLANG TAIWAN GATHERING #77 X CNTUG探索 ISTIO 新型 DATA PLANE 架構 AMBIENT MESH - GOLANG TAIWAN GATHERING #77 X CNTUG
探索 ISTIO 新型 DATA PLANE 架構 AMBIENT MESH - GOLANG TAIWAN GATHERING #77 X CNTUGYingSiang Geng
 
Hadoop+spark實作
Hadoop+spark實作Hadoop+spark實作
Hadoop+spark實作FEG
 
Tiny6410um hw-20101026
Tiny6410um hw-20101026Tiny6410um hw-20101026
Tiny6410um hw-20101026syed_sifa
 
Arduino Basic
Arduino BasicArduino Basic
Arduino Basicmmiwwcom
 
2015 JSDC Build Anything with JavaScript
2015 JSDC Build Anything with JavaScript2015 JSDC Build Anything with JavaScript
2015 JSDC Build Anything with JavaScriptWeb Arduino
 

Similar to LinkIt Smart 7688程式開發 (20)

LinkIt 7697 IoT tutorial
LinkIt 7697 IoT tutorialLinkIt 7697 IoT tutorial
LinkIt 7697 IoT tutorial
 
160603 T客邦7688物聯網實作坊
160603  T客邦7688物聯網實作坊160603  T客邦7688物聯網實作坊
160603 T客邦7688物聯網實作坊
 
LinkIt 7697 開發平台簡介 (Traditional Chinese)
LinkIt 7697 開發平台簡介 (Traditional Chinese)LinkIt 7697 開發平台簡介 (Traditional Chinese)
LinkIt 7697 開發平台簡介 (Traditional Chinese)
 
20170415- 智慧空調通訊系統實務_柯大
20170415- 智慧空調通訊系統實務_柯大20170415- 智慧空調通訊系統實務_柯大
20170415- 智慧空調通訊系統實務_柯大
 
Tcfsh bootcamp day2
 Tcfsh bootcamp day2 Tcfsh bootcamp day2
Tcfsh bootcamp day2
 
nodeMCU IOT教學03 - NodeMCU導論
nodeMCU IOT教學03 - NodeMCU導論nodeMCU IOT教學03 - NodeMCU導論
nodeMCU IOT教學03 - NodeMCU導論
 
nodeMCU IOT教學03 - NodeMCU導論
nodeMCU IOT教學03 - NodeMCU導論nodeMCU IOT教學03 - NodeMCU導論
nodeMCU IOT教學03 - NodeMCU導論
 
181201_CoAP_coding365
181201_CoAP_coding365181201_CoAP_coding365
181201_CoAP_coding365
 
物聯網技術分享 使用ESP8266
物聯網技術分享 使用ESP8266物聯網技術分享 使用ESP8266
物聯網技術分享 使用ESP8266
 
物聯網科技與實作 Iot technology and projects
物聯網科技與實作 Iot technology and projects物聯網科技與實作 Iot technology and projects
物聯網科技與實作 Iot technology and projects
 
2018 VLSI/CAD Symposium Tutorial (Aug. 7, 20:00-21:00 Room 3F-VII)
2018 VLSI/CAD Symposium Tutorial (Aug. 7, 20:00-21:00 Room 3F-VII)2018 VLSI/CAD Symposium Tutorial (Aug. 7, 20:00-21:00 Room 3F-VII)
2018 VLSI/CAD Symposium Tutorial (Aug. 7, 20:00-21:00 Room 3F-VII)
 
智慧家庭 簡報
智慧家庭 簡報智慧家庭 簡報
智慧家庭 簡報
 
Arduino Yun Mini簡介
Arduino Yun Mini簡介Arduino Yun Mini簡介
Arduino Yun Mini簡介
 
探索 ISTIO 新型 DATA PLANE 架構 AMBIENT MESH - GOLANG TAIWAN GATHERING #77 X CNTUG
探索 ISTIO 新型 DATA PLANE 架構 AMBIENT MESH - GOLANG TAIWAN GATHERING #77 X CNTUG探索 ISTIO 新型 DATA PLANE 架構 AMBIENT MESH - GOLANG TAIWAN GATHERING #77 X CNTUG
探索 ISTIO 新型 DATA PLANE 架構 AMBIENT MESH - GOLANG TAIWAN GATHERING #77 X CNTUG
 
Hadoop+spark實作
Hadoop+spark實作Hadoop+spark實作
Hadoop+spark實作
 
Tiny6410um hw-20101026
Tiny6410um hw-20101026Tiny6410um hw-20101026
Tiny6410um hw-20101026
 
Arduino導讀
Arduino導讀Arduino導讀
Arduino導讀
 
Arduino Basic
Arduino BasicArduino Basic
Arduino Basic
 
S4A
S4AS4A
S4A
 
2015 JSDC Build Anything with JavaScript
2015 JSDC Build Anything with JavaScript2015 JSDC Build Anything with JavaScript
2015 JSDC Build Anything with JavaScript
 

Recently uploaded

我了解到黑客在某些领域拥有卓越的技术能力,特别是在处理系统漏洞方面。在当前的情境下,如果我想要改变我的毕业成绩,他们的帮助或许是我唯一可行的选择。【微 t...
我了解到黑客在某些领域拥有卓越的技术能力,特别是在处理系统漏洞方面。在当前的情境下,如果我想要改变我的毕业成绩,他们的帮助或许是我唯一可行的选择。【微 t...我了解到黑客在某些领域拥有卓越的技术能力,特别是在处理系统漏洞方面。在当前的情境下,如果我想要改变我的毕业成绩,他们的帮助或许是我唯一可行的选择。【微 t...
我了解到黑客在某些领域拥有卓越的技术能力,特别是在处理系统漏洞方面。在当前的情境下,如果我想要改变我的毕业成绩,他们的帮助或许是我唯一可行的选择。【微 t...黑客 接单【TG/微信qoqoqdqd】
 
JAWAPAN BUKU AKTIVITI BAHASA CINA TAHUN 3.pptx
JAWAPAN BUKU AKTIVITI BAHASA CINA TAHUN 3.pptxJAWAPAN BUKU AKTIVITI BAHASA CINA TAHUN 3.pptx
JAWAPAN BUKU AKTIVITI BAHASA CINA TAHUN 3.pptxCHANSUITNEEMoe
 
【国外大学文凭样本】多大毕业证认证Q/微:892798920办多伦多大学毕业证留信留服使馆公公证,多大硕士毕业证,U of T研究生毕业证,文凭,改U o...
【国外大学文凭样本】多大毕业证认证Q/微:892798920办多伦多大学毕业证留信留服使馆公公证,多大硕士毕业证,U of T研究生毕业证,文凭,改U o...【国外大学文凭样本】多大毕业证认证Q/微:892798920办多伦多大学毕业证留信留服使馆公公证,多大硕士毕业证,U of T研究生毕业证,文凭,改U o...
【国外大学文凭样本】多大毕业证认证Q/微:892798920办多伦多大学毕业证留信留服使馆公公证,多大硕士毕业证,U of T研究生毕业证,文凭,改U o...ggbob1
 
加急代办一个日本鹿儿岛纯心女子大学学位记🌈学习成绩单电子版定制🌈仿制荷兰大学毕业证🌈日语JLPT证书定制
加急代办一个日本鹿儿岛纯心女子大学学位记🌈学习成绩单电子版定制🌈仿制荷兰大学毕业证🌈日语JLPT证书定制加急代办一个日本鹿儿岛纯心女子大学学位记🌈学习成绩单电子版定制🌈仿制荷兰大学毕业证🌈日语JLPT证书定制
加急代办一个日本鹿儿岛纯心女子大学学位记🌈学习成绩单电子版定制🌈仿制荷兰大学毕业证🌈日语JLPT证书定制bairnshajjes
 
GPA低怎么办? | 身份黑后回复方案 | 出入境激活 身份恢复美本GPA太低了怎么办黑客服务,黑客修改大学成绩,黑客改成绩单,黑客入侵教务系统,找黑客修...
GPA低怎么办? | 身份黑后回复方案 | 出入境激活 身份恢复美本GPA太低了怎么办黑客服务,黑客修改大学成绩,黑客改成绩单,黑客入侵教务系统,找黑客修...GPA低怎么办? | 身份黑后回复方案 | 出入境激活 身份恢复美本GPA太低了怎么办黑客服务,黑客修改大学成绩,黑客改成绩单,黑客入侵教务系统,找黑客修...
GPA低怎么办? | 身份黑后回复方案 | 出入境激活 身份恢复美本GPA太低了怎么办黑客服务,黑客修改大学成绩,黑客改成绩单,黑客入侵教务系统,找黑客修...黑客 接单【TG/微信qoqoqdqd】
 
未毕业在线购买日本熊本县立大学学位记🏆学习成绩单电子版定制🏆克隆爱尔兰大学文凭🏆CFA证书定制
未毕业在线购买日本熊本县立大学学位记🏆学习成绩单电子版定制🏆克隆爱尔兰大学文凭🏆CFA证书定制未毕业在线购买日本熊本县立大学学位记🏆学习成绩单电子版定制🏆克隆爱尔兰大学文凭🏆CFA证书定制
未毕业在线购买日本熊本县立大学学位记🏆学习成绩单电子版定制🏆克隆爱尔兰大学文凭🏆CFA证书定制gravestomas0
 
【創業簡報練習】當一個人吃飯會想起誰: (A)I-DOLL 陪吃娃娃|科技創業與營運實務
【創業簡報練習】當一個人吃飯會想起誰:(A)I-DOLL 陪吃娃娃|科技創業與營運實務【創業簡報練習】當一個人吃飯會想起誰:(A)I-DOLL 陪吃娃娃|科技創業與營運實務
【創業簡報練習】當一個人吃飯會想起誰: (A)I-DOLL 陪吃娃娃|科技創業與營運實務sardinesaying
 
哪里可以购买日本神奈川县立保健福祉大学学位记/录取通知书可以制作吗/补办马来西亚大学文凭/CIA证书定制
哪里可以购买日本神奈川县立保健福祉大学学位记/录取通知书可以制作吗/补办马来西亚大学文凭/CIA证书定制哪里可以购买日本神奈川县立保健福祉大学学位记/录取通知书可以制作吗/补办马来西亚大学文凭/CIA证书定制
哪里可以购买日本神奈川县立保健福祉大学学位记/录取通知书可以制作吗/补办马来西亚大学文凭/CIA证书定制kathrynalvarez364
 
Grade 6 Lesson 7 Environment Protection.pptx
Grade 6 Lesson 7 Environment Protection.pptxGrade 6 Lesson 7 Environment Protection.pptx
Grade 6 Lesson 7 Environment Protection.pptxPriscilleXu
 
30T.ppt【国外大学文凭样本】TWU毕业证认证Q/微:892798920办西三一大学毕业证留信留服使馆公证,TWU硕士毕业证,TWU研究生毕业证,文凭...
30T.ppt【国外大学文凭样本】TWU毕业证认证Q/微:892798920办西三一大学毕业证留信留服使馆公证,TWU硕士毕业证,TWU研究生毕业证,文凭...30T.ppt【国外大学文凭样本】TWU毕业证认证Q/微:892798920办西三一大学毕业证留信留服使馆公证,TWU硕士毕业证,TWU研究生毕业证,文凭...
30T.ppt【国外大学文凭样本】TWU毕业证认证Q/微:892798920办西三一大学毕业证留信留服使馆公证,TWU硕士毕业证,TWU研究生毕业证,文凭...ggbob1
 
003 DSKP KSSR SEMAKAN 2017 BAHASA CINA TAHUN 3.pdf
003 DSKP KSSR SEMAKAN 2017 BAHASA CINA TAHUN 3.pdf003 DSKP KSSR SEMAKAN 2017 BAHASA CINA TAHUN 3.pdf
003 DSKP KSSR SEMAKAN 2017 BAHASA CINA TAHUN 3.pdfshanshanhui1
 

Recently uploaded (11)

我了解到黑客在某些领域拥有卓越的技术能力,特别是在处理系统漏洞方面。在当前的情境下,如果我想要改变我的毕业成绩,他们的帮助或许是我唯一可行的选择。【微 t...
我了解到黑客在某些领域拥有卓越的技术能力,特别是在处理系统漏洞方面。在当前的情境下,如果我想要改变我的毕业成绩,他们的帮助或许是我唯一可行的选择。【微 t...我了解到黑客在某些领域拥有卓越的技术能力,特别是在处理系统漏洞方面。在当前的情境下,如果我想要改变我的毕业成绩,他们的帮助或许是我唯一可行的选择。【微 t...
我了解到黑客在某些领域拥有卓越的技术能力,特别是在处理系统漏洞方面。在当前的情境下,如果我想要改变我的毕业成绩,他们的帮助或许是我唯一可行的选择。【微 t...
 
JAWAPAN BUKU AKTIVITI BAHASA CINA TAHUN 3.pptx
JAWAPAN BUKU AKTIVITI BAHASA CINA TAHUN 3.pptxJAWAPAN BUKU AKTIVITI BAHASA CINA TAHUN 3.pptx
JAWAPAN BUKU AKTIVITI BAHASA CINA TAHUN 3.pptx
 
【国外大学文凭样本】多大毕业证认证Q/微:892798920办多伦多大学毕业证留信留服使馆公公证,多大硕士毕业证,U of T研究生毕业证,文凭,改U o...
【国外大学文凭样本】多大毕业证认证Q/微:892798920办多伦多大学毕业证留信留服使馆公公证,多大硕士毕业证,U of T研究生毕业证,文凭,改U o...【国外大学文凭样本】多大毕业证认证Q/微:892798920办多伦多大学毕业证留信留服使馆公公证,多大硕士毕业证,U of T研究生毕业证,文凭,改U o...
【国外大学文凭样本】多大毕业证认证Q/微:892798920办多伦多大学毕业证留信留服使馆公公证,多大硕士毕业证,U of T研究生毕业证,文凭,改U o...
 
加急代办一个日本鹿儿岛纯心女子大学学位记🌈学习成绩单电子版定制🌈仿制荷兰大学毕业证🌈日语JLPT证书定制
加急代办一个日本鹿儿岛纯心女子大学学位记🌈学习成绩单电子版定制🌈仿制荷兰大学毕业证🌈日语JLPT证书定制加急代办一个日本鹿儿岛纯心女子大学学位记🌈学习成绩单电子版定制🌈仿制荷兰大学毕业证🌈日语JLPT证书定制
加急代办一个日本鹿儿岛纯心女子大学学位记🌈学习成绩单电子版定制🌈仿制荷兰大学毕业证🌈日语JLPT证书定制
 
GPA低怎么办? | 身份黑后回复方案 | 出入境激活 身份恢复美本GPA太低了怎么办黑客服务,黑客修改大学成绩,黑客改成绩单,黑客入侵教务系统,找黑客修...
GPA低怎么办? | 身份黑后回复方案 | 出入境激活 身份恢复美本GPA太低了怎么办黑客服务,黑客修改大学成绩,黑客改成绩单,黑客入侵教务系统,找黑客修...GPA低怎么办? | 身份黑后回复方案 | 出入境激活 身份恢复美本GPA太低了怎么办黑客服务,黑客修改大学成绩,黑客改成绩单,黑客入侵教务系统,找黑客修...
GPA低怎么办? | 身份黑后回复方案 | 出入境激活 身份恢复美本GPA太低了怎么办黑客服务,黑客修改大学成绩,黑客改成绩单,黑客入侵教务系统,找黑客修...
 
未毕业在线购买日本熊本县立大学学位记🏆学习成绩单电子版定制🏆克隆爱尔兰大学文凭🏆CFA证书定制
未毕业在线购买日本熊本县立大学学位记🏆学习成绩单电子版定制🏆克隆爱尔兰大学文凭🏆CFA证书定制未毕业在线购买日本熊本县立大学学位记🏆学习成绩单电子版定制🏆克隆爱尔兰大学文凭🏆CFA证书定制
未毕业在线购买日本熊本县立大学学位记🏆学习成绩单电子版定制🏆克隆爱尔兰大学文凭🏆CFA证书定制
 
【創業簡報練習】當一個人吃飯會想起誰: (A)I-DOLL 陪吃娃娃|科技創業與營運實務
【創業簡報練習】當一個人吃飯會想起誰:(A)I-DOLL 陪吃娃娃|科技創業與營運實務【創業簡報練習】當一個人吃飯會想起誰:(A)I-DOLL 陪吃娃娃|科技創業與營運實務
【創業簡報練習】當一個人吃飯會想起誰: (A)I-DOLL 陪吃娃娃|科技創業與營運實務
 
哪里可以购买日本神奈川县立保健福祉大学学位记/录取通知书可以制作吗/补办马来西亚大学文凭/CIA证书定制
哪里可以购买日本神奈川县立保健福祉大学学位记/录取通知书可以制作吗/补办马来西亚大学文凭/CIA证书定制哪里可以购买日本神奈川县立保健福祉大学学位记/录取通知书可以制作吗/补办马来西亚大学文凭/CIA证书定制
哪里可以购买日本神奈川县立保健福祉大学学位记/录取通知书可以制作吗/补办马来西亚大学文凭/CIA证书定制
 
Grade 6 Lesson 7 Environment Protection.pptx
Grade 6 Lesson 7 Environment Protection.pptxGrade 6 Lesson 7 Environment Protection.pptx
Grade 6 Lesson 7 Environment Protection.pptx
 
30T.ppt【国外大学文凭样本】TWU毕业证认证Q/微:892798920办西三一大学毕业证留信留服使馆公证,TWU硕士毕业证,TWU研究生毕业证,文凭...
30T.ppt【国外大学文凭样本】TWU毕业证认证Q/微:892798920办西三一大学毕业证留信留服使馆公证,TWU硕士毕业证,TWU研究生毕业证,文凭...30T.ppt【国外大学文凭样本】TWU毕业证认证Q/微:892798920办西三一大学毕业证留信留服使馆公证,TWU硕士毕业证,TWU研究生毕业证,文凭...
30T.ppt【国外大学文凭样本】TWU毕业证认证Q/微:892798920办西三一大学毕业证留信留服使馆公证,TWU硕士毕业证,TWU研究生毕业证,文凭...
 
003 DSKP KSSR SEMAKAN 2017 BAHASA CINA TAHUN 3.pdf
003 DSKP KSSR SEMAKAN 2017 BAHASA CINA TAHUN 3.pdf003 DSKP KSSR SEMAKAN 2017 BAHASA CINA TAHUN 3.pdf
003 DSKP KSSR SEMAKAN 2017 BAHASA CINA TAHUN 3.pdf
 

LinkIt Smart 7688程式開發

  • 1. 物聯網系統與應用 LinkIt Smart 7688 Series 真理大學資訊工程學系 黃信貿、蘇維宗 1
  • 2. 版本控制 • 2016/05/08: 第1.1版(加入HttpClient POST, MCS) • 2016/03/10: 第1版(Arduino, MRAA, Yun Bridge) 2
  • 4. LinkIt Smart 7688 Serial • 處理單元  MPU: MediaTek MT7688 (580 MHz)  MCU: Atmega32U4 (7688 Duo only)  similar to Arduino Leonardo • 記憶體  ROM: 32MB  RAM: 128MB DDR2 • 網路介面  WiFi 802.11n (1T1R)  Ethernet (extension board required) • I/O介面  Micro USB for PWR/MCU  Micro USB OTG  Micro SD card slot  GPIO, I2C, I2S, SPI, UART, PWM  USB 2.0 host (extension board required) • 作業系統  OpenWrt Linux 4
  • 5. MT7688 Functional Block* 5 *有些功能在LinkIt Smart 7688中沒有把PIN腳拉出來
  • 6. 開發環境設定 • 開發環境設定概述  安裝Arduino IDE (建議安裝1.6.5版)  Step 1. 加入開發版支援套件(將7688開發版資訊匯入Arduino IDE)  開啟「File」>「Preferences」  在Additional Boards Manager URL中輸入下列網址  http://download.labs.mediatek.com/package_mtk_linkit_smart_7688_test_index.json  Step 2. 安裝開發版支援套件  開啟「Tools」>「Boards Manager」  找到MediaTek LinkIt Smart Boards並安裝  安裝COM Port驅動程式  安裝SSH客戶端程式(例如,Putty或Tera Term) • 詳細過程可參閱下列文件  MediaTek LinkIt™ Smart 7688 Duo Get Started Guide 6
  • 7. 各種在7688 Duo開發的方式 • Programming Arduino (MCU) • Programming Linux (MPU)  MRAA  UPM • Programming between Arduino and Linux (MCU/MPU)  Arduino Yun Bridge  Firmata  UART 7
  • 9. Programming Arduino • 適用情境  需要大量I/O控制而沒有複雜運算的物聯網應用 • 開發環境  Arduino IDE • 基本Arduino API請參閱  https://www.arduino.cc/en/Reference/HomePage 9
  • 10. Programming Arduino (續) • Arduino基本程式架構(以範例Blink說明) int led_pin = 13; void setup(){ //當MCU啟動後會被執行一次 //將GPIO數位腳位13設定為輸出 pinMode(led_pin, OUTPUT); } void loop(){ //重複執行 //數位高電位(LED亮) digitalWrite(led_pin,HIGH); delay(1000); //延遲1000微秒(1秒) //數位低電位(LED暗) digitalWrite(led_pin,LOW); delay(1000); } • 動手做做看  結果是什麼?  試著修改延遲時間  試著修改腳位  試著控制多顆LED燈 • 從序列埠輸出/出入資料 int led_pin = 13; boolean isLedOn = false; void setup(){ Serial.begin(9600); pinMode(led_pin, OUTPUT); digitalWrite(led_pin,LOW); } void loop(){ while(Serial.available()){ char cmd = Serial.read(); //從序列埠讀取資料 if(isLedOn == false && cmd == ‘1’){ Serial.println(“LED ON”); //寫入資料到序列埠 digitalWrite(led_pin, HIGH); isLedOn = true; }else if(isLedOn == true && cmd ==‘0’){ Serial.println(“LED OFF”); digitalWrite(led_pin, LOW); isLedOn = false; } } } 10
  • 11. Programming Arduino (續) • 如果是類比訊號輸入呢? int light_pin = A0; void setup() { Serial.begin(9600); pinMode(light_pin, INPUT); } void loop() { //取得類比A0接腳的輸入 int light = analogRead(light_pin); Serial.println(light); delay(2000); } • 動手做做看  偵測室內光源,如果  光源不足,打開LED燈  光源充足,關閉LED燈  所需材料(想一想) • 參考文件  http://coopermaa2nd.blogspot.tw/2010/12/arduino- lab8-led.html 11
  • 13. MRAA • 適用情境  需要複雜運算但少量I/O控制的物聯網應用 • 開發環境  Python/Linux via SSH • 要注意的事項  MT7688沒有ADC  MRAA對應腳位要查MT7688規格 • MRAA相關資訊請參閱  http://iotdk.intel.com/docs/master/mraa/ 13
  • 14. MRAA (續) • MRAA基本程式架構(以範例Blink說明) import mraa import time print (mraa.getVersion()) # GPIO 17對應到LinkIt Smart 7688 Duo的S0腳位 # 練習時可以試用GPIO 44(對應到LinkIt Smart 7688的WiFi LED) pin = mraa.Gpio(17) pin.dir(mraa.DIR_OUT) # 將GPIO設定為輸出 while True: pin.write(1) #輸出高電位 time.sleep(1) #延遲1秒 pin.write(0) #輸出低電位 time.sleep(1) 14
  • 15. Arduino Yun Bridge ※ 由Arduino開發的函式庫 15
  • 16. Arduino Yun Bridge • 開發環境  Python/Linux via SSH  Arduino IDE • Arduino Yun Bridge相關資訊請參閱  https://www.arduino.cc/en/Reference/YunBridgeLibrary • 在OpenWrt Linux中啟用Arduino Yun Bridge  $ uci set yunbridge.config.disabled=’0’  $ uci commit  $ reboot 16
  • 17. Arduino Yun Bridge REST API / Internet 運作方向 Internet  HTTP Request  MPU  Bridge  MCU 17
  • 18. Arduino Yun Bridge - REST API • 適用情境  想從網際網路用簡單的HTTP要求進行大量I/O控制的物聯網應用 • 開發環境  Arduino IDE • 開發步驟  設計自己的REST API,例如  開啟數位腳位13的LED  http://[URL]/arduino/led/13/on  關閉數位腳位13的LED  http://[URL]/arduino/led/13/off  撰寫Arduino程式處理REST API 18
  • 19. Arduino Yun Bridge - REST API (續) • #include<Bridge.h> #include<YunServer.h> #include<YunClient.h> YunServer server; void setup(){ Bridge.begin(); server.begin(); } void loop(){ YunClient client = server.accept(); if(client){ process(client); client.stop(); } delay(50); //避免同時太多requests } • void process(YunClient client){ String cmd = client.readStringUntil(‘/’); cmd.trim(); //處理led命令 if(cmd == ”led”){ int pin = client.parseInt(); //取得LED腳位 if(client.read()==‘/’) { String act = client.readString(); act.trim(); if(act == “on”) { //開啟LED digitalWrite(pin, HIGH); } else if(act == “off”) { digitalWrite(pin, LOW); } } } } 19
  • 20. Arduino Yun Bridge REST API / Local 運作方向 Python/MPU  HTTP Request  MPU  Bridge  MCU 20
  • 21. Arduino Yun Bridge - REST API (續) • 適用情境  需要複雜運算且進行大量I/O控制的物聯網應用(限制: 控制頻率不能太高) • 開發環境  Python/Linux via SSH • import httplib import time while True: conn = httplib.HTTPConnection(‘127.0.0.1’) conn.request(“GET”,”/arduino/led/13/on”) response = conn.getresponse() time.sleep(1) conn = httplib.HTTPConnection(‘127.0.0.1’) conn.request(“GET”,”/arduino/led/13/off”) time.sleep(1) 21
  • 22. Arduino Yun Bridge HTTP Client 運作方向 MCU  Bridge  MPU  HTTP Request  Internet 22
  • 23. Arduino Yun Bridge – HttpClient GET方法 • 適用情境  想將感測器數值透過HTTP GET Request傳送到 雲端伺服器進行儲存的物聯網應用 • 開發環境  Arduino IDE • 必要條件  確定已經將7688設定成Station Mode並可以連接 上網際網路 • #include<Bridge.h> #include<HttpClient.h> void setup() { Serial.begin(9600); Bridge.begin(); } void loop() { HttpClient client; client.get([URL]); while(client.available()) { char c = client.read(); Serial.print(c); } Serial.flush(); delay(5000); } 23
  • 24. Arduino Yun Bridge – HttpClient POST方法 • #include<Bridge.h> #include<HttpClient.h> void setup() { Serial.begin(9600); Bridge.begin(); } void loop() { HttpClient client; // Set all header fields in one method client.setHeader(“Host: api.mediatek.comrn” “Content-type: application/json”); client.post([URL],[DATA]); while(client.available()) { char c = client.read(); Serial.print(c); } Serial.flush(); delay(5000); } 24
  • 25. Arduino JSON Library • Arduino JSON library  https://github.com/bblanchon/ArduinoJson  下載原始碼解壓縮後放在Arduino/libraries目錄中 • JSON格式範例(以MediaTek Cloud Sandbox為例)  { datapoints: [ { “dataChnId”: “1”, “timestamp”: 12345, “values”: { “value”: 20 } } ] }  程式碼(接下頁) 25
  • 26. Arduino JSON Library (續) • //產生JSON字串的緩衝區 StaticJsonBuffer<150> jsonBuffer; //產生最外層的JSON Object JsonObject& root = jsonBuffer.createObject(); //加入資料(key為datapoints, value為一個JSON Array) //{“datapoints”:[]} JsonArray& data = root.createNestedArray(“datapoints”); //在JSON Array中加入一個JSON Object //{“datapoints”:[{}]} JsonObject& channel = data.createNestedObject(); //在此JSON Object中加入資料(key為dataChnId, value為1) //{“datapoints”:[{“dataChnId”:”1”}]} channel[“dataChnId”] = “1”; //在此JSON Object中加入資料(key為timestamp, value為12345) //{“datapoints”:[{“dataChnId”:”1”,“timestamp”:1235}]} channel[“timestamp”] = 12345; //在此JSON Object中加入資料(key為values, value為一個JSON Object) //{“datapoints”:[{“dataChnId”:”1”,“timestamp”:1235,”values”:{}}]} JsonObject& values = channel.createNestedObject("values"); //在此JSON Object中加入資料(key為value, value為20) //{“datapoints”:[{“dataChnId”:”1”,“timestamp”:1235,”values”:{“value”:20}}]} values["value"] = 20; 26
  • 27. Arduino Yun Bridge HTTP Client with MediaTek Cloud Sandbox (MCS) 運作方向 MCU  Bridge  MPU  HTTP Request  Internet 27
  • 28. MediaTek Cloud Sandbox (MCS) • MCS是聯發科提供的物聯網雲端服務  官方網站: https://mcs.mediatek.com/ • 如何將資料傳送到MCS? 28
  • 29. MCS設定 • Step 1: 產生原型  點選「開發」>「原型」  選「創建」產生新的原型 29
  • 30. MCS設定(續) • Step 1: 產生原型  點選「開發」>「原型」  選「創建」產生新的原型 • Step 2: 新增資料通道  以「顯示器」顯示溫度為例 30
  • 31. MCS設定(續) • Step 1: 產生原型  點選「開發」>「原型」  選「創建」產生新的原型 • Step 2: 新增資料通道  以「顯示器」顯示溫度為例  “資料通道Id”之後會用到 31
  • 32. MCS設定(續) • Step 1: 產生原型  點選「開發」>「原型」  選「創建」產生新的原型 • Step 2: 新增資料通道  以「顯示器」顯示溫度為例  “資料通道Id”之後會用到 • Step 3: 創建測試裝置  “DeviceId”與”DeviceKey” 之後會用到 32
  • 33. 透過HTTP將資料傳送到MCS • 只能用HTTP POST方法  URL  https://api.mediatek.com/mcs/v2/devices/[DeviceId]/datapoints  Header  deviceKey: [DeviceKey]  Content-Type: application/json  Body  { "datapoints":[ { "dataChnId":"563T", "timestamp":1432538716989, "values":{"value":"26"} } ] } • 參考資料  https://mcs.mediatek.com/resources/zh-TW/latest/api_references/ 33
  • 34. 透過HTTP將資料傳送到MCS(續) 以Arduino實作發出HTTP POST要求 • #include <ArduinoJson.h> #include <Bridge.h> #include <HttpClient.h> #include <Time.h> HttpClient http; int tempPin = A0; int value = 0; void setup() { pinMode(A0, INPUT); Serial.begin(9600); Bridge.begin(); } void loop() { http.setHeader( “deviceKey: [DeviceKey]rn” “Content-Type: application/json”); value = analogRead(tempPin); String url = “https://api.mediatek.com/mcs/v2/devices/[DeviceId]/datapoints”; String json = genJSON(value); int result = http.post(url, json); while(http.available()) { char c = http.read(); Serial.print(c); } Serial.flush(); delay(10000); } • String genJSON(int value) { time_t unixtime = now(); StaticJsonBuffer<150> jsonBuffer; JsonObject& root = jsonBuffer.createObject(); JsonArray& data = root.createNestedArray("datapoints"); JsonObject& channel = data.createNestedObject(); channel["dataChnId"] = “563T”; channel["timestamp"] = unixtime; JsonObject& values = channel.createNestedObject("values"); values["value"] = value; String temp; root.printTo(temp); return temp; } 34
  • 36. 安裝firmata • https://pypi.python.org/pypi/pyFirmata • 為了讓python程式可以與Arduino溝通 • Arduino端  寫入firmata sketch • Linux端  from firmata import Arduino, util board = Arduino(‘/dev/ttyXXX’) Dpin = board.get_pin(‘d:13:o’) #將數位接腳13設定為輸出 Dpin.write(1) it = util.Iterator(board) it.start() Apin = board.get_pin(‘a:0:I’) #將類比接腳0設定為輸入 value = Apin.read() 36