標籤:
這篇文章主要譯:
https://msdn.microsoft.com/magazine/mt694090 有很多都是胡說,隨便噴,但我不會理。
https://blogs.msdn.microsoft.com/lucian
今天的科技行業最常用的短語之一就是“物聯網”,物聯網可以讓每個裝置使用雲而智能。使用雲,裝置可以分享資料和控制別的裝置。我們可以遠端控制相機,遠程收集分析資料。
雖然在MSDN雜誌有很多文章說如何收集和分析資料,尚未有任何從硬體和布線的角度討論。轉IOT開發需要電子設計、電工、焊接等硬體。開發人員一般都是活在虛擬世界不太想去弄現實的。好像我就是這個樣子,在二次元。當然這句話原文沒有說。很多開發人員難以知道自己該如何做硬體,跨接電纜和電阻。為瞭解決這問題,本文章介紹了win10 iot如何讓開發人員不使用硬體。不使用硬體是不可能,但是我們能讓開發人員很大的不理解硬體就做出好的。
可程式化的硬體已經有了很久,在硬體寫程式需要對硬體瞭解, Raspberry Pi 2 Model B可以運行win10,自然和我們電腦的win10不一樣。win10系統可以在Iot的可以到dev.windows.com/iot下載, Raspberry Pi 2可以運行UWP。
這文章作者將會建立UWP在Raspberry Pi 2雖然這是一個使用天氣API根據他閃燈。作者將會介紹Iot概念,如何使用C#。這裡的作者自然不是我,Frank La Vigne 。
檢測霜
春天他們會有霜,我們想要檢測如果有霜我們就告訴,告訴使用亮燈。除了軟體我們還需要硬體。我需要Raspberry Pi 2 Model B ,MicroSD card,LED light,無焊料的電路實驗板,很多線。
Raspberry Pi 2 Model B的介紹可以看下面的部落格。我就發一張圖,因為翻譯不好。
MicroSD Card 可以做Raspberry Pi 2 Model B硬碟,裡面安裝系統,我們的uwp。因為作者現在有4G的MicroSD Card,就使用了,建議還是8G。MicroSD Card大小根據需求。
無焊料的電路實驗板、線 串連Raspberry Pi 2組件。雖然我可以使用隨意串連,最快的方式是無焊料的電路實驗板。如同名稱我不需要焊接。我需要把線串連,使用30行10列。注意列有兩個五組,”a-e”,”f-j”,很容易就知道怎麼弄。
Led 電阻 我將會串連led到Raspberry Pi 2 ,電壓5V,會讓LED壞,所以我們需要電阻。
乙太網路電纜,USB滑鼠和鍵盤,HDMI監視器 Raspberry Pi 2有4個USB我們可以串連鍵盤,乙太網路,HDMI,我們可以把Raspberry Pi 2當做電腦。
下載windows10 可以在iot跑,可以到https://developer.microsoft.com/zh-CN/windows/iot/Downloads.htm#Win8
開始項目有點難,很多開發人員行動程式碼不一定適合硬體,為了這個例子我做了一個很簡單的LED閃動,即時從網上下載資料。需要下面這些硬體:led燈,無焊料的電路實驗板,電纜。
Raspberry Pi 2 Model B 有很多GPIO ,GPIO 是General Purpose Input/Output,如果想知道可以百度,當然我是覺得google才是比較好,具體翻牆我就不說,相信大家github host很快就可以幹了百度。有一些介面是保留我們不能編程,那麼不能使用的有標出來,可以看上面的圖有哪些被引出不能夠編程。
設計電路
Led需要的電路可以看,電流動從pin1,標著3.3V的見的介面,3.3V對Led太大,所以我們需要一個電阻,然後電流流GPIO 5,根據引腳,從上面圖我們可以看到是pin29。這個介面是可以編程讓led變得“smart“,通過介面高電壓和低電壓,led亮一下暗一下。
現在作者將會開發來顯示上面圖的讓led暗一下亮一下,作者合并開關串連 Raspberry Pi 2 pin29。作者選擇e列7行然後把led長的接到a列8行,短的到a列7行。這裡翻譯都是在胡說,因為我沒有真的弄。
作者把電阻連在c列8行和c列15行,我把正極連在a列15行,負極連在pin1,可以看下面,我也不知道翻譯是不是。
作者把Windows IoT Core安裝在MicroSD card,插Raspberry Pi 2,串連。啟動裝置看到下面
硬體設定好,我們開始寫軟體,首先開啟神器,建立一個iot。我們需要建立一個UWP項目,我們把它命名WeatherBlink
開啟擴充Windows IoT Extensions for the UWP
在MainPage.xaml.cs
,我們需要使用Windows.Devices.Gpio
using Windows.Devices.Gpio;
我們可以很容易使用pin,下面是我們使用pin電壓高,好像電壓高不是翻譯電壓
var gpioController = GpioController.GetDefault();gpioPin = gpioController.OpenPin(5);gpioPin.Write(GpioPinValue.High);
下面代碼擷取pin電壓
var currentPinValue = gpioPin.Read();
整個app需要 GPIO pins,我們把他寫成員
private GpioPin gpioPin;private GpioPinValue gpioPinValue;
我們在構造
private void InitializeGPIO(){ var gpioController = GpioController.GetDefault(); gpioPin = gpioController.OpenPin(5); gpioPinValue = GpioPinValue.High; gpioPin.Write(gpioPinValue); gpioPin.SetDriveMode(GpioPinDriveMode.Output);}
我們可以使用win10 全部控制項,我感覺微軟這個沒有什麼好。很多iot沒有好看的介面,對於一個渣,沒有介面實在不好,所以我們需要做一個介面。這些話都是我自己的,還沒有去弄就覺得把重點放到了一個我們不用的。
我們弄一個簡單的UI,如果我們能串連滑鼠,使用壓縮來更新天氣。
作者需要下載天氣資訊從網上,我的天氣可以從openweathermap.org/api接收的是json,溫度是k,我們可以使用
private async void LoadWeatherData(){ double minTempDouble = await GetMinTempForecast(); // 38F/3.3C = 276.483 Kelvin if (minTempDouble <= 276.483) { Blink(500); txtStatus.Text = "Freeze Warning!" } else { Blink(2000); txtStatus.Text = "No freezing weather in forecast." }}
如果天氣不好我們就很多開始警報,看到的函數就是我們的警報
private void Blink(int interval){ blinkingTimer = new DispatcherTimer(); blinkingTimer.Interval = TimeSpan.FromMilliseconds(interval); blinkingTimer.Tick += BlinkingTimer_Tick;}
private void BlinkingTimer_Tick( object sender, object e){ var currentPinValue = gpioPin.Read(); if (currentPinValue == GpioPinValue.High) { gpioPin.Write(GpioPinValue.Low); } else { gpioPin.Write(GpioPinValue.High); }}
我們需要在PC部署,我們需要改變編譯ARM
在運行選擇遠程,我們能看到
我們可以使用我的 Raspberry Pi 2,我聽到有一些大神串連不了,如果串連不了自己寫ip,一般可以,如果還是不可以不用找我我自己沒有去
串連了我們就可以看到我的led在閃,我還沒有去弄,作者沒有圖,我就沒法弄一個,隨便找一個覺得和這個不合
Iot是一個新的挑戰,開發需要運行環境,需要電源和網,大多挑戰來自於想要如何,如增加一個防風雨的室外情境的容器,我的iot需要顯示,很多挑戰決定My Code。如果我的裝置有4G網路,我需要考慮資料轉送,他的意思是他需要錢,需要最佳化裝置資料發送。
雖然我們的天氣沒有使用雲,很多iot都是要網路,我們可以做一個簡單的可以發送郵件的應用。Iot可以用很多地方,所以有空可以去玩。
代碼:https://github.com/ms-iot/samples
中文好的部落格:
http://edi.wang/post/2016/3/26/windows-10-iot-gy-30-light-sensor
http://edi.wang/post/2016/3/28/windows-10-iot-moisture-sensor-raspberry-pi3
http://edi.wang/post/2016/4/2/windows-10-iot-hc04-ultra-sonic-distance
http://edi.wang/post/2016/4/3/windows-10-iot-sound-light
http://edi.wang/post/2016/4/4/windows-10-iot-stepper-motor
http://edi.wang/post/2016/4/10/windows-10-iot-azure-remote-light
win10 uwp iot