【DigiKey好物畅享】Espressif Systems ESP32-P4-EYE 玩转AI相机应用

【DigiKey好物畅享】Espressif Systems ESP32-P4-EYE 玩转AI相机应用

一.前言

ESP32-P4-EYE 是一款基于 ESP32-P4 芯片的视觉开发板,主要面向摄像头应用。ESP32-P4 搭载双核 RISC-V 处理器,支持最大 32 MB PSRAM。另外也支持AI应用,AI+摄像头,自然想到可以作为AI相机的应用,在儿童AI相机玩具市场,个人觉得是不错的应用方向。

本文分享ESP32-P4-EYE作为一个AI 相机的Dem体验。

二.下载固件

可以从以下地址下载固件

https://dl.espressif.com/AE/esp-dev-kits/p4_eye_factory_demo_100.bin

从以下地址下载烧录工具

https://dl.espressif.com/public/flash_download_tool.zip

打开烧录工具

flash_download_tool_3.9.9_R2

选择芯片型号ESP32-P4和工作模式develop,接口为uart,点击OK

按照如下选择待烧录bin文件,地址为0,配置串口,点击START

三.编译固件

安装esp-dl组件

点击compenents manager

在搜索框,输入dl,点击搜索

搜索出来espressif/esp-dl, 点击进入对应的组件页面

点击install进行安装。如果安装不上可以参考后面第5节的介绍。

工程中添加组件到工程,可以看到有以下对应的语句

idf.py add-dependency "espressif/esp-dl^3.2.2"

idf.py add-dependency "espressif/esp-dl^3.1.3"

准备工程

从以下地址下载代码

git clone --recursive https://github.com/espressif/esp-dev-kits.git

点击import project导入工程

选择对应的工程,我这里目录是

D:\esp-dev-kits-master\esp-dev-kits-master\examples\esp32-p4-eye\examples\factory_demo

弹出下拉框,点击choose a container directory

然后点击选择目标文件夹,指定目的位置

输入工程名camera然后回车

代码逻辑

代码依赖以下组件

Coco_detect

Esp_painter

Human_face_detect

Pedestrian_detect

Ui部分代码包括images和screens,components。Fonts等

AI部分代码包括app_aidetect等应用

Video部分代码包括photo,stream等

App部分包括album等

主程序入口位于main.c

app_main

先进行相关的初始化



void app_main(void)

{

    // Initialize NVS

    ESP_LOGI(TAG, "Initialize NVS");

    esp_err_t ret = nvs_flash_init();

    if (ret == ESP_ERR_NVS_NO_FREE_PAGES || ret == ESP_ERR_NVS_NEW_VERSION_FOUND) {

        ESP_ERROR_CHECK(nvs_flash_erase());

        ret = nvs_flash_init();

    }

    ESP_ERROR_CHECK(ret);

 

    // Initialize the flashlight

    ESP_LOGI(TAG, "Initialize the flashlight");

    ESP_ERROR_CHECK(bsp_flashlight_init());

 

    // Initialize the I2C first (needed for QMA6100)

    ESP_LOGI(TAG, "Initialize the I2C");

    i2c_master_bus_handle_t i2c_handle;

    ESP_ERROR_CHECK(bsp_i2c_init());

    bsp_get_i2c_bus_handle(&i2c_handle);

 

    // Initialize the AI detect

    ESP_LOGI(TAG, "Initialize the AI detect");

    ESP_ERROR_CHECK(app_ai_detect_init());

 

    // Initialize the display

    ESP_LOGI(TAG, "Initialize the display");

    bsp_display_start();

 

    bsp_display_lock(0);

    ui_extra_init();

    bsp_display_unlock();

 

    // Initialize the QMA6100 IMU sensor with integrated display auto-rotation

    ESP_LOGI(TAG, "Initialize the QMA6100 IMU sensor with display auto-rotation");

    ret = app_qma6100_init(i2c_handle);

    if (ret != ESP_OK) {

        ESP_LOGE(TAG, "Failed to initialize QMA6100: %s", esp_err_to_name(ret));

        return;

    }

 

    // Initialize the storage

    ESP_LOGI(TAG, "Initialize the storage");

    ESP_ERROR_CHECK(app_storage_init());

 

    // Turn on the display backlight

    bsp_display_backlight_on();

 

    // Initialize the application control module

    ESP_LOGI(TAG, "Initialize the application control module");

    ESP_ERROR_CHECK(app_control_init());

 

    // Initialize the video streaming application

    ESP_LOGI(TAG, "Initialize the video streaming application");

    ESP_ERROR_CHECK(app_video_stream_init(i2c_handle));

   

    ESP_LOGI(TAG, "Application initialization completed");

}

app_control_init中

注册相关按键操作,比如旋钮的左右旋转操作

    ESP_ERROR_CHECK(bsp_knob_register_cb(KNOB_LEFT, knob_left_cb, NULL));

    ESP_ERROR_CHECK(bsp_knob_register_cb(KNOB_RIGHT, knob_right_cb, NULL));

然后按钮之后进入对应的函数执行。

编译下载

File ->Open Folder…打开上述demo/camera文件夹

打开esp-idf终端

输入

idf.py menuconfig

可进行配置

点击编译下载监控一体图标

一步进行编译下载运行

四.相机体验

ESP32-P4-EYE可以完整的实现AI相机的功能,可以拍照,摄像,AI检测,我们可以先来体验一番。

相机功能

按菜单进入相机功能

旋转转盘可放大缩小,按下转盘拍照

间隔拍照

菜单进入间隔拍照功能

可设置间隔时间,按下转盘开始拍照,任意按键退出

摄像功能

菜单进入摄像功能

旋转转盘可放大缩小,按下转盘拍摄

AI检测

菜单键入AI检测功能

可设置为行人检测,人脸检测模式

测试看识别率还可以

ALBUM

菜单进入ALBUM功能

可识别目标,比如如下识别出笔记本

U盘功能

菜单进入U盘功能

可接电脑作为U盘,传输文件

设置功能

菜单进入设置功能,可进行相应的设置

五. 遇到问题与总结

组件不能在线安装问题

如前面提到的如果install组件不成功,可以以下手段手动安装

现在对应的组件install界面,直接下载压缩包,然后解压复制(以espressif__esp-dl-v3.2.3为例)到

C:\Users\qinyu\esp\v5.5\esp-idf\components下,目录要提升一层即删除esp-dl这一层,内容直接位于espressif__esp-dl-v3.2.3目录下

组件版本不匹配问题

如果安装组件版本不匹配,或者代码中要求的版本不匹配,可以手动进行版本依赖修改,比如对于espressif__esp-dl安装的是v3.2.3版本,但是代码中要求是==3.1.3,

则直接搜索版本例如==3.1.3

全部替换为自己安装的版本,例如^3.2.2

tinyusb等其他需要的组件也是类似。

六.总结

以上可以看出该ESP32-P4-EYE可以完整的实现AI相机的功能,可以拍照,摄像,AI检测,所以作为儿童AI玩具相机是一个不错的应用场景。得益于官方完备的库和Demo几乎无需过多的开发,直接就可以进行产品应用。作为学习,开发,产品开发等都是非常不错的选择。