
This circuit consists of an ESP32 CAM module connected to an FTDI Programmer for power and serial communication. The ESP32 CAM is programmed to capture images and stream them over WiFi, acting as a web server to provide live video feed.
The ESP32-CAM is a low-cost development board manufactured by AI-Thinker (Part ID: ESP32-CAM-AI-THINKER) that combines the powerful ESP32 microcontroller with integrated Wi-Fi and Bluetooth capabilities, along with a camera module. This compact and versatile board is ideal for IoT projects requiring video streaming, image capture, and wireless communication.

This circuit consists of an ESP32 CAM module connected to an FTDI Programmer for power and serial communication. The ESP32 CAM is programmed to capture images and stream them over WiFi, acting as a web server to provide live video feed.

This circuit consists of an ESP32 CAM module connected to an FTDI Programmer for power and serial communication. The ESP32 CAM is programmed to capture images and stream them over WiFi, acting as a web server to provide a live video feed.

This circuit consists of an ESP32 CAM module connected to an FTDI Programmer for power and serial communication. The ESP32 CAM is programmed to capture images and stream them over WiFi, acting as a web server to provide a live video feed.

This circuit connects an ESP32 CAM module to an FTDI Programmer for power and serial communication. The ESP32 CAM is programmed to capture images and stream them over WiFi, acting as a web server to provide a live video feed.
| Parameter | Specification |
|---|---|
| Microcontroller | ESP32-D0WD |
| Wireless Connectivity | Wi-Fi 802.11 b/g/n, Bluetooth 4.2 (Classic and BLE) |
| Camera Module | OV2640 (2MP resolution) |
| Flash Memory | 4 MB SPI Flash |
| RAM | 520 KB SRAM + 4 MB PSRAM |
| Operating Voltage | 3.3V |
| Input Voltage Range | 5V (via external power supply or USB-to-TTL adapter) |
| GPIO Pins | 9 GPIO pins available for user applications |
| Interfaces | UART, SPI, I2C, PWM, ADC |
| Power Consumption | Deep Sleep: ~6mA, Active Mode: ~160mA |
| Dimensions | 27mm x 40.5mm |
The ESP32-CAM has a total of 16 pins. Below is the pinout and description:
| Pin Name | Pin Number | Description |
|---|---|---|
| GND | 1 | Ground connection |
| 3.3V | 2 | 3.3V power output |
| 5V | 3 | 5V power input |
| GPIO1 | 4 | UART TX (used for programming/debugging) |
| GPIO3 | 5 | UART RX (used for programming/debugging) |
| GPIO0 | 6 | Boot mode selection (connect to GND for flashing firmware) |
| GPIO2 | 7 | General-purpose I/O pin |
| GPIO4 | 8 | General-purpose I/O pin |
| GPIO12 | 9 | General-purpose I/O pin |
| GPIO13 | 10 | General-purpose I/O pin |
| GPIO14 | 11 | General-purpose I/O pin |
| GPIO15 | 12 | General-purpose I/O pin |
| GPIO16 | 13 | General-purpose I/O pin |
| GPIO33 | 14 | General-purpose I/O pin |
| RESET | 15 | Reset pin |
| GND | 16 | Ground connection |
Note: The ESP32-CAM does not have a built-in USB interface. A USB-to-TTL adapter is required for programming.
Powering the Board:
Programming the Board:
Connecting the Camera:
Using GPIO Pins:
Below is an example of how to use the ESP32-CAM for video streaming. This code sets up the ESP32-CAM as a web server to stream video.
#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("\nWi-Fi 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 initialization failed");
return;
}
// Start camera server
startCameraServer();
Serial.println("Camera ready! Stream at: http://" + WiFi.localIP().toString());
}
void loop() {
// Main loop does nothing; camera server handles requests
}
Camera Initialization Failed:
Wi-Fi Connection Issues:
Board Not Detected During Programming:
Overheating:
By following this documentation, you can effectively use the ESP32-CAM for your IoT and video streaming projects.