【開箱評測】用Mbed上手開發DSI 2599開發板

作者/圖片提供:賴建宏(賴桑)

最近拿到的這個物聯網智造基地與新唐(Nuvoton)聯名推出的DSI 2599開發套件來玩,從它的線上說明書兩個檔案,一個是標準的使用手冊,另一個是進階版手冊,看也知道它是個Mbed OS規格下的開發環境,所以啦~簡單有力,很容易就上手了!

DSI 2599的正面

DSI 2599的反面

不難看出來,DSI 2599除了本身就高度相容於開發者就熟悉的ARM Mbed OS開發環境外,還把Wi-Fi功能(ESP-12-F WiFi Adapter)也一併整合了進來,不只如此,還有連音效的Audio Jack、SD卡、RJ-45的網路線,以及將一大堆感測器(如九軸運動感測器)都給整合在同一個板上,便利性當然不在話下。

由於這款產品的前身是新唐的NuMaker-IoT-M487,所以下文實測的一些資料仍會出現這個產品序號,在此先說明一下,例如產品規格可參考此連結

DSI 2599整合了ESP-12-F WiFi Adapter來提供Wi-Fi功能

裝備

  • Windows 10 PC一台
  • DSI 2599一片
  • 一條MicroUSB,就智慧手機對電腦的MicroUSB即可

安裝方式

我們這次只用Mbed線上的Compiler,所以原則上除了驅動程式(待會會給大家看到),你的PC就沒有甚麼東西需要安裝。

開始跑個範例看看

Mbed線上的Compiler很簡單又不要錢,因為Mbed Studio網站就提供了,如圖右上角按一下,馬上就有!至於甚麼使用者註冊啦~那種就照各位意思去填寫囉!

進入Mbed線上的Compiler環境

對於第一次上手Mbed的各位大大,我是有特別錄製一個YouTube影片告訴大家DSI 2599怎麼用、怎麼接才對,你們可以試試看:

至於影片裡面提到的驅動程式Nu-Link 1.6 USB driver,其實就在Add Board按下之後,找到這個網頁,往下捲動一點點就有!

找出來DSI 2599(即M487)的USB驅動程式

正常的Mbed開發板,在你驅動程式安裝成功後,一旦透過USB連接上PC與DSI 2599,一定會像是影片中那樣多出來一個虛擬磁碟機!看影片照著做很容易了吧~

把感測值上傳到ThingSpeak

問題是光這樣也太無聊了!恰巧嘛…我的博士學位主攻AIoT在農業的應用,所以囉,關於環境感測的數據收集後,透過通訊系統傳上雲端這可是超想知道。幸好,DSI 2599有提供Wi-Fi連線功能,我們就來試試看吧!

首先,當然先利用Mbed線上的Compiler幫我們產生一個樣板,這樣我們寫起來才簡單!這裡提供個小技巧:以後用Mbed線上的Compiler之前,先看右上角目前選擇的開發板是不是你要的,如前所述,DSI 2599的圖示仍會以出現M487的序號:

確認一下選到的是DSI 2599(即出現NuMaker-IoT-M487)

然後,找螢幕左上方有個New的下拉選單按鈕,這之後會跳個對話方塊出來,就挑NuMaker WiFi TCP Example這一個。

新增一個Mbed OS專案

挑選WiFi的範例

從這個範例裡面,可以很明顯地看懂了吧?事實上程式的動作原理,就是連接上WiFi,接著啟用TCP,所以呢…透過字串組成HTTP再用TCP丟出去,這個只要玩過一些像是寫爬蟲抓網頁、呼叫RESTful API的大大們,應該一眼就看穿了吧。

第一次使用的人也沒關係,接著看下去吧。首先我們先準備一個ThingSpeak的Channel,讓我們的感測值可以上傳,這之前一大堆文章都介紹過了!好比四年前我就寫過這篇,動手試試幾次就會,反正不難而且沒超過它的限制就免費,當然用囉。

對了!感測值怎麼抓?其實這也是很簡單,因為Mbed OS的設計是把所有的功能、特色當成一種物件來看待,因而只要把我們要的類比對數位轉換接腳宣告後,就能用了!像是AnalogIn就是宣告某個接腳當成類比輸入的腳位,官網都還提供免費說明跟案例哩。其他種你想得到的,都能在官網上直接查詢得到,比方講DigitalOut、DigitalIn…等。

有關Mbed OS的所有設計跟API都能在官網查詢

所以要怎樣改:

1.HTTP_SERVER_NAME、HTTP_SERVER_FILE_PATH改成thingspeak.com、/update

2.加上AnalogIn以及一個字元陣列,如圖,字元陣列的用途是晚點我們要把讀取到的感測值,由於是數字得轉成字串才可以透過HTTP傳給ThingSpeak。

宣告用A0當類比輸入

  1. 用C語言的sprintf()、strcpy()、strcat()合成HTTP,如圖,然後都一樣送出去給ThingSpeak。

讀取類比輸入然後組成HTTP

  1. 在main()裡面做成一個while(1)的迴圈,迴圈就是把main()裡面所有的指令都包含。

還有點模糊的話,我這裡有提供完整的原始程式碼。另外,別忘記還一件事:WiFi用哪一個?還有密碼哩?記得打開mbed_app.json這個檔案,mbed_app.json可說每個專案都有,其實就是設定檔案啦。

設定M487用的WiFi

這裡要注意一下:SSID就是你的AP,另一個當然就是密碼囉,而且兩個都有 “\” 這樣的標記在前後,別把那個標記拿掉喔,要不然等一下編譯會錯誤。

電路部分超級簡單!就是個固定電阻串聯可變電阻,然後以3.3VDC來分壓給A0讀取,實際執行效果,就可以看我的影片當參考。

接上A0的分壓電路示意圖

IDEAS Chain平台讓你輕鬆搞定IoT專案

不過看了看ThingSpeak的介面,我覺得應該不少人會想到:『就這個?看了幾百次,為什麼不能指定我要的顯示方式?那我又不只一個裝置在感測…』等一堆黑人問號。其實呢,這裡鋪陳一下,實際上資策會在這方面有提供IDEAS Chain這平台就可以辦到這種自訂UI的效果,這裡先大概描述一下,之後有另一篇文帶各位逐一自訂出自己的物聯網界面。

IDEAS Chain可輕鬆根據專案的特性來加以規畫(Source

IDEAS Chain的設計是以專案為出發點,每個專案可以涵蓋有不同的裝置,這些裝置可以各自有不同的感測與控制項目,藉由專案當中心,以專案去關聯各個裝置,這樣一來每個裝置的上傳數據與反應動作,就通通都可以輕鬆根據專案的特性來加以規畫了!

可以先試著進行看看,當你第一次完成註冊後應該會收到一封啟動帳號的電子郵件,完成帳號認證後,從『數據平台』進入,就可以看懂我說的是甚麼了,假如有哪個大大有興趣,可以參考以前社團就發過的文,自己動手先在下一篇文之前試試看。

小結

DSI 2599效果還算不錯啦,語法上與目前大多數人愛用的Arduino雖然不太一樣,但對於使用C開發過微控器應用的人來說,不算大更動!更何況Arduino Uno用的接腳跟DSI 2599一樣,無痛接軌來講是可行的。

但還是得再次提醒大家:DSI 2599的電壓跟Arduino Uno那些可是不一樣的,Arduino Uno上很多模組跟程式都是用5V DC,但DSI 2599只用3.3V DC,供電時可得小心點囉。

「經濟部工業局廣告」

賴建宏

Author: 賴建宏

社群稱號為「賴桑」的他,以電子電機的背景,熱衷於OSHW的應用開發與實作。取得台北科技大學電子所博士學位,目前主推「農林漁牧大業」計畫的迷你型魚菜共生系統開發。

Share This Post On
Subscribe
Notify of
guest
0 Comments
Inline Feedbacks
View all comments
0
Would love your thoughts, please comment.x
()
x