将 Raspberry Pi 3 连接到远程监视解决方案,并使用 C 发送模拟遥测

本教程介绍如何使用 Raspberry Pi 3 模拟要发送到云的温度和湿度数据。 本教程使用:

  • Raspbian OS、C 编程语言和用于 C 的 Microsoft Azure IoT SDK 来实现示例设备。
  • IoT 套件远程监视预配置解决方案作为基于云的后端。

概述

在本教程中,将完成以下步骤:

  • 将远程监视预配置解决方案的实例部署到 Azure 订阅。 此步骤会自动部署和配置多个 Azure 服务。
  • 将设备设置为与计算机和远程监视解决方案通信。
  • 更新示例设备代码以连接到远程监视解决方案,并发送可在解决方案仪表板上查看的模拟遥测数据。

先决条件

若要完成本教程,需要一个有效的 Azure 订阅。

注释

如果没有帐户,只需几分钟即可创建免费试用帐户。 有关详细信息,请参阅 Azure 免费试用

所需软件

需要桌面计算机上的 SSH 客户端才能远程访问 Raspberry Pi 上的命令行。

  • Windows 不包括 SSH 客户端。 建议使用 PuTTY
  • 大多数 Linux 分发版和 Mac OS 都包含命令行 SSH 实用工具。 有关详细信息,请参阅 在 Linux 或 Mac OS 上使用 SSH

所需的硬件

一台台式计算机,使你能够远程连接到 Raspberry Pi 上的命令行。

Microsoft IoT 初学者工具包适用于 Raspberry Pi 3 或等效组件。 本教程使用工具包中的以下项:

  • Raspberry Pi 3
  • MicroSD 卡(带 NOOBS)
  • USB 微型电缆
  • 以太网电缆

部署解决方案

如果尚未在帐户中预配远程监视预配置解决方案:

  1. 使用 Azure 帐户凭据登录到 azureiotsuite.com,然后单击 + 创建解决方案。
  2. 远程监视 磁贴上单击 选择
  3. 输入 解决方案名称 用于您的远程监测预先配置解决方案。
  4. 选择要用于配置解决方案的 区域订阅
  5. 单击 创建解决方案 开始预配过程。 此过程通常需要几分钟才能完成。

等待预配过程完成

  1. 单击您解决方案的 预配 状态磁贴。
  2. 请在 Azure 服务部署到您的 Azure 订阅中时注意预配状态
  3. 预配完成后,状态将更改为 就绪
  4. 单击该磁贴,在右侧窗格中查看解决方案的详细信息。

注释

如果在部署预配置的解决方案时遇到问题,请查看 azureiotsuite.com 站点 权限,以及 常见问题解答。 如果问题仍然存在,请在 门户上创建服务请求

有没有哪些你期望在解决方案中看到但未列出的详细信息? 请向我们提供有关 User Voice平台的功能建议。

警告

远程监视解决方案在 Azure 订阅中预配一组 Azure 服务。 部署反映了真正的企业体系结构。 若要避免不必要的 Azure 消耗费用,请在使用完预配置解决方案后,登录 azureiotsuite.com 删除该实例。 如果需要再次预配置的解决方案,可以轻松重新创建它。 有关在远程监视解决方案运行时减少消耗的详细信息,请参阅 配置 Azure IoT 套件预配置解决方案以进行演示

查看解决方案仪表板

使用解决方案仪表板可以管理已部署的解决方案。 例如,可以查看遥测、添加设备和调用方法。

  1. 预配完成后,预配置解决方案的磁贴指示 就绪,请选择 启动 以在新选项卡中打开远程监视解决方案门户。

    启动预配置解决方案

  2. 默认情况下,解决方案门户会显示 仪表板。 可以使用页面左侧的菜单导航到解决方案门户的其他区域。

    远程监视预配置解决方案仪表板

添加设备

若要使设备连接到预配置解决方案,它必须使用有效的凭据将自身标识到 IoT 中心。 可以从解决方案仪表板检索设备凭据。 在本教程中,稍后您将在客户端应用程序中包含设备凭据。

如果尚未这样做,请将自定义设备添加到远程监视解决方案。 在解决方案仪表板中完成以下步骤:

  1. 在仪表板的左下角,单击 添加设备

    添加设备

  2. 自定义设备 面板中,单击 添加新

    添加自定义设备

  3. 选择让我定义自己的设备ID。 输入设备 ID(如 rasppi),单击 验证 ID 以检查你尚未在解决方案中使用过该名称,然后单击 创建 以配置设备。

    添加设备 ID

  4. 记下设备凭据(设备 IDIoT 中心主机名设备密钥)。 Raspberry Pi 上的客户端应用程序需要这些值才能连接到远程监视解决方案。 然后单击“完成”。

    查看设备凭据

  5. 在解决方案仪表板的设备列表中选择设备。 然后,在 设备详细信息 面板中,单击 启用设备。 设备当前状态为 运行。 远程监视解决方案现在可以从设备接收遥测数据,并在设备上调用方法。

准备你的 Raspberry Pi

安装 Raspbian

如果这是你第一次使用 Raspberry Pi,则需要在工具包中包含的 SD 卡上使用 NOOBS 安装 Raspbian作系统。 Raspberry Pi 软件指南 介绍了如何在 Raspberry Pi 上安装作系统。 本教程假定已在 Raspberry Pi 上安装 Raspbian作系统。

注释

随附的适用于 Raspberry Pi 3 的 Microsoft Azure IoT 初学者工具包的 SD 卡 已经安装了 NOOBS。 可以从此卡启动 Raspberry Pi,然后选择安装 Raspbian OS。

若要完成硬件设置,需要:

  • 将 Raspberry Pi 连接到工具包中包含的电源。
  • 使用工具包中包含的以太网电缆将 Raspberry Pi 连接到网络。 或者,可以为 Raspberry Pi 设置 无线连接

现已完成 Raspberry Pi 的硬件设置。

登录并访问终端

有两个选项可用于访问 Raspberry Pi 上的终端环境:

  • 如果你有连接到 Raspberry Pi 的键盘和监视器,则可以使用 Raspbian GUI 访问终端窗口。

  • 使用 SSH 从桌面计算机访问 Raspberry Pi 上的命令行。

在 GUI 中使用终端窗口

Raspbian 的默认凭据是用户名 pi,密码 raspberry。 在 GUI 的任务栏中,可以使用类似于监视器的图标启动 终端 实用工具。

使用 SSH 登录

可以使用 SSH 对 Raspberry Pi 进行命令行访问。 SSH(安全外壳)一文 介绍了如何在 Raspberry Pi 上配置 SSH,以及如何从 WindowsLinux & Mac OS进行连接。

使用用户名 pi 和密码登录 raspberry

可选:在 Raspberry Pi 上共享文件夹

或者,你可能希望与桌面环境共享 Raspberry Pi 上的文件夹。 通过共享文件夹,可以使用首选桌面文本编辑器(如 visual Studio CodeSublime Text)编辑 Raspberry Pi 上的文件,而不是使用 nanovi

若要与 Windows 共享文件夹,请在 Raspberry Pi 上配置 Samba 服务器。 或者,将内置的 SFTP 服务器与桌面上的 SFTP 客户端配合使用。

下载并配置示例

现在可以在 Raspberry Pi 上下载和配置远程监视客户端应用程序。

克隆存储库

如果尚未这样做,请在 Pi 上的终端中运行以下命令来克隆所需的存储库:

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

更新设备连接字符串

使用以下命令在 nano 编辑器中打开示例源文件:

nano ~/iot-remote-monitoring-c-raspberrypi-getstartedkit/simulator/remote_monitoring/remote_monitoring.c

查找下列行:

static const char* deviceId = "[Device Id]";
static const char* connectionString = "HostName=[IoTHub Name].azure-devices.net;DeviceId=[Device Id];SharedAccessKey=[Device Key]";

将占位符值替换为在本教程开始时创建的设备和 IoT 中心信息。 保存更改(Ctrl-OEnter),然后退出编辑器(Ctrl-X)。

生成示例

通过在 Raspberry Pi 上的终端中运行以下命令,为适用于 C 的 Microsoft Azure IoT 设备 SDK 安装必备包:

sudo apt-get update
sudo apt-get install g++ make cmake git libcurl4-openssl-dev libssl-dev uuid-dev

现在可以在 Raspberry Pi 上生成更新的示例解决方案:

chmod +x ~/iot-remote-monitoring-c-raspberrypi-getstartedkit/simulator/build.sh
~/iot-remote-monitoring-c-raspberrypi-getstartedkit/simulator/build.sh

现在可以在 Raspberry Pi 上运行示例程序。 输入以下命令:

sudo ~/cmake/remote_monitoring/remote_monitoring

以下示例输出是在 Raspberry Pi 上的命令提示符处看到的输出示例:

Raspberry Pi 应用的输出

Ctrl-C 随时退出程序。

查看遥测

Raspberry Pi 现在正在将遥测数据发送到远程监视解决方案。 可以在解决方案仪表板上查看遥测数据。 还可以从解决方案仪表板将消息发送到 Raspberry Pi。

  • 导航到解决方案仪表板。
  • 在“要查看的设备”下拉列表中选择您的设备。
  • Raspberry Pi 中的遥测数据显示在仪表板上。

显示 Raspberry Pi 的遥测数据

操作设备

在解决方案仪表板中,可以在 Raspberry Pi 上调用方法。 Raspberry Pi 连接到远程监视解决方案时,它会发送有关它支持的方法的信息。

  • 在解决方案仪表板中,单击“设备”,访问“设备”页。 在 设备列表中选择 Raspberry Pi。 然后选择 方法

    在仪表板中 列出设备

  • 调用方法 页上,在 方法 下拉列表中选择 LightBlink

  • 选择InvokeMethod。 模拟器在 Raspberry Pi 的主机上打印消息。 Raspberry Pi 上的应用程序向解决方案仪表板返回确认。

    显示方法历史记录

  • 可以使用 ChangeLightStatus 方法控制 LED 的开关,将 LightStatusValue 设置为 1 来打开,或设置为 0 来关闭。

警告

如果让远程监视解决方案在 Azure 帐户中运行,则会按运行时间计费。 有关在远程监视解决方案运行时减少消耗的详细信息,请参阅 配置 Azure IoT 套件预配置解决方案以进行演示。 使用完解决方案后,请从 Azure 帐户中删除预配置解决方案。

后续步骤

有关 Azure IoT 的更多示例和文档,请访问 Azure IoT 开发人员中心