这是一篇文章,我们探讨了使用 Azure Percept 来提高工作人员的安全性并构建连接到微控制器以控制警报的概念证明。本文介绍了如何将 Azure Percept 连接到 Arduino、设置固件并演示如何在 docker 容器中使用 .NET IoT。
根据 OSHA,美国建筑工地工人死亡的最常见原因如下
安全在每个工作现场都非常重要。有些地方是工人必须避开的。根据 Construction Dive 的一篇文章:与电梯相关的施工死亡人数正在上升
“虽然建筑和维修工人与电梯相关的总死亡人数与建筑总死亡人数相比相对较少,但从 2003 年到 2016 年,此类死亡人数翻了一番,从 14 人增加到 28 人,2015 年达到峰值 37 人,根据来自建筑研究与培训中心 (CPWR) 的一份报告。然而,跌倒是大多数电梯相关死亡的原因,就像整个建筑行业一样。超过 53% 的与电梯相关的死亡来自跌倒,在这些事件中,近 48% 来自 30 英尺以上的高度。”
查看这些统计数据,它在错误的时间出现在错误的地方。警告标志通常张贴在危险区域周围,但可能会被忽略或遗忘。
如果我们可以使用 Azure Percept 来监控这些危险区域并警告工作人员远离并避开它会怎样。目标是发出威慑、可听见的声音,提醒他们可能存在的危险。一旦工人离开该区域并且不再被检测到,声音就会自动停止。同样在维护期间,允许使用符合法规所需的授权远程禁用检测。
我们将查看该项目的硬件、软件要求和架构图。然后逐步了解如何设置和部署应用程序。
Azure 感知设备工具包
https://www.microsoft.com/d/azure-percept-dk/8mn84wxz7xww
与 Arduino IDE 兼容的 ELEGOO UNO R3 超级入门套件
https://www.elegoo.com/products/elegoo-uno-project-super-starter-kit
Azure 订阅(Azure Percept 需要)
视觉工作室代码
https://code.visualstudio.com/
适用于 VS Code 的 Azure IoT 工具扩展
https://marketplace.visualstudio.com/items?itemName=vsciot-vscode.azure-iot-tools
Azure IoT Edge 开发工具
https://github.com/Azure/iotedgedev
使用 DockerHub 帐户的 Docker
https://docs.docker.com/get-docker/
Arduino IDE
https://www.arduino.cc/en/software
当摄像头检测到危险区域内的工人时,会发出警报并将遥测信息发送到云端。Azure Percept Device Kit 包含一个人员检测模型,用于处理来自相机的帧。当检测到工人时;它向 Arduino 设备发送消息以设置蜂鸣器声音并将消息发送到 IoT Hub。
Azure Percept Device Kit 连接到云端后,我们可以通过转到 Vision 选项卡 -> Deploy a Sample Model 来指定使用人员检测模型
我按照 .NET IoT github 页面上的说明进行操作。
https://github.com/dotnet/iot/tree/main/src/devices/Arduino#quick-start
您可以在以下位置下载我用于此项目的 Firmata 固件:
https://github.com/rondagdag/arduino-percept/blob/main/firmata/percept-uno/percept-uno.ino
以下是步骤:
在 Visual Studio Code 中打开 Percept Edge 解决方案项目
https://github.com/rondagdag/arduino-percept/tree/main/PerceptEdgeSolution
如果你有 Azure IoT Edge Dev 工具和 Azure IoT Tools Extensions for VS Code,这个模块可以在你的机器上本地运行
要在您的机器上本地运行它,您可能需要更改此 module.json
将存储库更改为您的 Dockerhub 用户名。
"repository": "rondagdag/arduino-percept-module"
Arduino 模块是一个控制 arduino 设备的 C# 应用程序。它是一个使用 .NET IoT 绑定的 docker 容器。这是我使用的Nuget 包。
Include="Microsoft.Azure.Devices.Client" />
Include="Microsoft.Extensions.Configuration" />
Include="Microsoft.Extensions.Configuration.Abstractions" />
Include="Microsoft.Extensions.Configuration.Binder" />
Include="Microsoft.Extensions.Configuration.EnvironmentVariables" />
Include="Microsoft.Extensions.Configuration.FileExtensions" />
Include="Microsoft.Extensions.Configuration.Json" />
Include="System.Runtime.Loader" />
Include="System.IO.Ports" />
Include="System.Device.Gpio" />
Include="Iot.Device.Bindings" />
Include="Microsoft.Extensions.Logging.Console" />
该模块尝试连接到两个 Arduino USB 端口。我注意到有时在重新启动期间,它可能是 arduino 连接到的这些端口之一。
/dev/ttyACM0
/dev/ttyACM1
为了在您的机器上本地运行它,您可能必须将端口号更改为 Arduino IDE 确定 UNO 连接到的端口号(Windows 的 COM3 或 Mac 的 /dev/ttyS1)
它连接到 115200 波特率。
蜂鸣器连接到如下所示的 PIN 12:
当从 IoT Edge 中心接收消息时,可以对其进行处理以检测是否检测到工作人员。如果有效载荷包含 NEURAL NETWORK 节点中的项目,那么我们可以将警报发送到 Arduino。
这是要分析的代码。
在您的机器上本地运行它可能会很棘手,并且可能需要一些修改。您可能必须修改部署模板和代码才能接收来自模拟温度的有效负载。
注意端口是如何映射到 docker 容器上的。/dev/ttyACM0 和 /dev/ttyACM1
"ArduinoModule": {
"version": "1.0",
"type": "docker",
"status": "running",
"restartPolicy": "always",
"settings": {
"image": "${MODULES.ArduinoModule}",
"createOptions": {
"HostConfig": {
"Privileged": true,
"Devices": [
{
"PathOnHost": "/dev/ttyACM0",
"PathInContainer": "/dev/ttyACM0",
"CgroupPermissions": "rwm"
},
{
"PathOnHost": "/dev/ttyACM1",
"PathInContainer": "/dev/ttyACM1",
"CgroupPermissions": "rwm"
}
]
}
}
}
}
本地的 EdgeHub 映射如下所示。模拟温度传感器将输出传递给 Arduino 模块。然后 Arduino 模块过滤数据,控制 arduino 并将遥测数据发送到云端。
"$edgeHub": {
"properties.desired": {
"schemaVersion": "1.2",
"routes": {
"sensorToArduinoModule": "FROM /messages/modules/SimulatedTemperatureSensor/outputs/temperatureOutput INTO BrokeredEndpoint(\"/modules/ArduinoModule/inputs/input1\")",
"ArduinoModuleToIoTHub": "FROM /messages/modules/ArduinoModule/outputs/* INTO $upstream"
},
"storeAndForwardConfiguration": {
"timeToLiveSecs": 7200
}
}
你可以在模拟器上测试一下
为了将其部署到 Azure Percept,IoT Hub 设备 -> 设置模块 -> 添加 -> IoT Edge 模块
填写模块名称和图像 URI。
还有容器创建选项来映射正确的端口。
指定路线。在这种情况下,我们必须将来自 Azure Eye 模块的数据推送到 Arduino 模块。
这是映射的样子
"$edgeHub": {
"properties.desired": {
"routes": {
"AzureSpeechToIoTHub": "FROM /messages/modules/azureearspeechclientmodule/outputs/* INTO $upstream",
"AzureEyeModuleToArduinoModule": "FROM /messages/modules/azureeyemodule/outputs/* INTO BrokeredEndpoint(\"/modules/ArduinoModule/inputs/input1\")",
"ArduinoModuleToIoTHub": "FROM /messages/modules/ArduinoModule/outputs/* INTO $upstream"
},
在任何工作场所,确保工人的安全都非常重要。Azure Percept 可以帮助检测人员并连接不同的警报系统。我们演示了如何设置 Azure Percept Dev Kit 以使用人员检测。我们已将 Arduino 与蜂鸣器连接以触发可听见的声音。这实际上使 Azure Percept Dev Kit 能够扩展功能并拓宽用例。让我知道这个博客是否对您有任何帮助,请在下面发表评论,我有兴趣学习不同的想法和用例。
参考代码:
https://github.com/rondagdag/arduino-percept
Azure Percept 入门:
https://docs.microsoft.com/azure/azure-percept/
如果这个项目启发了您使用 Azure Percept - 单击“竖起大拇指”按钮并关注我。
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
全部0条评论
快来发表一下你的评论吧 !