

The ESP32-CAM, manufactured by Aman Yadav, is a low-cost, low-power system on a chip (SoC) that integrates Wi-Fi and Bluetooth capabilities. It features a built-in camera module, making it ideal for image and video capture. This versatile module is widely used in IoT projects and applications requiring remote monitoring, such as home automation, surveillance systems, and smart agriculture.








The ESP32-CAM is a powerful module with the following key specifications:
| Parameter | Value |
|---|---|
| Microcontroller | ESP32-D0WDQ6 SoC |
| Wireless Connectivity | Wi-Fi 802.11 b/g/n, Bluetooth 4.2 (BLE and Classic) |
| Camera Module | OV2640 (2MP resolution) |
| Flash Memory | 4 MB (PSRAM) |
| Storage | MicroSD card slot (up to 4 GB) |
| Operating Voltage | 3.3V |
| Power Consumption | Deep sleep: ~6mA, Active: ~160mA |
| GPIO Pins | 9 GPIO pins (configurable for various functions) |
| Interfaces | UART, SPI, I2C, PWM, ADC, DAC |
| Dimensions | 27mm x 40.5mm |
The ESP32-CAM has a total of 16 pins. Below is the pinout and description:
| Pin Name | Type | Description |
|---|---|---|
| 3.3V | Power | Power input (3.3V DC) |
| GND | Ground | Ground connection |
| GPIO0 | I/O | General-purpose I/O pin; used for boot mode selection |
| GPIO1 (U0TXD) | UART TX | UART transmit pin |
| GPIO3 (U0RXD) | UART RX | UART receive pin |
| GPIO4 | I/O | General-purpose I/O pin |
| GPIO12 | I/O | General-purpose I/O pin |
| GPIO13 | I/O | General-purpose I/O pin |
| GPIO14 | I/O | General-purpose I/O pin |
| GPIO15 | I/O | General-purpose I/O pin |
| GPIO16 | I/O | General-purpose I/O pin |
| GPIO33 | I/O | General-purpose I/O pin |
| RESET | Input | Reset pin; active low |
| SD_CMD | SD Interface | Command pin for MicroSD card |
| SD_CLK | SD Interface | Clock pin for MicroSD card |
| SD_DATA0 | SD Interface | Data pin for MicroSD card |
The ESP32-CAM is a versatile module that can be used in a variety of projects. Below are the steps to get started:
#include <WiFi.h>
#include <esp_camera.h>
// Replace with your network 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 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
void startCameraServer();
void setup() {
Serial.begin(115200);
WiFi.begin(ssid, password);
// Wait for Wi-Fi connection
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.println("\nWiFi connected");
// Initialize the 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;
if (psramFound()) {
config.frame_size = FRAMESIZE_UXGA;
config.jpeg_quality = 10;
config.fb_count = 2;
} else {
config.frame_size = FRAMESIZE_SVGA;
config.jpeg_quality = 12;
config.fb_count = 1;
}
// Initialize the camera
esp_err_t err = esp_camera_init(&config);
if (err != ESP_OK) {
Serial.printf("Camera init failed with error 0x%x", err);
return;
}
// Start the camera server
startCameraServer();
Serial.println("Camera ready! Use the IP address to connect.");
Serial.println(WiFi.localIP());
}
void loop() {
delay(10000);
}
Camera Initialization Failed
Wi-Fi Connection Fails
Module Overheating
Serial Communication Errors
Q: Can the ESP32-CAM be powered via USB?
A: No, the ESP32-CAM does not have a USB port. Use a 3.3V power source or a USB-to-Serial adapter.
Q: What is the maximum resolution of the camera?
A: The OV2640 camera supports a maximum resolution of 1600x1200 (UXGA).
Q: Can I use the ESP32-CAM for face recognition?
A: Yes