- 什么是Microsoft Azure IoT中心?
- 创建一个Azure IoT中心
- 使用Raspberry Pi构建Azure IoT测试电路所需的组件
- 带有Raspberry Pi的Azure IoT –硬件原理图
- 对Raspberry Pi进行编程以在Azure IoT中心上发布数据
- 在Azure IoT中心上发布数据-测试
Microsoft的云计算服务Azure IoT中心使开发人员可以在单个平台上连接,监视和管理数十亿个IoT设备。它已用于各种物联网应用中,例如家庭自动化系统,安全性,监视和监视系统。为了演示Azure IoT中心的功能,我们将使用Raspberry Pi,DHT11温度和湿度传感器构建一个小型电路,以便与其一起处理传感器数据。最后,我们将 使用MQTT协议将 传感器数据发布到Azure IoT服务器。在本教程中,我们将学习如何设置和配置Azure服务器以及如何使用Raspberry Pi发送数据。
什么是Microsoft Azure IoT中心?
Azure IoT中心 是一组托管服务,可以连接,监视和控制IoT设备。它还包括用于设备的安全通信,以及数据可视化和分析功能,这些数据可通过Azure 云帮助设备制造商构建,部署和管理IoT应用程序 。 Azure IoT中心的设备到CD遥测数据可让我们知道已连接的IoT设备的状态,而云到设备消息使我们能够向已连接的设备发送命令和通知。例如,使用智能家居自动化系统,我们可以收集各种传感器数据并将其发送到Azure IoT中心以可视化,存储和管理它们。我们还可以从Azure IoT中心界面控制输出设备。
物联网应用程序和设备的双向通信中央枢纽既支持设备云通信又支持云设备通信,还支持多种消息传递模式,例如从设备到云的遥测,从设备上传文件以及请求-答复方法,我们可以使用每个设备的身份验证方法,使每个设备都能安全地连接到IoT中心。现在,您已经了解了Azure IoT中心的基础,让我们开始设置系统。
创建一个Azure IoT中心
我们准备好进行设置Microsoft Azure 服务所需的所有必要设置, 但是在此之前,请确保您具有Microsoft帐户。如果没有,您可以简单地注册。之后,使用 portal.azure.com 转到Azure门户 并登录。
登录后,转到Azure主页,选择“ 创建资源” 按钮,然后 在“ 搜索市场” 字段中搜索 IoT中心 。 从搜索结果中选择 IoT中心,然后选择 创建。下图将为您提供一个更好的过程思路。
填写必要的详细信息以创建IoT中心。
在“订阅” 部分中,您需要选择要用于集线器的订阅。在我们的情况下,我们选择一个试用帐户,然后选择“ 免费试用” 。
接下来,在“资源组”部分中,选择您的资源组。如果您没有该资源,则需要通过单击“创建新 资源”并输入资源名称来创建一个新资源。
在“区域” 部分中,您可以使用下拉菜单选择首选区域。
在物联网中心名称部分,你需要Ë NTER的集线器的名称。这必须是唯一的。所有必要的通讯都将使用此名称进行。
在 “大小和比例”选项卡下,选择“ 免费套餐 ”,然后单击“下一步”。 然后单击“审阅+创建”。创建IoT中心将需要几分钟。 单击您创建的IoT中心的名称。如下图所示,从窗口中记下 主机名 。然后 在“设置”中单击“ 共享访问策略”。下图突出显示了共享访问策略。单击“ 策略”下的 iothubowner选项。记下 主键 和 连接字符串-主键, 以备将来参考。现在,要在IoT中心下注册新设备,请单击 IoT设备。 在“设备资源管理器”窗格中,单击“ 添加”以将设备添加 到集线器。
在“新设备”选项卡中填写以下信息。
- 设备ID:输入设备的ID 。设备ID必须是唯一的。
- 身份验证类型: 选择一个对称密钥。
- 自动生成密钥: 选中此复选框。
- 将设备连接到IoT中心: 单击启用。
创建设备后,您可以在“设备资源管理器”部分找到新创建的 设备。单击设备名称。它将显示设备的详细信息。记下设备的 主键 和 连接字符串-主键 。这很重要,因为我们需要它进行交流。
现在,完成此操作后,我们可以继续进行硬件方面的工作。
使用Raspberry Pi构建Azure IoT测试电路所需的组件
由于该电路的硬件部分非常简单,因此组件要求也非常简单。所需组件的列表如下所示。
- Raspberry Pi 3B(我们也可以使用任何其他型号的Pi)
- Micro SD卡16 GB
- DHT11传感器
- Micro USB 5V,2.4A电源
带有Raspberry Pi的Azure IoT –硬件原理图
带有树莓派 项目的Azure IoT的完整电路图如下所示,它是使用压纹法构建的。遵循电路图和连接以自行制作电路。
上面的电路将温度和湿度数据发送到Microsoft IoT中心。在此电路中,我们使用了 DHT11 传感器来收集 温度和湿度 数据,并且使用了Raspberry Pi 3B作为数据处理设备。DHT11传感器具有三个引脚。VCC和GND引脚用于为传感器提供5V直流电源,DHT11的数据输出引脚连接到Raspberry Pi的GPIO4。如果您想学习如何将DHT11温湿度传感器与Raspberry Pi进行接口连接,可以查看我们之前关于该主题的文章。我们还使用此传感器来构建IoT Raspberry Pi气象站。
对Raspberry Pi进行编程以在Azure IoT中心上发布数据
在开始对此项目进行编码之前,我们需要 在Azure门户中创建一个 Azure云外壳(CLI) 。这将在许多方面派上用场。为此,请在门户中单击“ Azure云外壳”按钮,如下所示。然后单击创建存储选项,标记为红色。
一旦这样做,你可以打开命令行,并运行以下命令来安装 Azure的附加”小号 将被用来显示传感器数据。
az扩展名添加--name azure-cli-iot-ext
完成后,我们需要在Raspberry Pi上安装依赖项以与 DHT11传感器 进行通信,并使Azure IoT服务的通信过程变得容易。为此,请打开Raspberry Pi终端以安装项目中使用的相关软件包。
首先,我们需要下载Raspberry Pi的DHT库,然后从根文件夹中将其解压缩并运行以下命令进行安装。
sudo python setup.py安装
成功安装后,运行以下命令以在Azure IoT中心上安装所有从属程序包。
sudo pip3安装azure-iot设备 sudo pip3安装azure-iot-hub sudo pip3安装azure-iothub-service-client sudo pip3安装azure-iothub-device-client
一旦完成所有必备组件的安装,就可以使用Python编写代码了。为此,首先导入所有库:
从azure.iot.device 导入随机 导入Adafruit_DHT 导入时间 导入IoTHubDeviceClient,消息
在这个项目中,我们使用Raspberry Pi的第4针来处理DHT11数据中的数据,因此需要如图所示进行声明。
传感器= Adafruit_DHT.DHT11 引脚= 4
接下来,我们定义代码的连接字符串。将其替换为我们之前保存的设备主连接字符串。
CONNECTION_STRING =“ HostName = sensordata.azure-devices.net; DeviceId = ZZZZZ; SharedAccessKey = ZZZZZZZZZZZZZZZZZZ”
接下来,我们创建一个数组,该数组将用于将数据发送到Azure IoT中心。可以如下所示进行。
MSG_SND ='{{“温度”:{温度},“湿度”:{湿度}}}''
接下来,我们定义了while循环,在while循环中,使用 Adafruit_DHT.read_retry 函数处理湿度和温度数据 。此外,我们定义了两个特殊变量,并将输出数据分配给这些变量。
而True: 湿度,温度= Adafruit_DHT.read_retry(传感器,引脚)
接下来,编写一个函数以使用我们先前定义的连接参数连接IoT中心。
def iothub_client_init(): 客户端= IoTHubDeviceClient.create_from_connection_string(CONNECTION_STRING) 返回客户端
最后,在下一步中,使用下面的代码所示的格式,将温度和湿度数据都发送到Azure Hub。另外,我们使用了try and catch方法来识别代码中是否存在任何错误。
def iothub_client_telemetry_sample_run(): 尝试: client = iothub_client_init() print(“将数据发送到IoT中心,按Ctrl-C退出”), 而True: msg_txt_formatted = MSG_SND.format(温度=温度,湿度=湿度) message = Message( msg_txt_formatted) print(“正在发送消息:{}”。format(message)) client.send_message(message) print(“消息已成功发送”) time.sleep(3)
在Azure IoT中心上发布数据-测试
成功编写代码后,对其进行编译并检查是否有错误。如果代码块编译成功,则运行代码。在“终端”窗口中,您应该看到消息“消息已成功发送”。窗口的屏幕截图如下所示:
现在,要查看Azure IoT中心中的数据,请转到门户并单击CLI终端,然后运行以下命令替换其中的凭据。
az iot集线器监视事件--hub-name XYZ --device-id XYZ
注意:
用您的集线器名称和设备ID替换XYZ。
运行上面的命令后,您应该获得屏幕上如下所示的数据。这与从Raspberry Pi发送的数据相同。
这标志着本教程的结束,希望您喜欢这篇文章并学到一些新东西。如果您对文章有任何疑问,可以将其留在下面的评论部分。或者,您可以使用我们的电子论坛来获得更快更好的响应。