将 Sparkfun ESP8266 Thing Dev 连接到云中的 Azure IoT 中心

DHT22、Thing Dev 与 IoT 中心之间的连接

执行的操作

将 Sparkfun ESP8266 Thing Dev 连接到要创建的 IoT 中心。 然后,在 ESP8266 上运行一个示例应用程序,用于从 DHT22 传感器收集温度和湿度数据。 最后,将传感器数据发送到 IoT 中心。

Note

如果使用其他 ESP8266 开发板,仍可遵循这些步骤将它连接到 IoT 中心。 根据所用的 ESP8266 开发板,可能需要重新配置 LED_PIN。 例如,如果使用 AI-Thinker 提供的 ESP8266,可将此参数从 0 更改为 2

要学习的知识

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

所需的项目

本教程所需的部件

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

  • Sparkfun ESP8266 Thing Dev 开发板。
  • Micro USB 转 Type A USB 线缆。

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

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

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

  • Adafruit DHT22 温度和湿度传感器。
  • 试验板。
  • M/M 跳线。

创建 IoT 中心

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

    在 Azure 门户中创建 IoT 中心

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

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

    定价和缩放级别:选择免费的 F1 级别。 此选项对于本演示来说已足够。 请参阅定价和缩放级别

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

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

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

    填充用于创建 Azure IoT 中心的字段

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

    请查看通知,了解 IoT 中心的创建进度

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

    获取 IoT 中心的主机名

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

    获取 IoT 中心连接字符串

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

  1. Azure 门户中打开 IoT 中心。
  2. 单击“设备资源管理器”。
  3. 在“设备资源管理器”窗格中,单击“添加”将设备添加到你的 IoT 中心。

    设备 ID:新设备的 ID。

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

    自动生成密钥:选中此字段。

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

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

  4. 单击“保存” 。

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

    获取设备连接字符串

将 ESP8266 Thing Dev 与传感器和计算机相连接

将 DHT22 温度和湿度传感器连接到 ESP8266 Thing Dev

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

连接参考

我们使用以下传感器引脚连线方式:

启动(传感器) 结束(开发板) 线缆颜色
VDD(引脚 27F) 3V(引脚 8A) 红线
DATA(引脚 28F) GPIO 2(引脚 9A) 白线
GND(引脚 30F) GND(引脚 7J) 黑线

现在,Sparkfun ESP8266 Thing Dev 应已连接到正常工作的传感器。

将 dht22 与 ESP8266 Thing Dev 相连接

将 Sparkfun ESP8266 Thing Dev 连接到计算机

按如下所示,使用 Micro USB 转 Type A USB 电缆将 Sparkfun ESP8266 Thing Dev 连接到计算机。

将 feather huzzah 连接到计算机

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

如果使用 Ubuntu,请确保普通用户有权在 Sparkfun ESP8266 Thing Dev 的 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> 是在上一步骤中获取的组所有者名称。 <username> 是你的 Ubuntu 用户名。

  3. 从 Ubuntu 中注销,并再次登录,使更改生效。

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

在本部分,会在 Sparkfun ESP8266 Thing Dev 上部署并运行一个示例应用程序。 该示例应用程序会使 Sparkfun ESP8266 Thing Dev 上的 LED 闪烁,并将从 DHT22 传感器收集的温度和湿度数据发送到 IoT 中心。

从 GitHub 获取示例应用程序

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

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

    git clone https://github.com/Azure-Samples/iot-hub-SparkFun-ThingDev-client-app.git
    

在 Arduino IDE 中安装 Sparkfun ESP8266 Thing Dev 的程序包:

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

    在 arduino ide 中打开示例应用程序

  3. 在 Arduino IDE 中,单击“File”(文件) > “Preferences”(首选项)。

  4. 在“Preferences”(首选项)对话框中,单击“Additional Boards Manager URLs”(其他 Boards Manager URL)文本框旁边的图标。
  5. 在弹出窗口中输入以下 URL,然后单击“OK”(确定)。

    http://arduino.esp8266.com/stable/package_esp8266com_index.json

    指向 arduino ide 中的包 url

  6. 在“Preference”(首选项)对话框中,单击“OK”(确定)。

  7. 单击“Tools”(工具) > “Board”(开发板) > “Boards Manager”,然后搜索 esp8266。 应安装 2.2.0 或更高版本的 ESP8266。

    已安装 esp8266 包

  8. 单击“Tools”(工具) > “Board”(开发板) > “Adafruit HUZZAH ESP8266”。

安装所需的库

  1. 在 Arduino IDE 中,单击“Sketch” > “Include Library”(包含库) > “Manage Libraries”(管理库)。
  2. 逐个搜索以下库名称。 对于找到的每个库,单击“Install”(安装)。
    • AzureIoTHub
    • AzureIoTUtility
    • AzureIoTProtocol_MQTT
    • ArduinoJson
    • DHT sensor library
    • Adafruit Unified Sensor

没有真正的 DHT22 传感器?

如果没有真正的 DHT22 传感器,示例应用程序可以模拟温度和湿度数据。 若要让示例应用程序使用模拟的数据,请执行以下步骤:

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

    define SIMULATED_DATA true
    

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

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

将示例应用程序部署到 Sparkfun ESP8266 Thing Dev

  1. 在 Arduino IDE 中,单击“Tool”(工具) > “Port”(端口),然后单击 Sparkfun ESP8266 Thing Dev 的串行端口。
  2. 单击 “Sketch” > “Upload”(上传),生成示例应用程序并将其部署到 Sparkfun ESP8266 Thing Dev。

输入凭据

上传成功完成后,请执行以下步骤输入凭据:

  1. 在 Arduino IDE 中,单击“Tools”(工具) > “Serial Monitor”(串行监视器)。
  2. 在串行监视器窗口的右下角,可以看到两个下拉列表。
  3. 在左侧下拉列表中选择“No line ending”(无行尾)。
  4. 在右侧下拉列表中选择“115200 baud”(115200 波特率)。
  5. 在串行监视器窗口顶部的输入框中输入以下信息(如果系统要求提供),并单击“Send”(发送)。
    • Wi-Fi SSID
    • Wi-Fi 密码
    • 设备连接字符串
Note

凭据信息存储在 Sparkfun ESP8266 Thing Dev 的 EEPROM 中。 如果在 Sparkfun ESP8266 Thing Dev 开发板上单击重置按钮,示例应用程序会询问是否要擦除这些信息。 输入 Y 可擦除信息,系统会再次要求提供这些信息。

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

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

arduino ide 中的最终输出

后续步骤

现已成功将 Sparkfun ESP8266 Thing Dev 连接到 IoT 中心,并将捕获的传感器数据发送到了 IoT 中心。

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