返回 登录
6

使用微软 Azure IoT 开发者套件开发一个温湿度读取器

阅读6791

该系列文章为微软Azure IoT的学习教程。
原文链接:Hector Garcia Tellado
本文作者:Jim 微软Azure IoT 项目经理,多年Xamarin等移动平台研发管理经验,熟悉微软SharePoint/WPF/WCF/AspMVC等解决方案。曾任中国电信呼叫中心研发经理。

这篇文章将帮你使用Azure IoT套件(树莓派Pi2和Pi3)来熟悉Azure IoT的开发。这里主要演示如何通过开发者套件连接Azure IoT套件中的远程监视预配置解决方案。

如果你以前没有使用过Azure IoT 服务,我们鼓励你从远程监视预配置解决方案入手,所有相关的Azure 服务将会在这个预配置方案中得到部署。

如果你还没有开发者套件,请点击这里

接下来的演练将使用开发者套件(针对Pi2和Pi3)开发一个温湿度读取器,在Raspbian OS上运行并通过微软Azure IoT SDK进行云端通讯。针对Windows 10 IoT Core的样例,请参考 windowsondevices.com.

概览

在本文中,你将会:

  • 在Azure IoT 远程监视预配置解决方案中配置环境
  • 配置设备和传感器以便它能够连接到你的计算机和Azure IoT服务
  • 更新连接信息到设备端的样例代码中,并将数据发送给Azure IoT 端进行远程查看

开始前准备

必要的软件

  • 一个SSH客户端。它能够让你通过电脑远程访问树莓派命令行
    • Windows没有自带的SSH客户端,推荐使用PuTTY.
    • 许多Linux发行版和Mac OS都带有SSH 命令行,如果你没有,推荐使用OpenSSH.
    • 可参考:在Linxu或Mac OS上使用SSH

必要的硬件

  • 微软Azure IoT开发者套件
    • 8GB的闪存卡(套件自带,已刷入Windows 10 IoT Core)
    • 一个USB mini线
    • 以太网线或Wi-Fi网络

创建新的Azure IoT 远程监视预配置解决方案并添加设备

  • 使用微软账号登陆到 Azure IoT Suite 网站,并点击创建新的解决方案.
    注意:创建账号是免费的。点击这里获取免费体验。
  • 点击远程监视选项
  • 输入一个解决方案名称。本教程使用“PiSuite”这个名字。
    注意:请复制名称和连接字符串到文本文件,为下一步引用做准备。
  • 选择你的订阅和方案部署的区域,然后点击创建解决方案。
  • 等待Azure创建和部署你的IoT 方案(这个过程大约需要10分钟),然后点击启动。
    注意:你也许会被要求重新登录。这是为了确保你的账号拥有合适的访问权限。
  • 打开解决方案的“仪表板”,你可能已经被重定向到这里了。
  • 这里打开的远程监视预配置方案的网址为<你的解决方案名称>.azurewebsites.net(例如:PiSuite.azurewebsites.net)
  • 在屏幕的左下角点击添加设备。
  • 输入你想要的设备ID,这里我们将使用“PaspPi”,然后点击创建。
  • 记下你的设备ID, 设备Key和IoT Hub的Hostname,这些内容将会在代码中使用。

警告:远程监视预配置解决方案将会使用你的Azure账号创建一组Azure IoT 服务。这意味着将会有一个真实的企业级架构方案被创建并且它在Azure上的开销将会很大。为了避免不必要的Azure使用开销,我们建议你一旦完成演练(因为它非常容易被再次创建)就在azureiotsuite.cn上删掉预配置方案。或者,如果你希望保留它,你可以通过下面的方式减少它的开销:

  • 查看向导来使解决方案运行在演示模式下来减少Azure上的开销。
  • 禁用解决方案创建的模拟设备(在设备栏目中,选择设备,并在右侧的设备详情菜单中点击禁用设备。对所有的模拟设备重复该步骤)

准备设备

如果这是你第一次使用树莓派,那么是时候去设置它了。如果你想使用Windows,请访问http://www.windowsondevices.com/ 查看更多的指导如何使用树莓派。如果你正在使用Linux,树莓派和Adafruit有一系列的入门教程和视频。
请访问下面的链接:

图片描述

注意:

Pi Pin 终点 线路颜色
SPI_CE0 (Pin 24) CS (Pin 21A) 蓝色
SPI_SCLK (Pin 23) SCK (18A) 黄色
SPI_MISO (Pin 21) SDO (19A ) 白色
SPI_MOSI (Pin 19) SDI (Pin 20A) 绿色
GND (Pin 6) GND (Pin 17A) 黑色
3.3V (Pin 1) 3Vo (Pin 16A) 红色

注意:关于树莓派GPIO的更多参考请点击这里

图片描述

最后,你的树莓派应该与一个工作中的传感器连接好了。

登录并访问终端

默认的树莓派用户名是pi,密码是raspberry. 如果你直接使用Raspbian的界面,在任务条顶部,你可以使用从左侧数第三个图片启动终端(类似显示器的图标)
通过PuTTY登录

  • 在使用PuTTY之前,你需要找到树莓派的IP地址。在命令行窗口输入 hostname –I 并找到IP。更多信息可参考:
    https://www.raspb链接内容errypi.org/documentation/remote-access/ip-address.md
  • 在树莓派运行的时候,在你的电脑上打开SSH终端程序(例如PuTTY)
  • 使用上一步获取到的IP地址作为主机名,端口号22,连接方式为SSH来进行连接。
  • 默认的用户名为pi,密码是raspberry.

使用Linux 或 Mac OS登录

配置远程监视设备样例代码

现在我们可以下载远程监视样例代码了,然后输入你的设备证书(也就是“连接字符串”)并从树莓派发送数据到Azure远程监视解决方案。

复制代码库

复制下面的代码库,并通过下面的命令在树莓派上合并它们:

cd ~
git clone --recursive https://github.com/Azure-Samples/iot-hub-c-raspberrypi-getstartedkit.git
git clone --recursive https://github.com/WiringPi/WiringPi.git

然后,我们需要更新设备连接字符串

更新连接字符串

  • 通过下面的命令编辑文件:
nano ~/iot-hub-c-raspberrypi-getstartedkit/samples/remote_monitoring/remote_monitoring.c
  • 使用箭头键来导航到下面的行:
static const char* deviceId = "[Device Id]";
static const char* deviceKey = "[Device Key]";
static const char* hubName = "[IoTHub Name]";
static const char* hubSuffix = "[IoTHub Suffix, i.e. azure-devices.net]";
  • 用你在教程一开始的时候创建的设备和IoT Hub的信息替换占位符。例如:

    • device Id → RaspPi
    • device Key → < azure 设备key,结尾有==>
    • IoTHub Name → PiSuite
    • IoTHub后缀 → azure-devices.net
  • 使用 Control-o, Enter, Control-x保存和退出

编译修改过的样例代码

现在你已经退出了Nano, 使用下面的命令安装必要的微软Azure IoT Device SDK for C程序包(可以直接在设备上运行或者通过SSH客户端如PuTTY运行)

sudo apt-get update
sudo apt-get install curl libcurl4-openssl-dev uuid-dev uuid g++ make cmake git unzip openjdk-7-jre libssl-dev libncurses-dev subversion gawk
  • 使用下面的命令继续编译样例代码
cd ~/iot-hub-c-raspberrypi-getstartedkit/
sudo ~/iot-hub-c-raspberrypi-getstartedkit/azure-iot-sdks/c/build_all/linux/setup.sh
chmod +x ~/iot-hub-c-raspberrypi-getstartedkit/samples/build.sh
~/iot-hub-c-raspberrypi-getstartedkit/samples/build.sh
  • 在运行程序之前,我们需要激活SPI驱动
sudo nano /boot/config.txt
  • 滚动并找到这一行:
 #dtparam=spi=on
  • 删除前面的 #
  • 使用Control-o, Enter, Control-x保存和退出
  • 重新启动树莓派来激活SPI,这会使终端退出。你需要再次登录。运行命令:
sudo reboot
  • 现在所有的事情都做完了,是时候启动程序了,运行命令:
sudo ~/cmake/samples/remote_monitoring/remote_monitoring

如果一切顺利的话,你将能够看到数据流!按下 Ctrl+C 随时退出程序。下面是一个运行中的脚本输出样例:

Humidity = 48.4% Temperature = 23.9*C
Sending sensor value Temperature = 23.9*C, Humidity = 48.4%
IoTHubClient accepted the message for delivery

通过IoT套件门户查看传感器数据

  • 一旦样本程序开始运行,通过azureiotsuite.cn并点击启动你的解决方案,并访问你的仪表板。
  • 确保右上角显示的设备栏中是你的树莓派。
  • 如果程序正在运行,你应该可以看到图表随着数据的更新在实时变化。
    注意:一旦你完成了演练确保你删除或停止你的远程监视解决方案以避免不必要的Azure开销。

相关阅读:微软Azure IoT套件远程监视预配置解决方案1:连接开发者套件
图片描述

评论