The ESP32 WROVER CAM FREENOVE is a powerful and versatile Wi-Fi and Bluetooth-enabled microcontroller module with an integrated camera. It is designed for IoT applications, image processing, and video streaming. This module combines the ESP32 microcontroller with a camera module, making it ideal for projects requiring image capture, facial recognition, or video surveillance.
The ESP32 WROVER CAM FREENOVE has a specific pinout for connecting peripherals. Below is the pin configuration:
Pin Name | Description |
---|---|
GND | Ground |
3V3 | 3.3V Power Supply |
GPIO0 | Boot mode selection (connect to GND for flashing) |
GPIO1 | UART TX (Serial communication) |
GPIO3 | UART RX (Serial communication) |
GPIO12 | Camera D6 |
GPIO13 | Camera D7 |
GPIO14 | Camera D3 |
GPIO15 | Camera D4 |
GPIO16 | Camera D5 |
GPIO17 | Camera D2 |
GPIO18 | Camera D1 |
GPIO19 | Camera D0 |
GPIO21 | Camera XCLK |
GPIO22 | I2C SCL |
GPIO23 | I2C SDA |
GPIO25 | Camera PCLK |
GPIO26 | Camera VSYNC |
GPIO27 | Camera HREF |
GPIO32 | LED Flash Control |
GPIO33 | Camera Power Enable |
Below is an example code to capture and stream video using the ESP32 WROVER CAM:
#include <WiFi.h>
#include <esp_camera.h>
// Replace with your Wi-Fi credentials
const char* ssid = "Your_SSID";
const char* password = "Your_PASSWORD";
// Camera configuration
#define PWDN_GPIO_NUM -1
#define RESET_GPIO_NUM -1
#define XCLK_GPIO_NUM 21
#define SIOD_GPIO_NUM 22
#define SIOC_GPIO_NUM 23
#define Y9_GPIO_NUM 19
#define Y8_GPIO_NUM 18
#define Y7_GPIO_NUM 5
#define Y6_GPIO_NUM 4
#define Y5_GPIO_NUM 15
#define Y4_GPIO_NUM 14
#define Y3_GPIO_NUM 13
#define Y2_GPIO_NUM 12
#define VSYNC_GPIO_NUM 25
#define HREF_GPIO_NUM 27
#define PCLK_GPIO_NUM 26
void startCameraServer();
void setup() {
Serial.begin(115200);
Serial.println();
// Connect to Wi-Fi
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.println("");
Serial.println("WiFi connected");
// Configure camera
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_pwdn = PWDN_GPIO_NUM;
config.pin_reset = RESET_GPIO_NUM;
config.xclk_freq_hz = 20000000;
config.pixel_format = PIXFORMAT_JPEG;
// Initialize the camera
if (esp_camera_init(&config) != ESP_OK) {
Serial.println("Camera init failed");
return;
}
// Start the camera server
startCameraServer();
Serial.println("Camera ready! Use the IP address to view the stream.");
}
void loop() {
// Main loop does nothing; camera server handles requests
}
Camera Initialization Failed:
Wi-Fi Connection Issues:
Overheating:
Flashing Errors:
Can I use a different camera module? No, the ESP32 WROVER CAM is designed specifically for the OV2640 camera.
What is the maximum resolution supported? The OV2640 camera supports up to 1600x1200 resolution.
Can I power the module with 5V? No, the module requires a 3.3V power supply. Use a voltage regulator if needed.