ESP32-CAM 简介
ESP32-CAM 是小尺寸的摄像头模组,该模块可以作为最小系统独立工作,尺寸仅为 2740.54.5mm。可广泛应用于各种物联网场合,适用于家庭智能设备、工业无线控制、无线监控、QR 无线识别、无线定位系统信号以及其他物联网应用,是物联网应用的理想解决方案。
![ESP32-CAM 模组外观]
产品特性:
- 采用低功耗双核 32 位 CPU,可作应用处理器
- 主频高达 240MHz,运算能力高达 600 DMIPS
- 内置 520 KB SRAM,外置 8MB PSRAM
- 支持 UART/SPI/I2C/PWM/ADC/DAC 等接口
- 支持 OV2640 和 OV7670 摄像头,内置闪光灯
- 支持图片 WiFi 上传
- 支持 TF 卡
- 支持多种休眠模式
- 内嵌 Lwip 和 FreeRTOS
- 支持 STA/AP/STA+AP 工作模式
- 支持 Smart Config/AirKiss 一键配网
- 支持二次开发
ESP32-CAM 的接口引脚图如下所示:
![ESP32-CAM 接口引脚图]
Arduino IDE 环境配置
安装 Arduino IDE
下载官方网址:https://www.arduino.cc/en/software 下载符合自己操作系统版本的 IDE 并安装。
Arduino IDE 获取 ESP32 开发环境
由于 Arduino IDE 中本身没有 ESP32 的开发版,需要手动进行安装,安装方式如下:
在 Arduino IDE 中,找到 工具 > 开发板 > 开发板管理,搜索 ESP32 或者直接选择 ESP32 Wrover Module。
![Arduino 开发板管理界面]
打开 Arduino IDE,找到 文件 > 首选项,将 ESP32 的配置链接填入附加开发板管理网址中。
# 配置链接 https://dl.espressif.com/dl/package_esp32_index.json
![Arduino 首选项设置]
内网视频实时查看
选择示例代码
选择 文件 > 示例 > ESP32 > Camera > CameraWebServer,进入示例代码界面。
![CameraWebServer 示例路径]
修改示例代码中的相关参数
- 修改示例代码中的 WiFi 和密码的名称。
- 修改示例代码中的摄像头类型为 CAMERA_MODEL_AI_THINKER。
![代码修改示例]
运行结果
上传成功后,按一下 ESP32-CAM 开发板上的 RST 按键,重新启动开发板。 选择 工具 > 串口监视器,查看串口中输出的 IP,并用浏览器打开 IP 即可实时查看视频画面。
![串口输出 IP]
![浏览器查看视频]
代码
#include "esp_camera.h"
#include <WiFi.h>
// WARNING!!! PSRAM IC required for UXGA resolution and high JPEG quality
* ssid = ;
* password = ;
;
{
Serial.();
Serial.();
Serial.();
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_pwdn = PWDN_GPIO_NUM;
config.pin_reset = RESET_GPIO_NUM;
config.xclk_freq_hz = ;
config.pixel_format = PIXFORMAT_JPEG;
(()) {
config.frame_size = FRAMESIZE_UXGA;
config.jpeg_quality = ;
config.fb_count = ;
} {
config.frame_size = FRAMESIZE_SVGA;
config.jpeg_quality = ;
config.fb_count = ;
}
(, INPUT_PULLUP);
(, INPUT_PULLUP);
err = (&config);
(err != ESP_OK) {
Serial.(, err);
;
}
* s = ();
(s->id.PID == OV3660_PID) {
s->(s, );
s->(s, );
s->(s, );
}
s->(s, FRAMESIZE_QVGA);
s->(s, );
s->(s, );
WiFi.(ssid, password);
(WiFi.() != WL_CONNECTED) {
();
Serial.();
}
Serial.();
Serial.();
();
Serial.();
Serial.(WiFi.());
Serial.();
}
{
();
}


