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

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

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

概述

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

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

先决条件

需要有效的 Azure 订阅才能完成此教程。

Note

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

所需软件

需要在台式机上安装 SSH 客户端,然后才能远程访问 Raspberry Pi 上的命令行。

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

所需硬件

一个台式机,用于通过远程方式连接到 Raspberry Pi 上的命令行。

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

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

预配解决方案

如果尚未在帐户中预配远程监控预配置解决方案,请执行以下步骤:

  1. 使用 Azure 帐户凭据登录到 azureiotsuite.cn,并单击“+”创建解决方案。
  2. 单击“远程监控”磁贴上的“选择”。
  3. 为远程监控预配置解决方案输入 解决方案名称
  4. 选择要用于预配解决方案的“区域”和“订阅”。
  5. 单击“创建解决方案” 开始预配过程。 运行此过程通常需要花费几分钟时间。

等待预配过程完成

  1. 单击状态为“正在预配”的解决方案磁贴。
  2. 在 Azure 订阅中部署 Azure 服务时,请注意“预配状态” 。
  3. 预配完成后,状态会更改为“就绪” 。
  4. 单击磁贴,右窗格中随即会显示解决方案的详细信息。

Note

如果在部署预配置解决方案时遇到问题,请参阅 azureiotsuite.cn 站点权限常见问题解答。 如果问题仍然存在,请在 门户中创建服务票证。

是否有你预期会看到但没有列出的解决方案详细信息? 请在 用户之声中向我们提供功能建议。

Warning

远程监控解决方案在 Azure 订阅中预配一组 Azure 服务。 部署反映实际企业体系结构。 若要避免产生不必要的 Azure 使用费用,请在使用完预配置解决方案的实例后,在 azureiotsuite.cn 上将其删除。 如果再次需要预配置解决方案,可以轻松地重新创建它。 若要详细了解如何在远程监控解决方案运行时减少消耗,请参阅出于演示目的配置 Azure IoT 套件预配置解决方案

查看解决方案仪表板

该解决方案仪表板可让你管理部署的解决方案。 例如,可以查看遥测数据、添加设备以及调用方法。

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

    启动预配置解决方案

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

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

添加设备

连接到预配置解决方案的设备必须能够使用有效凭据对 IoT 中心识别自身。 用户可从解决方案仪表板中检索设备凭据。 本教程后文中的客户端应用程序要采用该设备凭据。

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

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

    添加设备

  2. 在“自定义设备”面板中,单击“新增”。

    添加自定义设备

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

    添加设备 ID

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

    查看设备凭据

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

准备 Raspberry Pi

安装 Raspbian

如果这是首次使用 Raspberry Pi,需使用工具包中随附的 SD 卡上的 NOOBS 来安装 Raspbian 操作系统。 Raspberry Pi 软件指南介绍了如何在 Raspberry Pi 上安装操作系统。 本教程假定已在 Raspberry Pi 上安装 Raspbian 操作系统。

Note

适用于 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 的任务栏中,可以使用外观像显示器的图标启动 Terminal 实用工具。

使用 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.cn;DeviceId=[Device Id];SharedAccessKey=[Device Key]";

将占位符值替换为在本教程开始时创建并保存的设备和 IoT 中心信息。 保存所做的更改(按 Ctrl-O,并按 Enter),退出编辑器(按 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 时表示关。

Warning

如果让远程监控解决方案在 Azure 帐户中保持运行状态,系统会按其运行时间计费。 若要详细了解如何在远程监控解决方案运行时减少消耗,请参阅出于演示目的配置 Azure IoT 套件预配置解决方案。 请在用完预配置的解决方案后将其从 Azure 帐户中删除。

后续步骤

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