

The ESP32CAM is a low-cost development board that features an ESP32 microcontroller with integrated Wi-Fi and Bluetooth capabilities, along with a camera module. This compact and versatile board is widely used in IoT projects, enabling image capture, video streaming, and wireless communication. Its small form factor and powerful features make it ideal for applications such as surveillance systems, remote monitoring, smart home devices, and AI-based image processing.
Common applications of the ESP32CAM include:








The ESP32CAM combines the ESP32 microcontroller with a camera module and other essential components. Below are its key technical details:
The ESP32CAM has a total of 16 pins. Below is the pinout and description:
| Pin | Name | Description |
|---|---|---|
| 1 | GND | Ground connection |
| 2 | 5V | Power input (5V) |
| 3 | 3.3V | Power output (3.3V) |
| 4 | GPIO0 | General-purpose I/O pin; used for boot mode selection |
| 5 | GPIO1 (U0TXD) | UART0 TX pin; used for serial communication |
| 6 | GPIO3 (U0RXD) | UART0 RX pin; used for serial communication |
| 7 | GPIO2 | General-purpose I/O pin; connected to the onboard LED |
| 8 | GPIO4 | General-purpose I/O pin |
| 9 | GPIO12 | General-purpose I/O pin; used for SD card data |
| 10 | GPIO13 | General-purpose I/O pin; used for SD card clock |
| 11 | GPIO14 | General-purpose I/O pin; used for SD card command |
| 12 | GPIO15 | General-purpose I/O pin |
| 13 | GPIO16 | General-purpose I/O pin |
| 14 | GPIO17 | General-purpose I/O pin |
| 15 | RESET | Reset pin; used to restart the board |
| 16 | GND | Ground connection |
The ESP32CAM is a versatile board that can be used in a variety of projects. Below are the steps to get started and important considerations:
Below is an example Arduino sketch to set up the ESP32CAM for video streaming:
#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 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("Wi-Fi 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 (!esp_camera_init(&config)) {
Serial.println("Camera initialized successfully");
} else {
Serial.println("Camera initialization failed");
return;
}
startCameraServer();
Serial.println("Camera server started");
}
void loop() {
// Main loop does nothing; camera server handles requests
}
Camera Initialization Failed:
Wi-Fi Connection Issues:
Board Not Detected by FTDI Programmer:
This concludes the ESP32CAM documentation. Happy building!