[DuoKit Browser ] 7688物聯網開發板的iOS解決方案

本系列文將介紹 DuoKit 與 DuoKit Browser 這個 iOS 裝置端的控制方案,您可以透過網頁以及 iOS app ( iphone 或 iPad)與您的 7688 (Arduino Yun系列板子也可以) 開發板互動。

作者/攝影   曾吉弘
時間   3小時
成本
難度   * * *
材料表
  • iOS 裝置,例如 iphone 與 ipad,作業系統版本為 iOS7以上
  • 7688 Duo 開發板  


DuoKit 為聯發科技為 LinkIt Smart 7688 Duo 以及其他 Arduino Yún 相容開發板(Arduino + OpenWRT)建構的開源專案,只需要簡單設定就能控制/存取區域網路內的開發板。此外,DuoKit運作時不需要外部網路連線也不需要中央雲服務,控制端裝置僅需與開發板位於同一區域網路之中,即可從行動裝置端(手機或電腦)進行偵測與存取。也不需要額外申請帳號,更適合隱私需求較高的智慧家庭環境。

如果您擁有 iOS 裝置(例如:iPhone、iPad),DuoKit Browser 為 DuoKit 所對應的管理工具,或透過瀏覽器使用 REST API 進行相關控制,或自行撰寫您常用用平台上的控制工具。

本文將介紹如何匯入 DuoKit 函式庫到您的 Arduino IDE中,就能透過 Restful API 控制/讀取7688 Duo 的腳位狀態。

DuoKit 環境設定

    接著介紹如何建置 DuoKit 所需的運作和開發環境。

安裝 Arduino 函式庫

  • 請下載Arduino IDE (http://arduino.cc),解壓縮即可  
  • 請到 GitHub 下載 DuoKit 的最新版本函式庫(https://github.com/x43x61x69/DuoKit/archive/master.zip),並解壓縮。
  • 開啟 Arduino IDE,點選「 Sktech → Include Library → Add .ZIP Library…

  • 選取於上一步驟中解壓縮文件夾內的「lib → Arduino → DuoKit」資料夾並按「選擇」,完成之後即可在 Example下看到 DuoKit 這個資料夾。

開發板設定:首次使用 DuoKit 時,依據開發板型號需先進行相關設定。

  • 請先確認您的 LinkIt Smart 7688 Duo 韌體版本是否為 0.9.4 或更高的版本,以避免網路相關的問題(版本可透過開發板 WebUI 介面查詢)。
  • 使用 putty 或其他連線程式連線至您的裝置,在terminal中使用下列指令開啟的 Yún Bridge 服務(預設為關閉):

 

uci set yunbridge.config.disabled='0'
uci commit
reboot

DuoKit 函式庫內建數個範例,草稿碼皆可透過 Arduino IDE 選單中的「檔案 → 範例 → DuoKit」中查看。DuoKit 的基本架構如下:

#include <DuoKit.h>           	// 引入 DuoKit 函式庫
DuoKit duokit;                    	// 宣告 DuoKit 物件
void setup()
{
	duokit.begin();  // 初始化 DuoKit
}
void loop()
{
	duokit.loop();	// DuoKit 核心功能
}

您可以在原本的專案中加入以上程式碼就能 DuoKit 大多數的功能,例如:透過 DuoKit Browser 對開發板進行基本控制。DuoKit 包含了多項進階功能:

  • 設定腳位I/O模式
  • 存取腳位狀態
  • 存取變數
  • 自定義使用者介面

  DuoKit Browser則可實作上述的功能,只要加入對應的程式碼即可透過 DuoKit Browser 控制 7688 Duo 開發板。

 

請上傳範例「Basic」至開發板,即可透過 REST API 存取相關變數(以 LinkIt Smart 7688 Duo 預設名稱為例):

  •  讀取變數「count」: http://mylinkit.local/arduino/read/count
  •  修改變數「count」為 123.45http://mylinkit.local/arduino/update/count/123.45

或者,您可以透過 DuoKit Browser 視覺化瀏覽範例內的設定值,詳細請見之後的「透過 DuoKit 定義預設使用者操作介面」內容。

* 註:DuoObject 所使用的字串型別為 String(字串物件)而非 C 語言的 char 陣列。

  •  透過 DuoKit 定義預設使用者操作介面:

與變數存取類似,您亦可透過 DuoKit 中的 DuoUI 物件,於 Arduino 草稿碼當中定義一組預設的使用者操作介面設定細節(參考範例「Basic」)。在 DuoKitBrowser 內呈現結果如圖所示:

首先,您必須先初始化一個 DuoUI 陣列(範例中長度為 6):

DuoUI layout[6];

接著設定陣列內的物件:

void setup()
{
	// 略
	duokit.layoutProfile = "Basic Controller”;  // 裝置名稱(選擇性)
 
	layout[0].type  	= DuoUIWebUI;                           	// 第一個物件類型為 WebUI 介面
	layout[0].name  	= "Access WebUI";                    	// 此項目的說明文字
 
	layout[1].type  	= DuoUISwitch;                          	// 第二個項目類型為開關
	layout[1].name  	= "Built-in LED";                        	// 範例為內建的 LED 燈
	layout[1].pin   	= LED_BUILTIN;                          	// 內建 LED 的腳位,7688 Duo 為 13
	layout[1].interval  = 10;                                             	// 自動刷新的時間間隔。不設定或設定為 0 則停用自動刷新
 
	layout[2].type  	= DuoUIValueGetter;    	// 第三個項目類型為數值顯示
	layout[2].name  	= "Program started";   	// 範例為程式執行時間
	layout[2].key   	= "boot";                                    	// 為前述 DuoObject 陣列中的對應關鍵字名稱
	layout[2].interval  = 5;
 
	layout[3].type  	= DuoUIValueSetter;    	// 第三個項目類型為數值設定
	layout[3].name  	= "This is count";        	      // 範例為變數「count」
	layout[3].key   	= "count";
	layout[3].interval  = 10;
 
	layout[4].type  	= DuoUIValueSetter;
	layout[4].name  	= "This is fixed";
	layout[4].key   	= "fixed";
	layout[4].interval  = 10;
 
	layout[5].type  	= DuoUISlider;             	// 第五個項目類型為滑桿(Slider)
	layout[5].name  	= "Slider for fixed";
	layout[5].key	   = "fixed";
	layout[5].min   	= 0;                                            	// 滑桿的最小值
	layout[5].max   	= 9999;                                     	// 滑桿的最大值
	layout[5].interval  = 10;
 
	duokit.setLayout(layout, 6);                                        	// 將初始化完成的 DuoUI 陣列指向 DuoKit 物件
	// 略
}

使用 DuoKit Browser

DuoKit Browser 為 DuoKit 在 iOS 上一款免費且開源的對應控制程式。您只需要具備 iOS 裝置,搭配 DuoKit 即可專注於開發板端的設計,輕鬆透過行動裝置實現智慧家庭;亦可以依自己的需求客製化相關的進階功能,可以免費於 App Store 下載(https://itunes.apple.com/us/app/id1196094443):

您可依照個人喜好或需求更改上述 DuoUI 的值,每個 DuoUI 物件所需的參數可在 DuoKit Github 找到相關文件。

下一篇將介紹如何透過 DuoKit Browser 控制 7688 板子的腳位狀況

相關文章:

 

Leave a comment

Your email address will not be published.


*