这篇文章主要译: 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电压高,好像电压高不是翻译电压
代码语言:javascript复制var gpioController = GpioController.GetDefault();
gpioPin = gpioController.OpenPin(5);
gpioPin.Write(GpioPinValue.High);
下面代码获取pin电压
代码语言:javascript复制var currentPinValue = gpioPin.Read();
整个app需要 GPIO pins,我们把他写成员
代码语言:javascript复制private GpioPin gpioPin;
private GpioPinValue gpioPinValue;
我们在构造
代码语言:javascript复制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,我们可以使用
代码语言:javascript复制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."
}
}
如果天气不好我们就很多开始警报,看到的函数就是我们的警报
代码语言:javascript复制private void Blink(int interval)
{
blinkingTimer = new DispatcherTimer();
blinkingTimer.Interval =
TimeSpan.FromMilliseconds(interval);
blinkingTimer.Tick = BlinkingTimer_Tick;
}
代码语言:javascript复制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