将 Adafruit Feather M0 WiFi 连接到云中的 Azure IoT 中心

BME280、Feather M0 WiFi 与 IoT 中心之间的连接

在本教程中,从学习如何使用 Arduino 开发板的基础知识开始。 然后将学习如何使用 Azure IoT 中心将设备无缝连接到云。

准备工作

将 Adafruit Feather M0 WiFi 连接到创建的 IoT 中心。 然后,在 M0 WiFi 上运行一个示例应用程序,用于从 BME280 收集温度和湿度数据。 最后,将传感器数据发送到 IoT 中心。

学习内容

  • 如何创建 IoT 中心以及注册 Feather M0 WiFi 的设备
  • 如何将 Feather M0 WiFi 与传感器和计算机相连接
  • 如何在 Feather M0 WiFi 上运行示例应用程序来收集传感器数据
  • 如何将传感器数据发送到 IoT 中心

所需条件

本教程所需的部件

若要完成此操作,需要使用 Feather M0 WiFi 初学者工具包中的以下部件:

  • Feather M0 WiFi 开发板
  • Micro USB 转 Type A USB 线缆

还需要为开发环境做好以下准备:

  • 一个有效的 Azure 订阅。 如果没有 Azure 帐户,只需花费几分钟就能创建一个 Azure 试用帐户
  • 运行 Windows 或 Ubuntu 的 Mac 或 PC。
  • Feather M0 WiFi 要连接到的无线网络。
  • 建立 Internet 连接,以便下载配置工具。
  • Arduino IDE 1.6.8 版或更高版本。 早期版本不适用于 Azure IoT 中心库。

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

  • BME280 温度和湿度传感器
  • 试验板
  • M/M 跳线

创建 IoT 中心

  1. Azure 门户中,依次单击“新建” > “物联网” > “IoT 中心”。

    在 Azure 门户中创建 IoT 中心

  2. 在“IoT 中心”窗格中,输入 IoT 中心的以下信息:

    名称:输入 IoT 中心的名称。 如果输入的名称有效,则显示一个绿色复选标记。

    定价和缩放级别:选择“F1 - 免费”级别。 此选项对于本演示来说已足够。 有关详细信息,请参阅定价和缩放级别

    资源组:创建用于托管 IoT 中心的资源组,或使用现有的资源组。 有关详细信息,请参阅使用资源组管理 Azure 资源

    位置:选择与创建的 IoT 中心最靠近的位置。

    固定仪表板:选中此选项可以方便地从仪表板访问 IoT 中心。

    输入创建 IoT 中心所需的信息

    Important

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

  3. 单击“创建” 。 创建 IoT 中心可能需要数分钟的时间。 可在“通知”窗格中查看进度。

    查看 IoT 中心的进度通知

  4. 创建 IoT 中心后,请在仪表板中单击它。 记下“主机名”,并单击“共享访问策略”。

    获取 IoT 中心的主机名

  5. 在“共享访问策略”窗格中单击“iothubowner”策略,并复制并记下 IoT 中心的连接字符串。 有关详细信息,请参阅控制对 IoT 中心的访问

Note

此设置教程不需要此 iothubowner 连接字符串。 不过,在完成此设置以后,可能需要将其用于某些讲述其他 IoT 方案的教程。

获取 IoT 中心连接字符串

在 IoT 中心为设备进行设备注册

  1. Azure 门户中打开 IoT 中心。
  2. 单击“设备资源管理器”。
  3. 在“设备资源管理器”窗格中,单击“添加”将设备添加到 IoT 中心。 然后执行以下操作:

    设备 ID:输入新设备的 ID。 设备 ID 区分大小写。

    身份验证类型:选择“对称密钥”。

    自动生成密钥:选中此复选框。

    将设备连接到 IoT 中心:单击“启用”。

    在 IoT 中心的设备资源管理器中添加设备

    Important

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

  4. 单击“保存” 。

  5. 创建设备后,在“设备资源管理器”窗格中打开设备。
  6. 记下连接字符串的主密钥。

    获取设备连接字符串

将 Feather M0 WiFi 与传感器和计算机相连接

在此部分中,将传感器连接到开发板。 然后,将设备插入计算机以供进一步使用。

将 DHT22 温度和湿度传感器连接到 Feather M0 WiFi

使用试验板和跳线建立连接。 如果没有传感器,请跳过本部分,因为可以改用模拟的传感器数据。

连接参考

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

启动(传感器) 结束(开发板) 线缆颜色
VDD(引脚 27A) 3V(引脚 3A) 红线
GND(引脚 29A) GND(引脚 6A) 黑线
SCK(引脚 30A) SCK(引脚 12A) 黄色电缆
SDO(引脚 31A) MI(引脚 14A) 白线
SDI(引脚 32A) M0(引脚 13A) 蓝线
CS(引脚 33A) GPIO 5(引脚 15J) 橙色电缆

有关详细信息,请参阅 Adafruit BME280 湿度 + 大气压力 + 温度传感器分类Adafruit Feather M0 WiFi 引出线

现在,Feather M0 WiFi 应已连接到正常工作的传感器。

将 DHT22 与 Feather Huzzah 相连接

将 Feather M0 WiFi 连接到计算机

按如下所示,使用 Micro USB 转 Type A USB 线缆将 Feather M0 WiFi 连接到计算机:

将 Feather Huzzah 连接到计算机

添加串行端口权限(仅适用于 Ubuntu)

如果使用 Ubuntu,确保有权在 Feather M0 WiFi 的 USB 端口上操作。 若要添加串行端口权限,请执行以下步骤:

  1. 在终端运行以下命令:

    ls -l /dev/ttyUSB*
    ls -l /dev/ttyACM*
    

    返回以下输出之一:

    • crw-rw---- 1 root uucp xxxxxxxx
    • crw-rw---- 1 root dialout xxxxxxxx

    请注意,在输出中,uucpdialout 是 USB 端口的组所有者名称。

  2. 若要将用户添加到该组中,请运行以下命令:

    sudo usermod -a -G <group-owner-name> <username>
    

    在上一步骤中已获取组所有者名称 <group-owner-name>。 你的 Ubuntu 用户名为 <username>

  3. 若要显示更改,请注销 Ubuntu 并重新登录。

收集传感器数据并将其发送到 IoT 中心

本部分在 Feather M0 WiFi 上部署并运行一个示例应用程序。 该示例应用程序会使 Feather M0 WiFi 上的 LED 闪烁。 然后,它将从 BME280 传感器收集的温度和湿度数据发送到 IoT 中心。

从 GitHub 获取示例应用程序并准备 Arduino IDE

该示例应用程序托管在 GitHub 中。 从 GitHub 中克隆包含该示例应用程序的示例存储库。 若要克隆示例存储库,请执行以下步骤:

  1. 打开命令提示符或终端窗口。
  2. 转到用于存储示例应用程序的文件夹。
  3. 运行以下命令:

    git clone https://github.com/Azure-Samples/iot-hub-Feather-M0-WiFi-client-app.git
    

在 Arduino IDE 中安装 Feather M0 WiFi 的包

  1. 打开存储示例应用程序的文件夹。
  2. 在 Arduino IDE 中打开 app 文件夹中的 app.ino 文件。

    在 Arduino IDE 中打开示例应用程序

  3. 单击“文件” > “首选项”(Windows/Linux) 或“Arduino” > “首选项”(Mac),将以下链接复制并粘贴到 Arduino IDE 首选项中的“其他开发板管理器 URL”选项中。

    https://adafruit.github.io/arduino-board-index/package_adafruit_index.json, https://adafruit.github.io/arduino-board-index/package_adafruit_index.json
    
  4. 依次单击“工具” > “开发板” > “开发板管理器”,然后安装 Arduino SAMD Boards 版本 1.6.2 或更高版本。

  5. 然后,在同一个窗口中安装 Adafruit SAMD Boards 包以添加开发板文件定义。

    已安装 esp8266 包

  6. 依次单击“工具” > “开发板” > “Adafruit M0 WiFi”。

  7. 安装驱动程序(仅适用于 Windows)。 插入 Feather M0 WiFi 时,可能需要安装驱动程序。 单击网页上的下载链接下载驱动程序安装程序。 按照以下步骤安装所需的驱动程序。

安装所需的库

  1. 在 Arduino IDE 中,单击“Sketch” > “Include Library”(包含库) > “Manage Libraries”(管理库)。

  2. 逐个搜索以下库名称。 对于找到的每个库,单击“安装”:

    • RTCZero
    • NTPClient
    • AzureIoTHub
    • AzureIoTUtility
    • AzureIoTProtocol_HTTP
    • ArduinoJson
    • Adafruit BME280 Library
    • Adafruit Unified Sensor
  3. 手动安装 Adafruit_WINC1500。 转到此网站,单击“克隆或下载” > “下载 ZIP”。 然后,在 Arduino IDE 中,转到“草图” > “包含库” > “添加 .zip 库”并添加该 zip 文件。

如果没有真正的 BME280 传感器,请使用示例应用程序

如果没有真正的 BME280 传感器,示例应用程序可以模拟温度和湿度数据。 若要设置示例应用程序以使用模拟数据,请按照以下步骤操作:

  1. 打开 app 文件夹中的 config.h 文件。
  2. 找到以下代码行并将值从 false 更改为 true

    define SIMULATED_DATA true
    

    将示例应用程序配置为使用模拟数据

  3. 使用 Control-s 保存文件。

将示例应用程序部署到 Feather M0 WiFi

  1. 在 Arduino IDE 中,依次单击“工具” > “端口”,并单击 Feather M0 WiFi 的串行端口。
  2. 依次单击“草图” > “上传”,生成示例应用程序并将其部署到 Feather M0 WiFi。

输入凭据

上传成功完成后,按照以下步骤输入凭据:

  1. 在 Arduino IDE 中,单击“Tools”(工具) > “Serial Monitor”(串行监视器)。

  2. 在串行监视器窗口右下角,选择左侧下拉列表中的“无行尾”。

  3. 选择右侧下拉列表中的“115200 波特率”。
  4. 在顶部的输入框中输入以下信息(如果系统要求提供),单击“发送”:

    • Wi-Fi SSID
    • Wi-Fi 密码
    • 设备连接字符串

Note

凭据信息存储在 Feather M0 WiFi 的 EEPROM 中。 如果在 Feather M0 WiFi 开发板上单击重置按钮,示例应用程序会询问是否要擦除这些信息。 输入 Y 以擦除信息。 按提示再次提供这些信息。

验证示例应用程序是否成功运行

如果串行监视器窗口中显示以下输出并且 Feather M0 WiFi 上的 LED 闪烁,则表明示例应用程序已成功运行。

Arduino IDE 中的最终输出

后续步骤

现已成功将 Feather M0 WiFi 连接到 IoT 中心,并将捕获的传感器数据发送到了 IoT 中心。

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