Getting started with OAK LUX-ESP32 devices

Note

设备上内嵌 ESP32 并不意味着用户可以在没有 USB-C 连接的情况下开发设备。

在本教程中,我们将看到:

  • ESP32 概览 - DepthAI 连接

  • 限制

  • ESP32 的常见用例

  • 如何开始开发

代码示例

代码示例在我们的 esp32-spi-message-demo github 存储库。

概观

                DepthAI device                        ┌─────┐
┌───────────────────────────────────────────────┐     │  ◎  │
│                                               │     │     │
│                ┌───────────────────ESP32───┐  │  BT |     |
│                │                           │--│◄───►|     |
│                │   (Your ESP32 firmware)   │  │     └─────┘
│                │                           │  │         ┌──────────┐
│                │---------------------------│  │         │          │
│                │     depthai-spi-api       │--│◄───────►├──────────┤
│                └───────▲───────────────────┘  │  WiFi   │  Server  │
│                        │                      │         ├──────────┤
│                        │SPI                   │         │          │
│      Right             │                      │         └──────────┘
│       ┌───┐   ┌───┬────▼───┬─MyriadX(VPU)──┐  │
│       │ ◯ │--►|   │        │               │  │            Host
│ ┌───┐ └───┘   │   │ SpiOut │     ┌─────────┤  │        ┌───────────┐
│ │ ◯ │--------►|   └────────┘     │         │  │        │           │
│ └───┘ ┌───┐   │                  │ XLinkIn │  │  XLink │           │
│Color  │ ◯ |--►| (Your pipeline)  │ XLinkOut│--│◄──────►│           │
│       └───┘   │                  │         │  │        └────┬─┬────┘
│        Left   └──────────────────┴─────────┘  │             │ │
│                                               │           ──┴─┴──
└───────────────────────────────────────────────┘

概述解释:

  • MyriadX 是 DepthAI 上的 VPU,您可以在其中运行您的管道

  • MyriadX 连接到主机(例如 PC)

  • MyriadX 可以通过 SPI (使用 SPIOut 节点)向 ESP32发送 信息

  • ESP32可以使用 depthai-spi-api 库(这是 ESP-IDF 组件)接收这些消息。

  • 在 ESP32上,你可以运行消息的后期处理,并有选择地将结果发送到服务器(如果连接到 WiFi 网络)或蓝牙设备(如智能手机)

局限性

目前,用例的瓶颈是 SPI 吞吐量,大约为 200kbps。 这意味着您不能通过 SPI 实时传输帧。这是 SPI 驱动程序当前的限制,但是我们正计划对此进行研究,并将 SPI 的吞吐量提高到 ~8mbps (目前还没有 ETA)。

目前我们只支持 ESP-IDF 作为开发框架,将来我们可能会支持 Arduino

ESP32的通用用例

TL;DR:

  • 发送元数据结果(空间坐标、神经网络结果、小轨迹等)

  • OTA 更新

  • 捕获和发送(图像的一部分)

  • 系统信息记录

  • 将数据发送到云(比如. AWS/Azure/GCP 或任何其他物联网平台)

  • 将数据发送到蓝牙设备(例如智能手机)

更详细的解释:

  • 您可以在 VPU 上运行空间对象检测和/或对象跟踪管道,并通过 SPI 向 ESP32发送带有空间数据的 tracklet。在 ESP32上,您可以运行一些简单的过滤和/或 NN 结果解码,然后将最终结果发送到云

  • ESP32还可以闪存 DepthAI 引导加载程序和/或管道,这意味着支持 OTA (通过无线方式)更新。

  • 我们有一个例子,通过 SPI 从 VPU 到 ESP32发送一个 完整的图像一个图像的一部分

  • 可以将 VPU 上的管道配置为将系统信息(使用 SystemLogger 节点)发送到 ESP32,再由 ESP32将其转发到日志平台

  • ESP32 也有蓝牙功能,所以你可以将数据从 ESP32转发到智能手机

如何开始开发

  1. nstall the ESP-IDF, 说明在这里.

  2. 在设置 环境变量 之后,您可以使用 idf.py build 构建来自 esp32-spi-message-demo 存储库的任何演示。

  3. 构建完成后,您可以使用 idf.py -p PORT flash monitor (使用 ESP32 端口替换 PORT , 例如 /dev/ttyUSB0) 刷入您的 ESP32 。您可能需要使用 sudo chmod 777 PORT 更改端口的权限,以便 idf.py 可以访问它。

  4. 在刷入 ESP32 之后,您可以启动管道。如果您使用了一个 ESP32 demo 代码,那么您应该从 gen2-spi demos 演示中运行相应的 python 脚本。

DepthAI应用程序包(DAP

以下部分将展示一个示例: 刷入引导加载程序(仅需要一次)并将创建的管道“myExamplePipeline”刷入设备(该示例是用 Python 编写的,类似的步骤适用于 C++)

  1. Flashing bootloader

import depthai as dai
(f, bl) = dai.DeviceBootloader.getFirstAvailableDevice()
bootloader = dai.DeviceBootloader(bl)
progress = lambda p : print(f'Flashing progress: {p*100:.1f}%')
bootloader.flashBootloader(progress)
  1. 刷入 创建的管道

    import depthai as dai
    # ...
    # Create Pipeline 'myExamplePipeline'
    # ...
    (f, bl) = dai.DeviceBootloader.getFirstAvailableDevice()
    bootloader = dai.DeviceBootloader(bl)
    progress = lambda p : print(f'Flashing progress: {p*100:.1f}%')
    bootloader.flash(progress, myExamplePipeline)
    

    Warning

    目前 bootloader 版本需要刷入最新版即 使用 depthai 2.9.0.0 执行 flash bootloader

    而刷入管道 则需要 特定版本 depthai 2.2.1.0

有疑问?

我们很乐意为您提供代码或其他问题的帮助。

我们的联系方式

OAK QQ群
QQ

OAK视觉人工智能俱乐部

群号:280844897

加微信邀请入群
WeChat

微信号:13951940532

关注微信公众号:OAK视觉人工智能开发
欢迎到淘宝选购
taobao
OAK中国官方淘宝店

还可以通过我们发布的视频和文章了解OAK