1. 程式人生 > >微軟物聯網解決方案-Windows IoT Core

微軟物聯網解決方案-Windows IoT Core

Windows IoT Core 作為微軟物聯網解決方案中前端核心產品,經過幾年的發展,取得了很大的進步,雖然仍然有一些BUG,但是從2015年以來,已經取得了長足的進步,況且目前還是免費的,還能奢望什麼呢。自從成為Windows IoT Core的技術支援以來,看到了很多人對微軟產品的抱怨,一個歪果友人說自從1998年以來,再也不用微軟的產品了,不知道他是被微軟傷了有多深,也有人說在Windows IoT Core上遇到一個問題糾結了一個月,頭髮都掉光了的。不過從一個技術支援的角度講,問題是不可避免的,否則我就要下崗換搬磚了。下面我就簡單的講講如何在Windows IoT Core上進行開發。

一、支援的開發板

Windows IoT Core支援樹莓派、MinnowBoard、DragonBoard,這三個板子是微軟官方推薦的,當然實際是不止這三個板子。其中MinnowBoard是使用的Intel x86的晶片,其他兩個都是高通的ARM晶片。通常情況下會選擇樹莓派,畢竟便宜,今年年初發布了Raspberry PI 3B+,其實就是主頻提高了,外圍沒有改變,但是不幸的是,Windows IoT Core目前只有一個Insider Preview版本來支援3B+,而且還不能使用內建的WiFi和藍芽,微軟還沒有Schedule來支援3B+。所以目前還是建議使用3B。另外,微軟提供了Windows IoT Core相容的外設,可以看這個

相容性列表。在新版本(16299以後)的Windows IoT Core,對於已經樹莓派不支援遠端助手Windows Remote Client,只能通過接顯示屏來操作,而仍然支援其他兩個板子,其中原因可能是樹莓派的GPU太弱,而微軟不願意去花精力解決系統和GPU的問題。當然一般情況下使用Device Portal就可以進行遠端的裝置維護,還可以使用PowerShell進行連線。配套的工具還有Windows IoT Dashboard,可以使用這個工具檢視區域網內的所有裝置。當然遇到最多的問題是燒寫系統後,板子起不來,但是燒Raspbian系統正常啟動,這個問題目前沒有好的解決方法,無非就是換SD卡或者換板子,如果你足夠不幸而且家裡有礦,那就全換一遍。微軟雖然推薦了兩個Class 10的SD卡,但是很多人還是燒寫後無法啟動,甚至有人說用非推薦的SD卡反而啟動快,我不是土豪,沒有那麼多卡來試。

二、支援的應用

Windows IoT Core本身是基於Windows 10的精簡核心,原則上是支援Windows 10的應用,但實際上仍然有很大的差別,Windows IoT Core上沒有Microsoft Store,所以不能通過Microsoft Store安裝一些應用程式,可以使用Visual Studio進行遠端部署,或者打包後進行安裝。Windows IoT Core執行的應用有兩個模式,一個是Headed模式,一個是Headless模式。Headed模式是用於有UI介面的APP,在這個模式下只能有一個APP在Active狀態,UI為全屏顯示,而Headless用於無UI的Background應用的。具有UI的APP其實就是微軟現在主推的UWP(其實是對WPF的升級),順便說一下個人對UWP的感悟,在做UI上UWP絕對算的上一流的思想和一流的技術,可以很輕鬆的構建炫酷的APP,有內建的一些動畫效果。當然Windows IoT Core 也能執行C++的控制檯程式,不過這隻能在command命令裡面執行。Windows IoT Core對系統的Service和Driver很封閉,你甚至無法檢視驅動的版本資訊,除非你取下SD卡找到inf檔案。

前端時間研究了OpenCV在Windows IoT Core上的支援,目前微軟整合好了一個Visual Studio 2015可以編譯的Solution,但是要自己折騰Visual Studio 2017和OpenCV 3.4,還是省省力氣吧,會很麻煩。最好的解決方案是使用Windows Runtime Component(C++),在元件裡面使用nuget安裝opencv,然後作為Bridge,把該工程作為引用新增到你的C# Project裡面,也是很方便的。可以參考這個例子

Windows IoT Core對於不熟悉驅動、感測器硬體的開發者來說,其實入門要比較低,本身.Net的開發就比較容易入手。Windows IoT Core讀寫GPIO、串列埠、SPI、I2C都變得很容易,微軟也提供了大量的Sample,還有一些非常有用的例子放在了UWP的REPO裡面,請參考這裡。當然在hackr.io也有不少微軟大神寫的Solution,有人臉識別門禁的Demo等等,非常有價值。

三、系統定製化

Windows IoT Core系統定製化其實還是比較方便的,對於OEM來說很重要,微軟提供了比較全面的文件介紹如何定製自己的系統,請檢視這個嚮導。在這裡我主要提醒的是,在Build自己的Image的時候,WDK、WSDK、BSP以及你使用的PC作業系統,一定要保持版本一致(到小版本也要一致),否則編譯會出現很多的問題。系統定製,可以新增自己的驅動程式(甚至有的PC上的驅動可以移植到Windows Io Core,但不保證能成功)、自己的應用程式、有選擇的使用系統的特性(Feature List)或配置(config.txt中存有很多系統啟動時的配置)。如果是使用DragonBoard 410C,雖然高通在官網上釋出了一個手冊來指導如何編譯,但實際上該文件是過時的,是適配以前的Windows Mobile的(可惜Mobile部門以及被微軟砍掉了)。其實對於企業,Window IoT Core有Enterprise版本,Window IoT Core Enterprise幾乎和Windows 10一樣,當然這也只是微軟自己說的,不一樣的地方他沒有說,至少收費這一點就不一樣。微軟一個大神叫Sean Liming寫了一本書《Starter Guide Windows 10 IoT Enterprise》,該作者在MSDN上也做過很多是技術支援,大家可以去拜讀這本書。