17370845950

win10 uwp iot

本文主要讨论了如何使用windows 10 iot和raspberry pi 2 model b来实现一个基于天气api的led闪烁项目。虽然msdn杂志上有许多关于数据收集和分析的文章,但本文特别关注硬件和布线的实际应用。物联网(iot)是一种通过云技术使设备智能化的技术,允许设备分享数据和远程控制其他设备。

在硬件方面,我们需要Raspberry Pi 2 Model B、MicroSD卡、LED灯、无焊料电路试验板和多条电缆。MicroSD卡可以作为Raspberry Pi 2的硬盘,存储Windows 10 IoT系统和我们的UWP应用程序。建议使用8GB的MicroSD卡。无焊料电路试验板和电缆用于连接Raspberry Pi 2的组件,而LED灯需要通过电阻连接到Raspberry Pi 2的GPIO引脚上,以防止过电压损坏LED。

硬件连接完成后,我们可以通过Windows 10 IoT Core来启动设备。接下来,我们需要编写软件部分。使用Visual Studio创建一个新的UWP项目,命名为

WeatherBlink
,并使用
Windows IoT Extensions for the UWP
扩展。在
MainPage.xaml.cs
文件中,我们需要使用
Windows.Devices.Gpio
命名空间来控制GPIO引脚。

using Windows.Devices.Gpio;

我们可以使用以下代码来设置GPIO引脚的电压:

var gpioController = GpioController.GetDefault();
gpioPin = gpioController.OpenPin(5);
gpioPin.Write(GpioPinValue.High);

读取GPIO引脚的电压可以使用以下代码:

var currentPinValue = gpioPin.Read();

整个应用程序需要使用GPIO引脚,我们可以将其定义为成员变量:

private GpioPin gpioPin;
private GpioPinValue gpioPinValue;

在构造函数中,我们初始化GPIO:

private void InitializeGPIO(){
  var gpioController = GpioController.GetDefault();
  gpioPin = gpioController.OpenPin(5);
  gpioPinValue = GpioPinValue.High;
  gpioPin.Write(gpioPinValue);
  gpioPin.SetDriveMode(GpioPinDriveMode.Output);
}

为了使应用程序更具交互性,我们可以创建一个简单的用户界面。如果可以连接鼠标,我们可以通过点击来更新天气信息。

天气数据可以从openweathermap.org/api获取,数据格式为JSON,温度单位为Kelvin。我们可以使用以下代码加载天气数据:

private async void LoadWeatherData(){
  double minTempDouble = await GetMinTempForecast();
  // 38F/3.3C = 276.483 Kelvin
  if (minTempDouble < 276.483) {
    Blink(500); // 每500毫秒闪烁一次
  }
}

如果天气预报显示低温,我们可以启动LED闪烁作为警报:

private void Blink(int interval){
  blinkingTimer = new DispatcherTimer();
  blinkingTimer.Interval = TimeSpan.FromMilliseconds(interval);
  blinkingTimer.Tick += BlinkingTimer_Tick;
}

LED闪烁的具体实现如下:

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);
  }
}

最后,我们需要将应用程序部署到Raspberry Pi 2上。我们需要将编译目标更改为ARM,并选择远程运行。

连接到Raspberry Pi 2后,我们可以看到LED灯开始闪烁。

IoT是一个充满挑战的新领域,开发者需要考虑环境、电源和网络等多种因素。即使我们的天气项目没有使用云服务,许多IoT应用仍然需要网络连接。我们可以尝试开发一个简单的发送邮件的应用,以进一步探索IoT的应用场景。

代码示例可以在GitHub上找到:https://www./link/4f7a60f5b11570565d67df2d0c4135c7

推荐的中文博客包括:

  • https://www./link/2bbb6e4fb82cc56a8124124b8e4dc22a28e
  • https://www./link/960ece0c426539e38c52b22a0c676482
  • https://www./link/d4a12972fe22abc2a39bf7aff3e8a534
  • https://www./link/aefcbdbbfe049e42b4392e21cde2f9c4
  • https://www./link/45fe7c4d0a9c4104b3157fea2f233ad5
  • https://www./link/621937d0e97e2559f2170a66a2218089