XIAO ESP32S3部署Edge Impulse模型

在上一篇文章中我们介绍了如何使用edge impulse训练一个图片分类模型并导出arduino库文件。在这篇文章中我们将介绍如何在esp32s3中部署这个训练好的图片分类模型。

添加进Arduino库

有两种方法将下载的文件添加进Arduino库。

  1. 在Arduino IDE程序中,转到项目选项卡并在导入库中选择选项添加.zip库,之后选择Edge Impulse下载的.zip文件即可添加成功。
    在这里插入图片描述
  2. 直接将下载的文件解压到Arduino库文件夹下。

导入成功后Arduino库文件夹下会多出来一个Edge Impulse导出的文件夹。
在这里插入图片描述

替换 ESP NN

在使用下载的库之前,需要启用ESP NN加速器。下载链接我放在了公众号“通信电子坊”中,在后台回复“ESP-NN”即可获取。下载并解压后将其替换为Edge Impulse导出库文件夹中“src/edge-impulse-sdk/porting/espressif”文件夹下的ESP-NN文件夹。

修改例程

之后我们在Edge Impulse导出库文件夹中的“examples\esp32\esp32_camera”目录下找到“esp32_camera.ino”示例文件。在这个文件的基础上我们进行修改。

打开PSRAM

由于我们采集到的图片比较占内存,是要存储到PSRAM中的,因此需要在Arduino中打开PSRAM选项。
在这里插入图片描述

修改管脚定义

在Edge impulse提供的示例代码中有两种开发板的摄像头管脚定义,分别是“CAMERA_MODEL_ESP_EYE ”和“CAMERA_MODEL_AI_THINKER”。具体如下:

#define CAMERA_MODEL_ESP_EYE // Has PSRAM
//#define CAMERA_MODEL_AI_THINKER // Has PSRAM

#if defined(CAMERA_MODEL_ESP_EYE)
#define PWDN_GPIO_NUM    -1
#define RESET_GPIO_NUM   -1
#define XCLK_GPIO_NUM    4
#define SIOD_GPIO_NUM    18
#define SIOC_GPIO_NUM    23

#define Y9_GPIO_NUM      36
#define Y8_GPIO_NUM      37
#define Y7_GPIO_NUM      38
#define Y6_GPIO_NUM      39
#define Y5_GPIO_NUM      35
#define Y4_GPIO_NUM      14
#define Y3_GPIO_NUM      13
#define Y2_GPIO_NUM      34
#define VSYNC_GPIO_NUM   5
#define HREF_GPIO_NUM    27
#define PCLK_GPIO_NUM    25

#elif defined(CAMERA_MODEL_AI_THINKER)
#define PWDN_GPIO_NUM     32
#define RESET_GPIO_NUM    -1
#define XCLK_GPIO_NUM      0
#define SIOD_GPIO_NUM     26
#define SIOC_GPIO_NUM     27

#define Y9_GPIO_NUM       35
#define Y8_GPIO_NUM       34
#define Y7_GPIO_NUM       39
#define Y6_GPIO_NUM       36
#define Y5_GPIO_NUM       21
#define Y4_GPIO_NUM       19
#define Y3_GPIO_NUM       18
#define Y2_GPIO_NUM        5
#define VSYNC_GPIO_NUM    25
#define HREF_GPIO_NUM     23
#define PCLK_GPIO_NUM     22

#else
#error "Camera model not selected"
#endif

如果你是用的是“CAMERA_MODEL_ESP_EYE ”或“CAMERA_MODEL_AI_THINKER”开发板,那么只需要修改开头的宏定义即可

#define CAMERA_MODEL_ESP_EYE // Has PSRAM
//#define CAMERA_MODEL_AI_THINKER // Has PSRAM

由于我们这里使用的是XIAO ESP32S3,因此我们需要查看其原理图找到摄像头对应的管脚进行修改。如果使用的是其它开发板,步骤也一样。

我们首先将上面的管脚定义都删除,之后把自己的开发板的管脚定义添加进去

#define PWDN_GPIO_NUM     -1
#define RESET_GPIO_NUM    -1
#define XCLK_GPIO_NUM     10
#define SIOD_GPIO_NUM     40
#define SIOC_GPIO_NUM     39

#define Y9_GPIO_NUM       48
#define Y8_GPIO_NUM       11
#define Y7_GPIO_NUM       12
#define Y6_GPIO_NUM       14
#define Y5_GPIO_NUM       16
#define Y4_GPIO_NUM       18
#define Y3_GPIO_NUM       17
#define Y2_GPIO_NUM       15
#define VSYNC_GPIO_NUM    38
#define HREF_GPIO_NUM     47
#define PCLK_GPIO_NUM     13

之后我们编译代码并将其下载到自己的开发板上即可看到效果了。

遇到的问题

在下载完程序后,我还遇到了报错“摄像头初始化失败,错误码0xffffffff”的问题。这个可能是由于摄像头与开发板的连接松动或者是管脚定义错误导致的,只需要重新拔插一下摄像头及其模块或者仔细检查引脚对应情况并修改即可解决。

  • 28
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

zxfeng~

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值