【花雕学编程】Arduino动手做(230)---ESP32-CAM 热点摄像头
2024-09-222025
AI 快速预览详细
本文介绍了ESP32-CAM热点摄像头模块,它是一款小型摄像头模块,配备ESP32-S芯片和OV2640摄像头。该模块支持Wi-Fi和蓝牙,内置microSD卡插槽,适用于图像拍摄和存储。文章详细介绍了ESP32-CAM的规格、功能及实际应用,帮助用户快速上手并实现图像拍摄与存储。
![]() ESP32-CAM 是一款非常小的摄像头模块,配备 ESP32-S 芯片。除了 OV2640 摄像头和几个用于连接外围设备的 GPIO 外,它还具有一个 microSD 卡插槽,可用于存储使用摄像头拍摄的图像或存储文件以提供给客户。包括乐鑫 ESP32-S Wifi + 蓝牙+BLE 芯片、2MP 摄像头模块 OV2640 和带有 CH340 UART 芯片的 USB 编程适配器。 ESP32-Cam 是一款运行在 ESP32-S 芯片上并使用 OV2640 摄像头的小型摄像头模块。ESP32_Cam 也可以 OV7670 摄像头,但 OV2640 更好(更高的分辨率和内置的 JPEG 编码,这消除了 ESP32-S 的处理任务)。 ESP-32 Cam 规格 ESP-32 系列 它支持 Wi-Fi (802.11b/g/n) 支持蓝牙 (4.2 带 BLE) 内置 LED 闪光灯 9 个 IO 端口 支持 UART、SPI、I2C 和 PWM 内置 micro SD 读卡器 输入电源:3.3V / 5V(据报道,5V 供电比 3.3V 更稳定) OV2640 摄像头 2 百万像素 阵列尺寸:UXGA (1600 x 1200) 镜头尺寸:1/4 英寸(6.35 毫米) 最大图像传输速率:15 帧/秒 ![]() |






实验二百三十:ESP32 CAM开发板 带OV2640摄像头模块 WIFI+蓝牙模块
项目实验之二十四:建立ESP32-CAM热点192.168.4.1 并初始化摄像头
实验开源代码
[code]/*
【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
实验二百三十:ESP32 CAM开发板 带OV2640摄像头模块 WIFI+蓝牙模块
项目实验之二十四:建立ESP32-CAM热点192.168.4.1 并初始化摄像头
*/
#include
#include
#include "esp_camera.h"
// 创建 WebServer 对象,监听 80 端口
WebServer server(80);
// 处理根 URL 请求的函数
void handleRoot() {
camera_fb_t * fb = NULL;
fb = esp_camera_fb_get();
if (!fb) {
Serial.println("Camera capture failed");
server.send(500, "text/plain", "Camera capture failed");
return;
}
// 使用三个参数的 send 函数
server.send(200, "image/jpeg", (const char *)fb->buf);
esp_camera_fb_return(fb);
}
// 摄像头引脚配置
camera_config_t config = {
.pin_pwdn = 32, // 电源引脚
.pin_reset = -1, // 复位引脚(未使用)
.pin_xclk = 0, // XCLK引脚
.pin_sscb_sda = 26, // SCCB SDA引脚
.pin_sscb_scl = 27, // SCCB SCL引脚
.pin_d7 = 35, // 数据引脚D7
.pin_d6 = 34, // 数据引脚D6
.pin_d5 = 39, // 数据引脚D5
.pin_d4 = 36, // 数据引脚D4
.pin_d3 = 21, // 数据引脚D3
.pin_d2 = 19, // 数据引脚D2
.pin_d1 = 18, // 数据引脚D1
.pin_d0 = 5, // 数据引脚D0
.pin_vsync = 25, // VSYNC引脚
.pin_href = 23, // HREF引脚
.pin_pclk = 22, // PCLK引脚
.xclk_freq_hz = 20000000, // XCLK频率(20MHz)
.ledc_timer = LEDC_TIMER_0, // LEDC定时器
.ledc_channel = LEDC_CHANNEL_0, // LEDC通道
.pixel_format = PIXFORMAT_JPEG, // 像素格式为JPEG
.frame_size = FRAMESIZE_UXGA, // 帧大小为UXGA
.jpeg_quality = 12, // JPEG质量
.fb_count = 1 // 帧缓冲区数量
};
void setup() {
Serial.begin(115200); // 初始化串口通信,波特率为115200
Serial.println(" ");
Serial.println("ESP32-CAM准备就绪!");
// 设置 PWDN 引脚
pinMode(config.pin_pwdn, OUTPUT);
digitalWrite(config.pin_pwdn, LOW);
delay(100);
digitalWrite(config.pin_pwdn, HIGH);
delay(100);
// 设置 Wi-Fi 模式为接入点
WiFi.mode(WIFI_AP);
// 配置 Wi-Fi 接入点的 SSID 和密码
WiFi.softAP("ESP32-CAM", "12345678");
Serial.println(" ");
Serial.println("ESP32-CAM 热点设置完成! ");
Serial.print("IP 地址:");
Serial.println(WiFi.softAPIP());
Serial.println(" ");
// 初始化摄像头
esp_err_t err = esp_camera_init(&config);
if (err != ESP_OK) {
Serial.printf("摄像头初始化失败,出现错误 0x%x", err); // 输出初始化失败的错误信息
} else {
// 摄像头初始化成功
Serial.println("摄像头初始化成功!");
Serial.println("ESP32-CAM 热点可以登录(暂无内容) ");
}
// 定义根 URL 处理程序
server.on("/", handleRoot);
// 启动服务器
server.begin();
}
void loop() {
// 处理任何收到的请求
server.handleClient();
}[/code]