概述
在原来基于AOS 3.3 上面 老板来了哪个例子里面,用的摄像头是ESP-EYE摄像头。但是这个摄像头价格比较高,某宝上面基本上都是要¥150+以上。其实在老板来了这个例子里面,就是用摄像头取了一张照片。对摄像头的要求是不高的。用ESP32-CAM完全可以胜任。
价格是不是差的有点大^ _ ^
ESP32-CAM使用
ESP32-CAM代码和ESP-EYE完全兼容,只要配上一个配套的USB转串口板(搭配的时候你可以选择OV2640摄像头,也可以选择其他广角的摄像头),接上电脑就可以直接编译了。
特别要说明的时候 在 camera_web_server 工程目录下面的sdkconfig文件要改一个编译参数
CONFIG_CAMERA_MODEL_AI_THINKER=y
如果用ESP-EYE板子的话CONFIG_CAMERA_ESP_EYE=y 否则 启动的camera_web_server启动的时候会报错的
编译方法,烧录方法和用ESP-EYE的时候都一样
idf.py build
idf.py flash -p /dev/tty.usb-serial-1410
camera_web_server 参数调整
由于camera_web_server 摄像头的显示分辩率默认是HD格式,而在老板来了这个例子里面需要将显示格式设置为QVGA。在原来的文章里面介绍的方法是有BUG的,在某些时候是会造成显示不全的。我经过阅读camera_web_server的源代码发现可以用REST接口的方式对参数显示格式进行修改。
这样发调用将可以进行参数修改了。
http://172.20.10.13/control?var=framesize&val=5
这样就是把framesize设置为5(QVGA)了,以此类推还可以设置摄像头的左右,上下的翻转等其他参数。
在老板来了代码里面为专门加了一段代码是用来进行初始化格式的
static void init_http_camera()
{
/* @brief http request buffer */
#define REQ_BUF_SIZE 2048
static char req_buf[REQ_BUF_SIZE];
/* @brief http response buffer */
#define RSP_BUF_SIZE 2048
static char rsp_buf[RSP_BUF_SIZE];
httpclient_t client = {0};
httpclient_data_t client_data = {0};
char * req_url = "http://172.20.10.13/control?var=framesize&val=5";
int ret;
char * customer_header = "Accept: */*\r\n";
memset(req_buf, 0, sizeof(req_buf));
client_data.header_buf = req_buf;
client_data.header_buf_len = sizeof(req_buf);
memset(rsp_buf, 0, sizeof(rsp_buf));
client_data.response_buf = rsp_buf;
client_data.response_buf_len = sizeof(rsp_buf);
printf("init_http_camera request %s\r\n", req_url);
httpclient_set_custom_header(&client, customer_header);
ret = httpclient_get(&client, req_url, &client_data);
if( ret >= 0 ) {
printf("Data received: %s \r\n", client_data.response_buf);
printf("init_http_camera success!\r\n");
}
return;
}