

The ESP32-CAM, manufactured by Arduino (Part ID: ESP32-CAM), is a low-cost development board that combines the powerful ESP32 microcontroller with integrated Wi-Fi and Bluetooth capabilities. It also features a built-in camera module, making it an excellent choice for IoT applications, video streaming, image processing, and smart surveillance systems. Its compact size and versatile functionality make it a popular choice for developers and hobbyists alike.








| Parameter | Specification |
|---|---|
| Microcontroller | ESP32-D0WDQ6 |
| Wireless Connectivity | Wi-Fi 802.11 b/g/n, Bluetooth 4.2 |
| Camera Module | OV2640 (2MP) |
| Flash Memory | 4 MB SPI Flash |
| RAM | 520 KB SRAM + 4 MB PSRAM |
| Operating Voltage | 3.3V |
| Input Voltage Range | 5V (via micro-USB or external source) |
| GPIO Pins | 9 GPIO pins available |
| Interfaces | UART, SPI, I2C, PWM, ADC, DAC |
| Dimensions | 27mm x 40.5mm |
| Pin Name | Pin Number | Description |
|---|---|---|
| GND | 1 | Ground |
| 3.3V | 2 | 3.3V Power Output |
| IO0 | 3 | GPIO0, used for boot mode selection |
| IO1 | 4 | GPIO1, general-purpose I/O |
| IO2 | 5 | GPIO2, general-purpose I/O |
| IO3 | 6 | GPIO3, general-purpose I/O |
| IO4 | 7 | GPIO4, general-purpose I/O |
| IO5 | 8 | GPIO5, general-purpose I/O |
| TXD | 9 | UART Transmit |
| RXD | 10 | UART Receive |
| RESET | 11 | Reset Pin |
Powering the Board:
Programming the Board:
Boot Mode Selection:
Connecting the Camera:
Wi-Fi and Bluetooth Setup:
Below is an example of how to set up the ESP32-CAM for basic video streaming using the Arduino IDE:
#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("");
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 camera
if (esp_camera_init(&config) != ESP_OK) {
Serial.println("Camera init failed");
return;
}
// Start camera server
startCameraServer();
Serial.println("Camera ready! Stream at: http://");
Serial.println(WiFi.localIP());
}
void loop() {
// Main loop does nothing; camera server handles requests
}
Issue: The ESP32-CAM does not power on.
Solution: Verify the power supply voltage and connections. Ensure the FTDI programmer is set to 5V mode.
Issue: Unable to upload code to the ESP32-CAM.
Solution: Ensure GPIO0 is connected to GND during code upload. Check the FTDI connections and COM port settings in the Arduino IDE.
Issue: Camera initialization failed.
Solution: Verify the camera ribbon cable is securely connected. Ensure the camera configuration in the code matches the hardware.
Issue: Video stream is slow or laggy.
Solution: Check the Wi-Fi signal strength and reduce the video resolution in the code if necessary.
Can I use the ESP32-CAM without a camera?
Yes, the ESP32-CAM can function as a standard ESP32 development board without the camera module.
What is the maximum resolution supported by the camera?
The OV2640 camera module supports a maximum resolution of 1600x1200 pixels (UXGA).
Can the ESP32-CAM be powered by a battery?
Yes, the ESP32-CAM can be powered by a 3.7V LiPo battery with a suitable voltage regulator.
Is the ESP32-CAM compatible with the Arduino IDE?
Yes, the ESP32-CAM can be programmed using the Arduino IDE with the appropriate ESP32 board package installed.