这篇文章主要译:

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才是比较好,具体FQ我就不说,相信大家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需要显示,很多挑战决定我的代码。如果我的设备有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的更多相关文章

  1. win10 uwp MVVM 轻量框架

    如果在开发过程,遇到多个页面之间,需要传输信息,那么可能遇到设计的问题.如果因为一个页面内包含多个子页面和多个子页面之间的通信问题找不到一个好的解决方法,那么请看本文.如果因为ViewModel代码越 ...

  2. Win10 UWP开发系列:使用VS2015 Update2+ionic开发第一个Cordova App

    安装VS2015 Update2的过程是非常曲折的.还好经过不懈的努力,终于折腾成功了. 如果开发Cordova项目的话,推荐大家用一下ionic这个框架,效果还不错.对于Cordova.PhoneG ...

  3. Win10 UWP开发系列:实现Master/Detail布局

    在开发XX新闻的过程中,UI部分使用了Master/Detail(大纲/细节)布局样式.Win10系统中的邮件App就是这种样式,左侧一个列表,右侧是详情页面.关于这种 样式的说明可参看MSDN文档: ...

  4. Win10 UWP开发实现Bing翻译

    微软在WP上的发展从原来的Win7到Win8,Win8.1,到现在的Win10 UWP,什么是UWP,UWP即Windows 10 中的Universal Windows Platform简称.即Wi ...

  5. Win10/UWP开发—使用Cortana语音与App后台Service交互

    上篇文章中我们介绍了使用Cortana调用前台App,不熟悉的移步到:Win10/UWP开发—使用Cortana语音指令与App的前台交互,这篇我们讲讲如何使用Cortana调用App的后台任务,相比 ...

  6. 【Win10 UWP】后台任务与动态磁贴

    动态磁贴(Live Tile)是WP系统的大亮点之一,一直以来受到广大用户的喜爱.这一讲主要研究如何在UWP应用里通过后台任务添加和使用动态磁贴功能. 从WP7到Win8,再到Win10 UWP,磁贴 ...

  7. 【Win10 UWP】URI Scheme(一):Windows Store协议的解析和使用

    协议是Windows Phone和Windows Store应用的一个重要特点,可以做到在不同应用之间进行互相呼起调用.小小协议,学问大着呢.我打算写几篇关于协议在UWP中使用的文章. 这一讲的主要对 ...

  8. 【Win10 UWP】QQ SDK(二):SDK的回调处理

    上一讲,我们介绍了QQ SDK的使用方法,请看<[Win10 UWP]QQ SDK(一):SDK基本使用方法> 一. 回调的基本形式 从前面的介绍中我们知道,我们的应用和QQ客户端之间需要 ...

  9. Win10 UWP应用发布流程

    简介 Win10 UWP应用作为和Win8.1 UAP应用不同的一种新应用形式,其上传至Windows应用商店的流程也有了一些改变. 这篇博文记录了我们发布一款Win10 UWP应用的基本流程,希望为 ...

随机推荐

  1. 【Alpha阶段】第七次scrum meeting

    一.会议照片 二.会议内容 姓名 学号 负责模块 昨日任务 今日任务 杨爱清 099 界面设计和交互功能 [完成]设计界面 交互功能连接并优化 杨立鑫 100 数据库搭建和其他 [完成]将数据库与其他 ...

  2. Sudoku Generator

    Sudoku 算法 标签(空格分隔): 软工实践 设想:通过第一行,来生成2, 3行的排列,再通过1 - 3 生成4 - 6排列. 2 3 行的生成由上一行生成 公式为$grid[i][j] = gr ...

  3. 201521123002《Java程序设计》第8周学习总结

    1. 本周学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结集合与泛型相关内容. 2. 书面作业 本次作业题集集合 1.List中指定元素的删除(题目4-1) 1.1 实验总结 1.提交函数实 ...

  4. 201521123034《Java程序设计》第4周学习总结

    1. 本周学习总结 1.1 尝试使用思维导图总结有关继承的知识点. 1.2 使用常规方法总结其他上课内容. 1.对类的设计: - 将属性设计为私有 - 对属性初始化 - 类名和方法名要能体现他们的职责 ...

  5. java201521123118《java程序设计》第3周总结

    1. 本周学习 总结初学面向对象,会学习到很多碎片化的概念与知识.尝试学会使用思维导图将这些碎片化的概念.知识组织起来.请使用纸笔或者下面的工具画出本周学习到的知识点.截图或者拍照上传. 2. 书面作 ...

  6. 201521123010 《Java程序设计》第2周学习总结

    1. 本周学习总结 这周学习了在JAVA里各种数据类型的使用.各种运算符的使用.表达是的使用,还初步学习了枚举的用法,也掌握了一些枚举和switch语句结合的用法,还了解了一些字符串类.在实验课上也学 ...

  7. java is-a、has-a和like-a、组合、聚合和继承 两组概念的区别

    is a 代表的是类之间的继承关系,比如PC机是计算机,工作站也是计算机.PC机和工作站是两种不同类型的计算机,但都继承了计算机的共同特性.因此在用 Java语言实现时,应该将PC机和工作站定义成两种 ...

  8. 对IO流的操作(文件大小,拷贝,移动,删除)

    import java.io.File;import java.io.FileInputStream;import java.io.FileOutputStream;import java.io.Fi ...

  9. Caused by: java.sql.BatchUpdateException: You have an error in your SQL syntax; check the manual tha

    使用了数据库的关键字index,如果有类似的错误,看看自己有没有使用关键字!

  10. 如何使用sourcetree 或 IDEA 自带的git合并代码?

    如何将本地的wyy分支合并并推送到远端的 develop分支? 规则:最好是本地的分支wyy推送到对应的远端origin/wyy ,不建议直接推送到远端不同的分支!!所以 基本思路如下: 1.本地的w ...