赞
踩
QVGA(320x240)
OV2640
、OV3660
、OV5640
v3.3.1
和 v4.0.0
git clone --recursive https://github.com/espressif/esp-who.git
从 github
拉取代码可能很慢,而且经常会失败。
如果子模块拉取失败,请参考:【ESP32】加快esp-idf下载速度最新方法记录
参考:ESP32学习笔记(2)——Linux下ESP32开发环境搭建
# 编辑环境变量
vim ~/.bashrc
# 加入路径
export IDF_PATH=~/ESP32/esp-who/esp-idf
export SOLUTION_PATH=~/ESP32/esp-who # 配置这个环境变量后可以在任意目录编译项目
# 环境变量生效
source ~/.bashrc
注:建议直接使用 ESP-WHO
里面指向的分支,使用其他分支可能会有冲突。
如果已经有 ESP-IDF ,需要切换到 v3.3.1
或者 v4.0.0
版本:
切换分支:
git checkout release/v4.0
cd ~/ESP32/tools/esp-gitee-tools
./submodule-update.sh ~/ESP32/esp-idf
或者再另建一个文件夹放 v4.0.0 的版本:
mkdir ~/ESP32&&mkdir ~/ESP32/tools&&cd ~/ESP32/tools
git clone https://gitee.com/EspressifSystems/esp-gitee-tools.git
cd ..
git clone -b release/v4.0 https://gitee.com/EspressifSystems/esp-idf.git esp-idf_v4.0
cd ~/ESP32/tools/esp-gitee-tools
./submodule-update.sh ~/ESP32/esp-idf_v4.0
vim ~/.bashrc
export IDF_PATH=~/ESP32/esp-idf_v4.0
source ~/.bashrc
使用 esp-who/examples/single_chip/camera_web_server
示例:
make menuconfig
Camera Web Server --->
WiFi Settings ---> # WIFI相关配置
LED Illuminator ---> # 补光灯设置
[ ] LED Illuminator Enabled
Camera Pins ---> # 摄像头引脚配置
Select Camera Pinout (ESP32-CAM by AI-Thinker) ---> # 使用的 ESP32-CAM 开发板
[*] ESP-WHO Face Detection # 人脸检测开启
[*] ESP-WHO Face Recognition # 人脸识别开启
WIFI相关设置:
WiFi Settings --->
() Camera Host Name
() WiFi STA SSID
() WiFi STA Password
(ESP32-Camera) WiFi AP SSID
() WiFi AP Password
(1) Maximal STA connections
() WiFi AP Channel
(192.168.4.1) WiFi AP IP Address
(5) Maximum retry
连接名为 ESP32-Camera
的WIFI,然后浏览器输入 192.168.4.1
,最好用谷歌浏览器。
人脸检测和人脸识别会占用大量内存,不能使用大分辨率,把分辨率设置为 QVGA(320x240)
。
打开 Face Detection
即可实现人脸检测,打开 Face Recognition
实现人脸识别,点击 Enroll Face
采集人脸。
H-Mirror
V-Flip
调节图像方向。
LED Intensity
调节补光灯的亮度。
总体来说还算流畅。但是打开人脸检测和人脸识别后会变得很卡。
另外使用过程中会大量发热,建议加个散热片~~~
esp-who/examples/single_chip/face_recognition_wechat
示例:
这个示例没有引脚配置,默认使用的 ESP_EYE
开发板的引脚配置。
在app_camera.h
修改引脚如下(ESP32-CAM
):
// CONFIG_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
修改 app_camera.c
的 app_camera_init
如下:
void app_camera_init()
{
#if CONFIG_CAMERA_MODEL_ESP_EYE
/* IO13, IO14 is designed for JTAG by default,
* to use it as generalized input,
* firstly declair it as pullup input */
gpio_config_t conf;
conf.mode = GPIO_MODE_INPUT;
conf.pull_up_en = GPIO_PULLUP_ENABLE;
conf.pull_down_en = GPIO_PULLDOWN_DISABLE;
conf.intr_type = GPIO_INTR_DISABLE;
conf.pin_bit_mask = 1LL << 13;
gpio_config(&conf);
conf.pin_bit_mask = 1LL << 14;
gpio_config(&conf);
#endif
camera_config_t config;
config.ledc_channel = LEDC_CHANNEL_0;
config.ledc_timer = LEDC_TIMER_0;
config.pin_d0 = Y2_GPIO_NUM;
config.pin_d1 = Y3_GPIO_NUM;
config.pin_d2 = Y4_GPIO_NUM;
config.pin_d3 = Y5_GPIO_NUM;
config.pin_d4 = Y6_GPIO_NUM;
config.pin_d5 = Y7_GPIO_NUM;
config.pin_d6 = Y8_GPIO_NUM;
config.pin_d7 = Y9_GPIO_NUM;
config.pin_xclk = XCLK_GPIO_NUM;
config.pin_pclk = PCLK_GPIO_NUM;
config.pin_vsync = VSYNC_GPIO_NUM;
config.pin_href = HREF_GPIO_NUM;
config.pin_sscb_sda = SIOD_GPIO_NUM;
config.pin_sscb_scl = SIOC_GPIO_NUM;
config.pin_reset = RESET_GPIO_NUM;
config.pin_pwdn = PWDN_GPIO_NUM;
config.xclk_freq_hz = XCLK_FREQ;
config.pixel_format = CAMERA_PIXEL_FORMAT;
config.frame_size = CAMERA_FRAME_SIZE;
config.jpeg_quality = 10;
config.fb_count = 1; // 2
// camera init
esp_err_t err = esp_camera_init(&config);
if (err != ESP_OK) {
ESP_LOGE(TAG, "Camera init failed with error 0x%x", err);
return;
}
sensor_t *s = esp_camera_sensor_get();
s->set_vflip(s, 1); //flip it back
//initial sensors are flipped vertically and colors are a bit saturated
if (s->id.PID == OV3660_PID)
{
s->set_brightness(s, 1); //up the blightness just a bit
s->set_saturation(s, -2); //lower the saturation
}
}
乐鑫科技|ESP EYE 微信小程序上线!
点 +
会自动配网:
WHO?
问题1:
E (1735) camera: Detected camera not supported.
E (1735) camera: Camera probe failed with error 0x20004
E (1735) app_camera: Camera init failed with error 0x20004
解决:
没有配置引脚导致的,按照上面的配置好引脚就没问题了。
问题2:
W (12405) httpd_parse: parse_block: request URI/header too long
W (12405) httpd_txrx: httpd_resp_send_err: 431 Request Header Fields Too Large - Header fields are too long for server to interpret
解决:
如下 配置最大HTTP请求头长度修改为 1024
就可以了。
Component config --->
HTTP Server --->
(1024) Max HTTP Request Header Length // 默认是 512
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。