将 Raspberry Pi 连接到 Azure IoT 中心 (Node.js)

在本教程中,首先学习有关使用运行 Raspbian 的 Raspberry Pi 的基础知识。 然后学习如何使用 Azure IoT 中心将设备无缝连接到云。 有关 Windows 10 IoT Core 的示例,请访问 Windows 开发人员中心

还没有工具包? 试用 Raspberry Pi 联机模拟器。 或在此处购买新工具包。

准备工作

  • 创建 IoT 中心。
  • 在 IoT 中心内为 Pi 注册设备。
  • 设置 Raspberry Pi。
  • 在 Pi 上运行示例应用程序,将传感器数据发送到 IoT 中心。

学习内容

  • 如何创建 Azure IoT 中心以及如何获取新的设备连接字符串。
  • 如何通过 BME280 传感器连接 Pi。
  • 如何通过在 Pi 上运行示例应用程序来收集传感器数据。
  • 如何将传感器数据发送到 IoT 中心。

需要什么

需要什么

  • 一个 Raspberry Pi 2 或 Raspberry Pi 3 电路板。
  • Azure 订阅。 如果没有 Azure 订阅,可在开始前创建一个试用帐户
  • 连接到 Pi 的监视器、USB 键盘和鼠标。
  • 运行 Windows 或 Linux 的 Mac 或电脑。
  • Internet 连接。
  • 16 GB 或更大容量的 microSD 卡。
  • USB-SD 适配器或 microSD 卡,用于将操作系统映像刻录到 microSD 卡中。
  • 带有 6 英尺微型 USB 电缆的 5 伏 2 安电源。

以下项可选:

  • 已装配的 Adafruit BME280 温度、压力和湿度传感器。
  • 试验板。
  • 6 根 F/M 跳线。
  • 散射的 10 毫米 LED 灯。

Note

如果没有可选项,可以使用模拟的传感器数据。

创建 IoT 中心

此部分介绍如何使用 Azure 门户创建 IoT 中心。

  1. 登录到 Azure 门户

  2. 选择+“创建资源”,然后选择“物联网”。

  3. 在右侧列表中单击“Iot 中心”。 随即显示 IoT 中心创建过程的第一个屏幕。

    显示了在 Azure 门户中创建中心的屏幕截图

    填充字段。

    订阅:请选择要用于 IoT 中心的订阅。

    资源组:可创建新的资源组或使用现有资源组。 若要新建一个,请单击“新建”,并填写要使用的名称。 若要使用现有资源组,请单击“使用现有资源组”并从下拉列表中选择该组。 有关详细信息,请参阅使用资源组管理 Azure 资源

    区域:这是要在其中设置中心的区域。 从下拉列表中选择最靠近自己的位置。

    IoT 中心名称:输入 IoT 中心的名称。 此名称必须全局唯一。 如果输入的名称可用,会显示一个绿色复选标记。

    Important

    IoT 中心将公开为 DNS 终结点,因此,命名时请务必避免包含任何敏感信息。

  4. 单击“下一步: 大小和规模”,以便继续创建 IoT 中心。

    屏幕截图显示使用 Azure 门户为新的 IoT 中心设置大小和缩放级别

    在此屏幕上,可以采用默认值,只需在底部单击“查看+创建”即可。

    定价和缩放层级:可以根据需要的功能数以及每天通过解决方案发送的消息数从多个层中进行选择。 免费层适用于测试和评估。 它允许 500 台设备连接到 IoT 中心,并且每天最多传输 8,000 条信息。 每个 Azure 订阅可以在免费层中创建一个 IoT 中心。

    IoT 中心单位:每日每单位允许的消息数取决于中心的定价层。 例如,如果希望 IoT 中心支持 700,000 条消息输入,则选择两个 S1 层单位。

    有关其他层选项的详细信息,请参阅选择合适的 IoT 中心层

    高级/设备到云的分区:此属性将设备到云消息与这些消息的同步读取器数目相关联。 大多数 IoT 中心只需要 4 个分区。

  5. 单击“查看+创建”可查看选择。 会显示类似于以下的屏幕。

    屏幕截图显示用于创建新 IoT 中心的信息

  6. 单击“创建”以创建新的 IoT 中心。 创建中心需要几分钟时间。

检索 IoT 中心的连接字符串

创建中心以后,请检索中心的连接字符串。 该字符串用于将设备和应用程序连接到中心。

  1. 单击中心,查看“IoT 中心”窗格,其中包含“设置”等内容。 单击“共享访问策略”。

  2. 在“共享访问策略”中,选择 iothubowner 策略。

  3. 在“共享访问密钥”下,复制“连接字符串 -- 主密钥”供以后使用。

    显示如何检索连接字符串

    有关详细信息,请参阅“IoT 中心开发人员指南”中的访问控制

在 IoT 中心内注册新设备

本部分在 IoT 中心的标识注册表中创建设备标识。 设备无法连接到 IoT 中心,除非它在标识注册表中具有条目。 有关详细信息,请参阅 IoT 中心开发人员指南的“标识注册表”部分

  1. 在 IoT 中心导航菜单中,打开“IoT 设备”,然后单击“添加”,在 IoT 中心注册新设备。

    在门户中创建设备标识

  2. 提供新设备的名称(例如 myDeviceId),然后单击“保存”。 此操作会为 IoT 中心创建新设备标识。

    添加新设备

    Important

    收集的日志中可能会显示设备 ID 用于客户支持和故障排除,因此,在为日志命名时,请务必避免包含任何敏感信息。

  3. 创建设备后,在“IoT 设备”窗格的列表中打开该设备。 复制“连接字符串 ---主密钥”供以后使用。

    设备连接字符串

Note

IoT 中心标识注册表仅存储用于实现 IoT 中心安全访问的设备标识。 它存储设备 ID 和密钥作为安全凭据,以及启用/禁用标志让你禁用对单个设备的访问。 如果应用程序需要存储其他特定于设备的元数据,则应使用特定于应用程序的存储。 有关详细信息,请参阅 IoT 中心开发人员指南

设置 Raspberry Pi

为 Pi 安装 Raspbian 操作系统

准备用于安装 Raspbian 映像的 microSD 卡。

  1. 下载 Raspbian。

    1. 下载 Raspbian Stretch(.zip 文件)。

    Warning

    请使用上面的链接来下载 raspbian-2017-07-5 zip 映像。 Raspbian 映像的最新版本具有与接线 Pi 节点相关的已知问题,这可能会导致在接下来的步骤中发生故障。

    1. 将 Raspbian 映像解压缩到计算机的某个文件夹中。
  2. 将 Raspbian 安装到 microSD 卡。
    1. 下载并安装 Etcher SD 卡刻录机实用工具
    2. 运行 Etcher 并选择已在步骤 1 中解压缩的 Raspbian 映像。
    3. 选择 microSD 卡驱动器。 Etcher 可能已选择了正确的驱动器。
    4. 单击“刷机”,将 Raspbian 安装到 microSD 卡。
    5. 在安装完成后,从计算机中移除 microSD 卡。 可以安全地直接取出 microSD 卡,因为 Etcher 会在完成后自动弹出或卸载 microSD 卡。
    6. 将 microSD 卡插入 Pi。

启用 SSH 和 I2C

  1. 将 Pi 连接到监视器、键盘和鼠标。
  2. 启动 Pi,然后使用 pi 作为用户名并使用 raspberry 作为密码来登录 Raspbian。
  3. 依次单击 Raspberry 图标 >“首选项” > “Raspberry Pi 配置”。

    Raspbian 首选项菜单

  4. 在“接口”选项卡上,将“I2C”和“SSH”设置为“启用”,然后单击“确定”。 如果没有物理传感器并且想要使用模拟的传感器数据,则此步骤是可选的。

    在 Raspberry Pi 上启用 I2C 和 SSH

Note

若要启用 SSH 和 I2C,可在 raspberrypi.orgAdafruit.com 中找到更多参考文档。

将传感器连接到 Pi

使用试验板和跳线,将 LED 灯和 BME280 连接到 Pi,如下所示。 如果没有该传感器,请跳过此部分

Raspberry Pi 和传感器连接

BME280 传感器可以收集温度和湿度数据。 当设备向云发送消息时,LED 将闪烁。

对于传感器引脚,请使用以下接线:

始端(传感器和 LED 灯) 结束(开发板) 线缆颜色
VDD(引脚 5G) 3.3V 电源(引脚 1) 白线
GND(引脚 7G) GND(引脚 6) 棕色电缆
SDI(引脚 10G) I2C1 SDA(引脚 3) 红线
SCK(引脚 8G) I2C1 SCL(引脚 5) 橙色电缆
LED VDD(引脚 18F) GPIO 24(引脚 18) 白线
LED GND(引脚 17F) GND(引脚 20) 黑线

单击以查看 Raspberry Pi 2 和 3 引脚映射以供参考。

成功将 BME280 连接到 Raspberry Pi 后,它应如下图所示。

连接在一起的 Pi 和 BME280

将 Pi 连接到网络

使用 USB 微电缆和电源开启 Pi。 使用以太网电缆将 Pi 连接到有线网络,或者按照 Raspberry Pi Foundation 中的说明将 Pi 连接到无线网络。 将 Pi 成功连接到网络后,需要记下 Pi 的 IP 地址

已连接到有线网络

Note

确保 Pi 与计算机连接到同一网络。 例如,如果计算机连接到无线网络,而 Pi 连接到有线网络,则在 devdisco 输出中可能看不到 IP 地址。

在 Pi 上运行示例应用程序

克隆示例应用程序,并安装必备组件包

  1. 从主计算机使用下列 SSH 客户端之一连接到 Raspberry Pi:

    Windows 用户

    1. 下载并安装 PuTTY for Windows。
    2. 将 Pi 的 IP 地址复制到主机名(或 IP 地址)部分,并选择 SSH 作为连接类型。

    PuTTy

    Mac 和 Ubuntu 用户

    使用 Ubuntu 或 macOS 上的内置 SSH 客户端。 可能需要运行 ssh pi@<ip address of pi>,以通过 SSH 连接 Pi。

    Note

    默认用户名是 pi,密码是 raspberry

  2. 将 Node.js 和 NPM 安装到 Pi。

    首先检查 Node.js 版本。

    node -v
    

    如果版本低于 4.x,或者 Pi 上没有 Node.js,请安装最新版本。

    curl -sL http://deb.nodesource.com/setup_4.x | sudo -E bash
    sudo apt-get -y install nodejs
    
  3. 克隆示例应用程序。

    git clone https://github.com/Azure-Samples/iot-hub-node-raspberrypi-client-app
    
  4. 安装示例的所有程序包。 安装包括 Azure IoT 设备 SDK、BME280 传感器库和接线 Pi 库。

    cd iot-hub-node-raspberrypi-client-app
    sudo npm install
    

    Note

    完成此安装过程可能需要几分钟,具体取决于网络连接情况。

配置示例应用程序

  1. 通过运行以下命令,打开配置文件:

    nano config.json
    

    配置文件

    此文件中有两个可以配置的项。 第一个是 interval,它定义发送到云的消息之间的时间间隔(以毫秒为单位)。 第二个是 simulatedData,它是一个布尔值,指示是否使用模拟的传感器数据。

    如果没有传感器,请将 simulatedData 值设置为 true,使示例应用程序创建和使用模拟的传感器数据。

  2. 通过按“Ctrl-O”>“Enter”>“Ctrl-X”保存并退出。

运行示例应用程序

通过运行以下命令,生成示例应用程序:

sudo node index.js '<YOUR AZURE IOT HUB DEVICE CONNECTION STRING>'

Note

确保将设备连接字符串复制并粘贴到单引号中。

应看到以下输出,其中显示传感器数据以及发送至 IoT 中心的消息。

输出 - 从 Raspberry Pi 发送到 IoT 中心的传感器数据

后续步骤

此时已运行示例应用程序,收集传感器数据并将其发送到 IoT 中心。 若要查看 Raspberry Pi 已发送到 IoT 中心的消息或要向 Raspberry Pi 发送消息,请参阅使用用于 Visual Studio Code 的 Azure IoT 工具包扩展在设备和 IoT 中心之间发送和接收消息

若要继续了解 Azure IoT 中心入门知识并浏览其他 IoT 方案,请参阅以下文章: