项目简介
本项目演示了如何使用ESP8266微控制器连接到Azure IoT Hub、Cosmos DB和Power BI。ESP8266从DS18B20温度传感器收集数据,并将其发送到Azure IoT Hub,然后存储在Cosmos DB中,最后在Power BI中进行可视化展示。
项目的主要特性和功能
- ESP8266微控制器:用于数据采集和发送。
- DS18B20温度传感器:用于收集温度数据。
- Azure IoT Hub:用于接收并存储数据。
- Cosmos DB:用于存储从IoT Hub转发过来的数据。
- Power BI:用于数据的可视化和分析。
安装使用步骤
1. 硬件连接
具体的硬件连接方式依赖于你使用的ESP8266和DS18B20的版本。对于ESP8266 - 1和"DS18B20 outside"版本,连接方式如下:
+-------------------+
|DS18b20 | ESP8266|
|-------------------|
| VCC --- 3,3v |
| GND --- GND |
| S --- GPIO2 |
+-------------------+
同时,为了供电和烧录程序,建议使用Arduino。
2. 软件安装与配置
- 安装Arduino IDE:在计算机上安装最新版本的Arduino IDE。
- 安装库:在Arduino IDE库管理器中安装Azure SDK for C和DallasTemperature库及其相关依赖。
- 配置连接信息:在Arduino IDE中打开
Azure_IoT_Hub_ESP8266
示例草图,并在iot_configs.h
文件中更新你的连接信息。包括WiFi信息、Azure IoT Hub信息、设备ID和设备密钥等。 - 更新数据发送函数:更新
getTelemetryPayload()
函数,以发送你想要的特定数据到Azure IoT Hub和Azure Cosmos DB。 - 创建消息路由:在Azure IoT Hub中创建消息路由,将数据传输到Cosmos DB。在Power BI中登录你的Azure账户,以便连接到Cosmos DB。
3. 常见问题与解决方案
如果在存储数据到Cosmos DB时遇到问题,可以尝试在sendTelemetry()
函数的顶部添加以下代码:
```c
uint8_t property_buffer[64];
az_span property_span = AZ_SPAN_FROM_BUFFER(property_buffer);
az_iot_message_properties props; az_iot_message_properties_init(&props, property_span, 0);
az_iot_message_properties_append( &props, AZ_SPAN_FROM_STR(AZ_IOT_MESSAGE_PROPERTIES_CONTENT_TYPE), AZ_SPAN_LITERAL_FROM_STR("application%2Fjson")); az_iot_message_properties_append( &props, AZ_SPAN_FROM_STR(AZ_IOT_MESSAGE_PROPERTIES_CONTENT_ENCODING), AZ_SPAN_LITERAL_FROM_STR("utf-8")); ``` 这可以确保数据以JSON utf - 8格式进行存储,而非Base64编码。
许可证
本项目的SDK和示例采用MIT许可证。
下载地址
点击下载 【提取码: 4003】【解压密码: www.makuang.net】