本系列文將介紹 DuoKit 與 DuoKit Browser 這個 iOS 裝置端的控制方案,您可以透過網頁以及 iOS app ( iphone 或 iPad)與您的 7688 (Arduino Yun系列板子也可以) 開發板互動。
| 作者/攝影 | 曾吉弘 |
| 時間 | 3小時 |
| 成本 |
|
| 難度 | * * * |
| 材料表 |
|
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 服務(預設為關閉):
[pastacode lang=”java” manual=”uci%20set%20yunbridge.config.disabled%3D’0’%0Auci%20commit%0Areboot” message=”” highlight=”” provider=”manual”/] DuoKit 函式庫內建數個範例,草稿碼皆可透過 Arduino IDE 選單中的「檔案 → 範例 → DuoKit」中查看。DuoKit 的基本架構如下: [pastacode lang=”java” manual=”%23include%20%3CDuoKit.h%3E%20%20%20%20%20%20%20%20%20%20%20%09%2F%2F%20%E5%BC%95%E5%85%A5%20DuoKit%20%E5%87%BD%E5%BC%8F%E5%BA%AB%0ADuoKit%20duokit%3B%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%09%2F%2F%20%E5%AE%A3%E5%91%8A%20DuoKit%20%E7%89%A9%E4%BB%B6%0Avoid%20setup()%0A%7B%0A%09duokit.begin()%3B%20%20%2F%2F%20%E5%88%9D%E5%A7%8B%E5%8C%96%20DuoKit%0A%7D%0Avoid%20loop()%0A%7B%0A%09duokit.loop()%3B%09%2F%2F%20DuoKit%20%E6%A0%B8%E5%BF%83%E5%8A%9F%E8%83%BD%0A%7D” message=”” highlight=”” provider=”manual”/]
您可以在原本的專案中加入以上程式碼就能 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.45:http://mylinkit.local/arduino/update/count/123.45
或者,您可以透過 DuoKit Browser 視覺化瀏覽範例內的設定值,詳細請見之後的「透過 DuoKit 定義預設使用者操作介面」內容。
* 註:DuoObject 所使用的字串型別為 String(字串物件)而非 C 語言的 char 陣列。
- 透過 DuoKit 定義預設使用者操作介面:
與變數存取類似,您亦可透過 DuoKit 中的 DuoUI 物件,於 Arduino 草稿碼當中定義一組預設的使用者操作介面設定細節(參考範例「Basic」)。在 DuoKitBrowser 內呈現結果如圖所示:
首先,您必須先初始化一個 DuoUI 陣列(範例中長度為 6):
[pastacode lang=”java” manual=”DuoUI%20layout%5B6%5D%3B” message=”” highlight=”” provider=”manual”/]接著設定陣列內的物件:
[pastacode lang=”java” manual=”void%20setup()%0A%7B%0A%09%2F%2F%20%E7%95%A5%0A%09duokit.layoutProfile%20%3D%20%22Basic%20Controller%E2%80%9D%3B%20%20%2F%2F%20%E8%A3%9D%E7%BD%AE%E5%90%8D%E7%A8%B1%EF%BC%88%E9%81%B8%E6%93%87%E6%80%A7%EF%BC%89%0A%20%0A%09layout%5B0%5D.type%20%20%09%3D%20DuoUIWebUI%3B%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%09%2F%2F%20%E7%AC%AC%E4%B8%80%E5%80%8B%E7%89%A9%E4%BB%B6%E9%A1%9E%E5%9E%8B%E7%82%BA%20WebUI%20%E4%BB%8B%E9%9D%A2%0A%09layout%5B0%5D.name%20%20%09%3D%20%22Access%20WebUI%22%3B%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%09%2F%2F%20%E6%AD%A4%E9%A0%85%E7%9B%AE%E7%9A%84%E8%AA%AA%E6%98%8E%E6%96%87%E5%AD%97%0A%20%0A%09layout%5B1%5D.type%20%20%09%3D%20DuoUISwitch%3B%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%09%2F%2F%20%E7%AC%AC%E4%BA%8C%E5%80%8B%E9%A0%85%E7%9B%AE%E9%A1%9E%E5%9E%8B%E7%82%BA%E9%96%8B%E9%97%9C%0A%09layout%5B1%5D.name%20%20%09%3D%20%22Built-in%20LED%22%3B%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%09%2F%2F%20%E7%AF%84%E4%BE%8B%E7%82%BA%E5%85%A7%E5%BB%BA%E7%9A%84%20LED%20%E7%87%88%0A%09layout%5B1%5D.pin%20%20%20%09%3D%20LED_BUILTIN%3B%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%09%2F%2F%20%E5%85%A7%E5%BB%BA%20LED%20%E7%9A%84%E8%85%B3%E4%BD%8D%EF%BC%8C7688%20Duo%20%E7%82%BA%2013%0A%09layout%5B1%5D.interval%20%20%3D%2010%3B%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%09%2F%2F%20%E8%87%AA%E5%8B%95%E5%88%B7%E6%96%B0%E7%9A%84%E6%99%82%E9%96%93%E9%96%93%E9%9A%94%E3%80%82%E4%B8%8D%E8%A8%AD%E5%AE%9A%E6%88%96%E8%A8%AD%E5%AE%9A%E7%82%BA%200%20%E5%89%87%E5%81%9C%E7%94%A8%E8%87%AA%E5%8B%95%E5%88%B7%E6%96%B0%0A%20%0A%09layout%5B2%5D.type%20%20%09%3D%20DuoUIValueGetter%3B%20%20%20%20%09%2F%2F%20%E7%AC%AC%E4%B8%89%E5%80%8B%E9%A0%85%E7%9B%AE%E9%A1%9E%E5%9E%8B%E7%82%BA%E6%95%B8%E5%80%BC%E9%A1%AF%E7%A4%BA%0A%09layout%5B2%5D.name%20%20%09%3D%20%22Program%20started%22%3B%20%20%20%09%2F%2F%20%E7%AF%84%E4%BE%8B%E7%82%BA%E7%A8%8B%E5%BC%8F%E5%9F%B7%E8%A1%8C%E6%99%82%E9%96%93%0A%09layout%5B2%5D.key%20%20%20%09%3D%20%22boot%22%3B%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%09%2F%2F%20%E7%82%BA%E5%89%8D%E8%BF%B0%20DuoObject%20%E9%99%A3%E5%88%97%E4%B8%AD%E7%9A%84%E5%B0%8D%E6%87%89%E9%97%9C%E9%8D%B5%E5%AD%97%E5%90%8D%E7%A8%B1%0A%09layout%5B2%5D.interval%20%20%3D%205%3B%0A%20%0A%09layout%5B3%5D.type%20%20%09%3D%20DuoUIValueSetter%3B%20%20%20%20%09%2F%2F%20%E7%AC%AC%E4%B8%89%E5%80%8B%E9%A0%85%E7%9B%AE%E9%A1%9E%E5%9E%8B%E7%82%BA%E6%95%B8%E5%80%BC%E8%A8%AD%E5%AE%9A%0A%09layout%5B3%5D.name%20%20%09%3D%20%22This%20is%20count%22%3B%20%20%20%20%20%20%20%20%09%20%20%20%20%20%20%2F%2F%20%E7%AF%84%E4%BE%8B%E7%82%BA%E8%AE%8A%E6%95%B8%E3%80%8Ccount%E3%80%8D%0A%09layout%5B3%5D.key%20%20%20%09%3D%20%22count%22%3B%0A%09layout%5B3%5D.interval%20%20%3D%2010%3B%0A%20%0A%09layout%5B4%5D.type%20%20%09%3D%20DuoUIValueSetter%3B%0A%09layout%5B4%5D.name%20%20%09%3D%20%22This%20is%20fixed%22%3B%0A%09layout%5B4%5D.key%20%20%20%09%3D%20%22fixed%22%3B%0A%09layout%5B4%5D.interval%20%20%3D%2010%3B%0A%20%0A%09layout%5B5%5D.type%20%20%09%3D%20DuoUISlider%3B%20%20%20%20%20%20%20%20%20%20%20%20%20%09%2F%2F%20%E7%AC%AC%E4%BA%94%E5%80%8B%E9%A0%85%E7%9B%AE%E9%A1%9E%E5%9E%8B%E7%82%BA%E6%BB%91%E6%A1%BF%EF%BC%88Slider%EF%BC%89%0A%09layout%5B5%5D.name%20%20%09%3D%20%22Slider%20for%20fixed%22%3B%0A%09layout%5B5%5D.key%09%20%20%20%3D%20%22fixed%22%3B%0A%09layout%5B5%5D.min%20%20%20%09%3D%200%3B%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%09%2F%2F%20%E6%BB%91%E6%A1%BF%E7%9A%84%E6%9C%80%E5%B0%8F%E5%80%BC%0A%09layout%5B5%5D.max%20%20%20%09%3D%209999%3B%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%09%2F%2F%20%E6%BB%91%E6%A1%BF%E7%9A%84%E6%9C%80%E5%A4%A7%E5%80%BC%0A%09layout%5B5%5D.interval%20%20%3D%2010%3B%0A%20%0A%09duokit.setLayout(layout%2C%206)%3B%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%09%2F%2F%20%E5%B0%87%E5%88%9D%E5%A7%8B%E5%8C%96%E5%AE%8C%E6%88%90%E7%9A%84%20DuoUI%20%E9%99%A3%E5%88%97%E6%8C%87%E5%90%91%20DuoKit%20%E7%89%A9%E4%BB%B6%0A%09%2F%2F%20%E7%95%A5%0A%7D%0A” message=”” highlight=”” provider=”manual”/]使用 DuoKit Browser
DuoKit Browser 為 DuoKit 在 iOS 上一款免費且開源的對應控制程式。您只需要具備 iOS 裝置,搭配 DuoKit 即可專注於開發板端的設計,輕鬆透過行動裝置實現智慧家庭;亦可以依自己的需求客製化相關的進階功能,可以免費於 App Store 下載(https://itunes.apple.com/us/app/id1196094443):
您可依照個人喜好或需求更改上述 DuoUI 的值,每個 DuoUI 物件所需的參數可在 DuoKit Github 找到相關文件。
下一篇將介紹如何透過 DuoKit Browser 控制 7688 板子的腳位狀況
相關文章:







