# win10 uwp iot
這篇文章主要譯:
https://msdn.microsoft.com/magazine/mt694090 有很多都是胡說,隨便噴,但我不會理。
https://blogs.msdn.microsoft.com/lucian
今天的科技行業最常用的短語之一就是“物聯網”,物聯網可以讓每個設備使用云而智能。使用云,設備可以分享數據和控制別的設備。我們可以遠程控制相機,遠程收集分析數據。
<!--more-->
<div id="toc"></div>
雖然在MSDN雜志有很多文章說如何收集和分析數據,尚未有任何從硬件和布線的角度討論。轉IOT開發需要電子設計、電工、焊接等硬件。開發者一般都是活在虛擬的世界不太想去弄現實的。好像我就是這個樣子,在二次元。當然這句話原文沒有說。很多開發者難以知道自己該如何做硬件,跨接電纜和電阻。為了解決這問題,本文章介紹了win10 iot如何讓開發者不使用硬件。不使用硬件是不可能,但是我們能讓開發者很大的不理解硬件就做出好的。
可編程的硬件已經有了很久,在硬件寫程序需要對硬件了解, Raspberry Pi 2 Model B可以運行win10,自然和我們電腦的win10不一樣。win10系統可以在Iot的可以到[dev.windows.com/iot](https://developer.microsoft.com/zh-cn/windows/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
```csharp
using Windows.Devices.Gpio;
```
我們可以很容易使用pin,下面是我們使用pin電壓高,好像電壓高不是翻譯電壓
```csharp
var gpioController = GpioController.GetDefault();
gpioPin = gpioController.OpenPin(5);
gpioPin.Write(GpioPinValue.High);
```
下面代碼獲取pin電壓
```csharp
var currentPinValue = gpioPin.Read();
```
整個app需要 GPIO pins,我們把他寫成員
```csharp
private GpioPin gpioPin;
private GpioPinValue gpioPinValue;
```
我們在構造
```csharp
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](http://openweathermap.org/api)接收的是json,溫度是k,我們可以使用
```csharp
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."
}
}
```
如果天氣不好我們就很多開始警報,看到的函數就是我們的警報
```csharp
private void Blink(int interval)
{
blinkingTimer = new DispatcherTimer();
blinkingTimer.Interval =
TimeSpan.FromMilliseconds(interval);
blinkingTimer.Tick += BlinkingTimer_Tick;
}
```
```csharp
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需要顯示,很多挑戰決定我的代碼。如果我的設備有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
- Introduction
- 控件
- Win10 UWP Intro to controls and events
- win10 UWP Controls by function
- win10 uwp App-to-app communication 應用通信
- win10 UWP 使用MD5算法
- win10 UWP 全屏
- win10 uwp 使用油墨輸入
- 三種方式設置特定設備UWP XAML view
- win10 uwp iot
- win10 uwp 活動磁貼
- win 10 UWP 標簽
- Xamarin Forms 進度條控件
- win10 UWP MessageDialog 和 ContentDialog
- win10 uwp 俄羅斯方塊
- win10 UWP Hmac
- win10 UWP 單元測試
- win10 uwp 判斷文件存在
- win10 UWP 標題欄后退
- win10 uwp 分治法
- win10 UWP 應用設置
- win10 uwp BadgeLogo 顏色
- win10 uwp json
- win10 uwp Window.Current.Dispatcher中Current為null
- win10 uwp 無法附加到CoreCLR
- win10 uwp 自定義控件 SplitViewItem
- win10 uwp ContentDialog 點確定不關閉
- win10 uwp smms圖床
- win10 uwp 從StorageFile獲取文件大小
- win10 uwp 如何讓WebView標識win10手機
- win10 uwp 上傳Nuget
- win10 uwp 手動鎖Bitlocker
- win10 uwp 圓角按鈕
- win10 uwp 入門
- win10 uwp 切換主題
- win10 uwp 隨著數字變化顏色控件
- win10 uwp 設置啟動窗口大小 獲取窗口大小
- win10 uwp 簡單MasterDetail
- win10 uwp 異步進度條
- win10 uwp 訪問解決方案文件
- C# 7.0
- win10 uwp InkCanvas控件數據綁定
- win10 uwp 列表模板選擇器
- win10 uwp 隱藏實時可視化
- win10 uwp 讀取文本ASCII錯誤
- Visual studio 創建項目失敗vstemplate
- Visual Studio 自定義項目模板
- win10 uwp 車表盤 徑向規
- win10 uwp 截圖 獲取屏幕顯示界面保存圖片
- win10 uwp 獲得焦點改變
- win10 uwp 應用轉后臺清理內存
- win10 uwp 隱私聲明
- win10 uwp 打包第三方字體到應用
- win10 uwp 九幽圖床
- win10 uwp 興趣線
- win10 uwp 右擊浮出窗在點擊位置
- win10 uwp 保存用戶選擇文件夾
- win10 uwp 打電話
- visual studio 2015 warning MSB3246
- win10 uwp 繪圖 Line 控件使用
- win10 uwp 存放網絡圖片到本地
- win10 uwp 判斷本地ip
- win10 uwp 彈起鍵盤不隱藏界面元素
- win10 uwp Markdown
- C# 設計模式 責任鏈
- win10 uwp 顯示SVG
- win10 uwp 網絡編程
- win10 uwp HttpClient post錯誤
- win10 uwp win2d
- win10 uwp 布局
- win10 uwp 初始屏幕
- win10 uwp dataGrid
- win10 uwp 魔力鬼畜
- win10 uwp如何使用DataTemplate
- win10 uwp 多語言
- win10 uwp CSDN閱讀 源代碼
- win10 uwp 語音
- win10 uwp 動畫
- win10 uwp 顏色轉換
- win10 uwp 獲得Slider拖動結束的值
- Windows 10「設置」應用完整MS-Settings快捷方式匯總
- win10 uwp 用廣告賺錢
- win10 uwp 快捷鍵
- win10 UWP MvvmLight入門
- win10 uwp 標題欄
- win10 uwp 從Type 使用構造
- win10 uwp ImageSourece 和Byte[] 相互轉換
- win10 uwp 驗證TextBox
- C# 使用Emit深克隆