Microsoft IoT Starter Kit 開發初體驗


1. 引子

    今年6月底,在上海舉辦的中國國際物聯網大會上,微軟中國面向中國物聯網社區推出了Microsoft IoT Starter Kit ,並且免費開放1000套的申請。申請地址為:http://aka.ms/iotkits,目前仍然有效。當時一開放申請,我就在線填寫了申請表,接下來就是長長的等待。相信很多朋友都是一樣,在經過幾個月的等待之后,終於拿到了這個開發套件,而有些朋友估計還在等待中。因為官方是一個月處理並郵寄一批,速度不是很快。但是,在經過了一段時間使用以后,我可以說,如果朋友們期待在這個最初版本的套件上開發基於Windows 10 IoT Core的程序的話,那么,還得再等等,因為后續的升級版本套件還在測試中。如果你有Linux和Arduino的基礎,那么,恭喜你,你可以快速上手用了。接下來,就從我自己的角度,和大家分享這個套件的使用初體驗。

2.開發套件硬件

    首先,我們來看一看硬件配置,這次拿到的開發套件是微軟物聯網開發套件A型,包含了SeeeduinoCloud和Orange Pi Lite兩塊開發板,外圍設備方面,包含Grove接口擴展板、200萬像素攝像頭、板載麥克風、溫濕度傳感器、光敏傳感器、RGB燈、聲音傳感器、板載WIFI模塊、8G Micro SD存儲卡、一根MicroUSB線(給SeeeduinoCloud供電)和一根給Orange Pi Lite供電的USB線,值得注意的是,給SeeeduinoCloud供電的話,普通的充電器或者電腦的USB接口就足夠了;但是,給Orange Pi Lite供電的話,最好找個電流大一些的充電器,比如1A以上的,官方標的是需要2A。另外,需要澄清的是,開發套件B不包含在免費贈送的范圍內,據說,開發套件B型包含一塊RaspberryPi 3 Model B、OLED顯示屏、NFC、RFID卡、空氣質量傳感器、中繼器、角度控制器等部件。

    應該說,開發這兩塊開發板,用的套路是不一樣的。首先,SeeeduinoCloud用的是Arduino IDE;Orange Pi Lite默認燒寫運行的是Ubuntu系統,需要Linux環境的開發機。Grove接口擴展板和其他的各種傳感器,是設計給SeeeduinoCloud用的;而攝像頭,是設計給Orange Pi Lite用的。所以,這兩部分硬件的概要圖是這個樣子的。

imageimage

    從性能上來看,Orange Pi Lite是不輸給樹莓派的,而淘寶的價格只有70+RMB,還是比較給力的。相比較而言,還是這塊SeeeduinoCloud較貴,官網上的價格是50美金,不過它已經包含了無線WiFi,運行的環境是Openwrt+Arduino。

3. 軟件與准備工作

    從官方的宣傳來看,稱此套件“支持Arduino、OpenWrt、多種Linux發行版、Windows 10 IoT Core。為了更方便地連接Azure雲服務,微軟物聯網開發套件在開發版中內置了Azure IoT SDK和Azure Cognitive Services認知服務SDK”。這里,需要大家注意的是,Arduino、OpenWrt是對於SeeeduinoCloud而言的,多種Linux發行版是對於Orange Pi Lite而言的,Windows 10 IoT Core是對於開發套件B的樹莓派而言的。所以,不同的硬件運行不同的系統,開發工具和環境也不一樣,這個大家需要留心,根據自己的實際需求來選擇。

    這里,我們先來測試SeeeduinoCloud和對應的Azure IoTHub服務。在開始之前,首先需要在自己的開發機器上安裝Arduino IDE,因為SeeeduinoCloud需要使用Arduino IDE來編寫執行的代碼。如果沒有安裝該軟件的朋友,可以到https://www.arduino.cc下載並安裝最新的版本。

    另外,使用Azure IoT服務的話,需要向世紀互聯提交試用申請,地址為:https://www.azure.cn/pricing/1rmb-trial-full/?form-type=identityauth。當然,如果有國際版MSDN訂閱的賬戶,其中包含了Azure服務的,也可以直接使用Azure IoT服務。套件中需要使用的Azure連接信息主要就是IoTHub的Hostname,Devicename和Key。有關IoTHub的創建,可以參考Azure的在線文檔:https://www.azure.cn/documentation/articles/iot-hub-csharp-csharp-getstarted/。有關Device的創建,可以直接使用Device Explore工具,具體可以參考:https://github.com/Azure/azure-iot-sdks/tree/master/tools/DeviceExplorer

    當然,如果要用別的免費的在線服務,也可以選擇國內的Yeelink,具體可以參考:http://wiki.seeed.cc/Seeeduino_Cloud/

4. 硬件連接與初始設置

    將開發套件中的SeeeduinoCloud、Grove接口擴展板和4個傳感器取出,按照如下的連線方式連接:

    ① Grove - Temp&Humi Sensor -> A0;② Grove - Light Sensor -> A1;③ Grove - Sound Sensor -> A2;④ Grove - Chainable RGB LED -> D4,注意,Chainable RGB LED端接In。

    連線完畢以后,效果圖如下:

image

    給SeeeduinoCloud上電,參考http://wiki.seeed.cc/Seeeduino_Cloud/文檔的Network Config部分,配置SeeeduinoCloud連接無線路由器的SSID和密碼(當然,如果想直接使用RJ45以太網接口的朋友,可以直接忽略)。首先,進入SeeeduinoCloud,其密碼是seeeduino,如下圖所示。

image

    其次,在System部分,配置可用的無線路由器的SSID和密碼,如下圖所示。

image

    設置結束以后,點擊Configure and Restart,重啟以后,可以登錄無線路由器,發現它能夠通過WiFi連接了。當然,從SeeeduinoCloud上電到連接上WiFi,需要一定的時間(大概30秒)。它的主機名是“--”,比較奇怪。

image

5. 設置Azure IoTHub連接字符串

    使用Putty客戶端,根據IP地址連接SeeeduinoCloud,按照“root,seeeduino”登錄。如下圖所示。

image

    在根目錄下,使用ls命令查看現有的文件。

image

    可見,其中已經包含了一些必須的文件。這些文件在出廠的時候已經設置好了,需要修改的就是AzureConnectionString。因為這個是連接IoTHub的字符串。

    使用 vi 鍵入 host name、device id 與 device key 到文件 " AzureConnectionString "。文件路徑為 " /root/AzureConnectionString "。

    或者使用 echo 命令輸入字符串,如下(下面的問號用上面申請到的連接字符串代替):

    echo -n 'HOST_NAME:???.azure-devices.???

    DEVICE_ID:???

    DEVICE_KEY:???' > /root/AzureConnectionString

6. Arduino編程並下載程序

    利用Arduino IDE打開源代碼工程,可以去https://github.com/WayenWeng/Seeeduino_Cloud_Azure_IoT_Hub_Client/下載。把Seeeduino_Cloud_Azure_IoT_Hub_Client-master\Arduino Code\libraries下的兩個文件夾解壓到Arduino IDE的libraries目錄下。如下圖所示。

image

    打開工程,可以發現,程序主要采集的數據就是溫度、濕度、光照強度和聲音強度,采集的時間間隔可以通過loop中的delay函數來控制,其中的參數是以毫秒為單位的,默認應該是1000,也就是1秒鍾采集一次數據,可以根據實際情況修改。另外,發送和接收數據是通過調用根目錄下的AzureMessageSend和AzureMessageReceive來實現的,這部分內容並不在Arduino控制的范圍內。當然,如果用戶需要增加其他的傳感器數據,就可以在擴展板上接其他傳感器,在程序中讀取,並封裝到消息體里面就可以。然后,如果硬件連接正確的話,就可以在工具-端口中找到Seeeduino對應的COM 號。最后,點擊上傳,就可以將程序上傳到Seeeduino中。

image

7. 運行程序並監控數據

    在Putty工具中,使用ps命令,就可以查看進程,如下圖所示。

image

    其中可以找到AzureIoTHubClient,該進程是默認啟動的。為了監控數據采集和發送的狀態,可以顯示啟動它。在命令行中,輸入./AzureIoTHubClient,回車。如果正常的話,會顯示客戶端連接Azure IoTHub的狀態信息,如下圖所示。

image

    之后,程序就會每隔1秒鍾采集數據,並發送給IoTHub,如下圖所示。

image

    在本地,可以使用Device Explore來監控對應設備的數據,如下圖所示。

image

    另外,也可以在Azure的主頁上查看已經發送的數據數量,如下圖所示。

image

8. 數據的在線可視化-PowerBI

    傳感器采集的數據是冷冰冰的,如何讓它活躍起來,我們可以使用微軟提供的Stream Analytics和PowerBI來實現數據的多樣化顯示。首先,需要在Azure的主頁上新建一個流分析的業務,並將其輸入配置為之前新建的IoTHub,輸出配置為PowerBI,如下圖所示。

image

    當IoT Hub和Stream Analytics都運行起來以后,登錄到PowerBI,設置圖標的樣式,如下圖所示。

image

    之后,可以將報表固定到某個Dashboard上,如下圖所示。

image

    保存,回到PowerBI主頁,就可以看到實時的傳感器數據的視圖了,如下圖所示。

image

 

后記

    整個項目調試過程中,需要注意在輸入Azure連接字符串時,最好通過VI輸入,因為如果使用Windows的記事本等工具輸入,有可能會帶入一些不必要的字符,影響Azure IoT Hub的連接。

 

參考鏈接

1. IoT Starter Kit申請地址:http://aka.ms/iotkits

2. Azure試用申請::https://www.azure.cn/pricing/1rmb-trial-full/?form-type=identityauth

3. IoTHub的創建:https://www.azure.cn/documentation/articles/iot-hub-csharp-csharp-getstarted/

4. Device Explore工具:https://github.com/Azure/azure-iot-sdks/tree/master/tools/DeviceExplorer

5. SeeeduinoCloud上手文檔:http://wiki.seeed.cc/Seeeduino_Cloud/

6. 程序代碼托管地址:https://github.com/WayenWeng/Seeeduino_Cloud_Azure_IoT_Hub_Client/


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM