电子发烧友App

硬声App

0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示
电子发烧友网>电子资料下载>电子资料>从Azure Percept中的docker容器控制Arduino

从Azure Percept中的docker容器控制Arduino

2023-06-27 | zip | 0.00 MB | 次下载 | 免费

资料介绍

描述

这是一篇文章,我们探讨了使用 Azure Percept 来提高工作人员的安全性并构建连接到微控制器以控制警报的概念证明。本文介绍了如何将 Azure Percept 连接到 Arduino、设置固件并演示如何在 docker 容器中使用 .NET IoT

工人安全的重要性

根据 OSHA,美国建筑工地工人死亡的最常见原因如下

  • 跌倒(造成建筑工人死亡的 33.5%)
  • 被物体击中(占建筑工人死亡的 11.1%)
  • 触电(占建筑工人死亡的 8.5%)
  • 夹在中间(占建筑工人死亡的 5.5%)

安全在每个工作现场都非常重要。有些地方是工人必须避开的。根据 Construction Dive 的一篇文章:与电梯相关的施工死亡人数正在上升

“虽然建筑和维修工人与电梯相关的总死亡人数与建筑总死亡人数相比相对较少,但从 2003 年到 2016 年,此类死亡人数翻了一番,从 14 人增加到 28 人,2015 年达到峰值 37 人,根据来自建筑研究与培训中心 (CPWR) 的一份报告。然而,跌倒是大多数电梯相关死亡的原因,就像整个建筑行业一样。超过 53% 的与电梯相关的死亡来自跌倒,在这些事件中,近 48% 来自 30 英尺以上的高度。”

查看这些统计数据,它在错误的时间出现在错误的地方。警告标志通常张贴在危险区域周围,但可能会被忽略或遗忘。

如果我们可以使用 Azure Percept 来监控这些危险区域并警告工作人员远离并避开它会怎样。目标是发出威慑、可听见的声音,提醒他们可能存在的危险。一旦工人离开该区域并且不再被检测到,声音就会自动停止。同样在维护期间,允许使用符合法规所需的授权远程禁用检测。

poYBAGNgjpOAGj8NAAB7uwwSowE811.png
?

?

?

入门

我们将查看该项目的硬件、软件要求和架构图。然后逐步了解如何设置和部署应用程序。

硬件

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://azure.microsoft.com

视觉工作室代码

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

整体架构

poYBAGNgjpaAKCcPAADz8-vrXNE532.png
?

当摄像头检测到危险区域内的工人时,会发出警报并将遥测信息发送到云端。Azure Percept Device Kit 包含一个人员检测模型,用于处理来自相机的帧。当检测到工人时;它向 Arduino 设备发送消息以设置蜂鸣器声音并将消息发送到 IoT Hub。

指示

设置人员检测模型

Azure Percept Device Kit 连接到云端后,我们可以通过转到 Vision 选项卡 -> Deploy a Sample Model 来指定使用人员检测模型

poYBAGNgjpeAHS5XAAA7V9W8Vss314.png
?
pYYBAGNgjpqAT_8JAABwW98xV08240.png
?

设置 Arduino 模块

我按照 .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

以下是步骤:

  • 打开 Arduino IDE
  • 转到库管理器并检查您是否安装了“ConfigurableFirmata”库
  • 从设备绑定文件夹中打开“Percept-Uno.ino”或访问http://firmatabuilder.com/创建您自己的自定义固件固件。确保您至少检查了您需要的功能。
  • 将此草图上传到您的 Arduino。

向arduino模块发送警报

在 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

https://github.com/rondagdag/arduino-percept/blob/main/PerceptEdgeSolution/modules/ArduinoModule/mod ...

将存储库更改为您的 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:

poYBAGNgjp-AD29GAACxNvC1Gx8055.png
?

当从 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
        }
      }

你可以在模拟器上测试一下

pYYBAGNgjqGAPcDDAAB4HMJAOOs407.png
?

部署设置

为了将其部署到 Azure Percept,IoT Hub 设备 -> 设置模块 -> 添加 -> IoT Edge 模块

pYYBAGNgjqWAGa5zAACSYIy8fUA500.png
?

填写模块名称和图像 URI。

poYBAGNgjqyAODI-AACIAkhARIg838.png
?

还有容器创建选项来映射正确的端口。

pYYBAGNgjq6ABD4NAACG0D0AwXA593.png
?

指定路线。在这种情况下,我们必须将来自 Azure Eye 模块的数据推送到 Arduino 模块。

pYYBAGNgjrCALo1eAACBDDW0aL8498.png
?

这是映射的样子

"$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 - 单击“竖起大拇指”按钮并关注我。


下载该资料的人也在下载 下载该资料的人还在阅读
更多 >

评论

查看更多

下载排行

本周

  1. 1DD3118电路图纸资料
  2. 0.08 MB   |  1次下载  |  免费
  3. 2AD库封装库安装教程
  4. 0.49 MB   |  1次下载  |  免费
  5. 3PC6206 300mA低功耗低压差线性稳压器中文资料
  6. 1.12 MB   |  1次下载  |  免费
  7. 4网络安全从业者入门指南
  8. 2.91 MB   |  1次下载  |  免费
  9. 5DS-CS3A P00-CN-V3
  10. 618.05 KB  |  1次下载  |  免费
  11. 6海川SM5701规格书
  12. 1.48 MB  |  次下载  |  免费
  13. 7H20PR5电磁炉IGBT功率管规格书
  14. 1.68 MB   |  次下载  |  1 积分
  15. 8IP防护等级说明
  16. 0.08 MB   |  次下载  |  免费

本月

  1. 1贴片三极管上的印字与真实名称的对照表详细说明
  2. 0.50 MB   |  103次下载  |  1 积分
  3. 2涂鸦各WiFi模块原理图加PCB封装
  4. 11.75 MB   |  89次下载  |  1 积分
  5. 3锦锐科技CA51F2 SDK开发包
  6. 24.06 MB   |  43次下载  |  1 积分
  7. 4锦锐CA51F005 SDK开发包
  8. 19.47 MB   |  19次下载  |  1 积分
  9. 5PCB的EMC设计指南
  10. 2.47 MB   |  16次下载  |  1 积分
  11. 6HC05蓝牙原理图加PCB
  12. 15.76 MB   |  13次下载  |  1 积分
  13. 7802.11_Wireless_Networks
  14. 4.17 MB   |  12次下载  |  免费
  15. 8苹果iphone 11电路原理图
  16. 4.98 MB   |  6次下载  |  2 积分

总榜

  1. 1matlab软件下载入口
  2. 未知  |  935127次下载  |  10 积分
  3. 2开源硬件-PMP21529.1-4 开关降压/升压双向直流/直流转换器 PCB layout 设计
  4. 1.48MB  |  420064次下载  |  10 积分
  5. 3Altium DXP2002下载入口
  6. 未知  |  233089次下载  |  10 积分
  7. 4电路仿真软件multisim 10.0免费下载
  8. 340992  |  191390次下载  |  10 积分
  9. 5十天学会AVR单片机与C语言视频教程 下载
  10. 158M  |  183342次下载  |  10 积分
  11. 6labview8.5下载
  12. 未知  |  81588次下载  |  10 积分
  13. 7Keil工具MDK-Arm免费下载
  14. 0.02 MB  |  73815次下载  |  10 积分
  15. 8LabVIEW 8.6下载
  16. 未知  |  65989次下载  |  10 积分