Cirkit Designer Logo
Cirkit Designer
Your all-in-one circuit design IDE
Home / 
Component Documentation

How to Use ESP32-CAM: Examples, Pinouts, and Specs

Image of ESP32-CAM
Cirkit Designer LogoDesign with ESP32-CAM in Cirkit Designer

Introduction

The ESP32-CAM is a low-cost, low-power system on a chip (SoC) that integrates Wi-Fi and Bluetooth capabilities, along with a camera module for image and video capture. It is based on the ESP32 microcontroller and is widely used in IoT projects, smart home systems, and applications requiring remote monitoring or image processing. Its compact size and powerful features make it an excellent choice for developers looking to implement wireless video streaming, facial recognition, or surveillance systems.

Explore Projects Built with ESP32-CAM

Use Cirkit Designer to design, explore, and prototype these projects online. Some projects support real-time simulation. Click "Open Project" to start designing instantly!
ESP32 CAM Wi-Fi Controlled Camera with FTDI Programmer
Image of R: A project utilizing ESP32-CAM in a practical application
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.
Cirkit Designer LogoOpen Project in Cirkit Designer
ESP32 CAM Wi-Fi Controlled Camera with FTDI Programmer
Image of ESP32 CAM: A project utilizing ESP32-CAM in a practical application
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.
Cirkit Designer LogoOpen Project in Cirkit Designer
ESP32 CAM Wi-Fi Controlled Live Video Streamer with FTDI Programmer
Image of amen: A project utilizing ESP32-CAM in a practical application
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.
Cirkit Designer LogoOpen Project in Cirkit Designer
ESP32 CAM Wi-Fi Controlled Camera with FTDI Programmer
Image of EventCAM: A project utilizing ESP32-CAM in a practical application
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.
Cirkit Designer LogoOpen Project in Cirkit Designer

Explore Projects Built with ESP32-CAM

Use Cirkit Designer to design, explore, and prototype these projects online. Some projects support real-time simulation. Click "Open Project" to start designing instantly!
Image of R: A project utilizing ESP32-CAM in a practical application
ESP32 CAM Wi-Fi Controlled Camera with FTDI Programmer
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.
Cirkit Designer LogoOpen Project in Cirkit Designer
Image of ESP32 CAM: A project utilizing ESP32-CAM in a practical application
ESP32 CAM Wi-Fi Controlled Camera with FTDI Programmer
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.
Cirkit Designer LogoOpen Project in Cirkit Designer
Image of amen: A project utilizing ESP32-CAM in a practical application
ESP32 CAM Wi-Fi Controlled Live Video Streamer with FTDI Programmer
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.
Cirkit Designer LogoOpen Project in Cirkit Designer
Image of EventCAM: A project utilizing ESP32-CAM in a practical application
ESP32 CAM Wi-Fi Controlled Camera with FTDI Programmer
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.
Cirkit Designer LogoOpen Project in Cirkit Designer

Common Applications

  • Wireless video streaming and surveillance
  • Smart home automation with image recognition
  • IoT devices requiring visual data
  • Remote monitoring and control systems
  • DIY robotics and drones with camera functionality

Technical Specifications

Key Technical Details

Specification Value
Microcontroller ESP32 Dual-Core Processor
Wireless Connectivity Wi-Fi 802.11 b/g/n, Bluetooth 4.2
Camera Module OV2640 (2MP)
Flash Memory 4 MB (PSRAM optional)
Operating Voltage 3.3V
Input Voltage Range 5V (via external power supply or USB)
GPIO Pins 9 (configurable for various peripherals)
Image Resolution Up to 1600x1200 (UXGA)
Interfaces UART, SPI, I2C, PWM, ADC, DAC
Dimensions 27mm x 40.5mm

Pin Configuration and Descriptions

Pin Name Pin Number Description
GND 1 Ground
3.3V 2 3.3V Power Supply Output
5V 3 5V Power Supply Input
GPIO0 4 Boot Mode Selection (connect to GND for flash)
GPIO1 5 UART TX (Serial Communication)
GPIO3 6 UART RX (Serial Communication)
GPIO12 7 Configurable GPIO Pin
GPIO13 8 Configurable GPIO Pin
GPIO14 9 Configurable GPIO Pin
GPIO15 10 Configurable GPIO Pin
GPIO16 11 Configurable GPIO Pin
GPIO17 12 Configurable GPIO Pin
RESET 13 Reset Pin

Usage Instructions

How to Use the ESP32-CAM in a Circuit

  1. Power Supply: Connect the 5V pin to a stable 5V power source. Ensure the ground (GND) is connected to the circuit's ground.
  2. Programming: Use an FTDI programmer or USB-to-serial adapter to upload code. Connect the following:
    • FTDI TX to ESP32-CAM RX (GPIO3)
    • FTDI RX to ESP32-CAM TX (GPIO1)
    • GND to GND
    • 5V to 5V
    • GPIO0 to GND (only during programming)
  3. Camera Module: Ensure the OV2640 camera module is securely connected to the ESP32-CAM board.
  4. Boot Mode: To upload code, hold the RESET button while GPIO0 is connected to GND. Release RESET after initiating the upload.
  5. Wi-Fi Configuration: Configure the Wi-Fi credentials in your code to enable wireless communication.

Important Considerations

  • Power Requirements: The ESP32-CAM requires a stable 5V power supply. Insufficient power can cause instability or boot failures.
  • Heat Management: The ESP32-CAM can get warm during operation. Ensure proper ventilation or use a heatsink if necessary.
  • Antenna: For optimal Wi-Fi performance, ensure the onboard antenna is not obstructed.
  • GPIO Usage: Some GPIO pins are reserved for internal functions (e.g., GPIO0 for boot mode). Refer to the pin configuration table before use.

Example Code for Arduino UNO Integration

Below is an example of how to use the ESP32-CAM for basic 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 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);
  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");
  Serial.println("IP address: ");
  Serial.println(WiFi.localIP());

  // Camera initialization
  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 'http://' + IP + '/stream' to view.");
}

void loop() {
  // Nothing to do here
}

Troubleshooting and FAQs

Common Issues

  1. ESP32-CAM Not Booting:
    • Ensure the power supply provides a stable 5V.
    • Check that GPIO0 is not connected to GND during normal operation.
  2. Camera Initialization Failed:
    • Verify the camera module is securely connected.
    • Ensure the correct camera model is selected in the code.
  3. Wi-Fi Connection Issues:
    • Double-check the SSID and password in the code.
    • Ensure the Wi-Fi signal is strong and within range.

Solutions and Tips

  • Serial Monitor Debugging: Use the Serial Monitor to check for error messages during boot or operation.
  • Power Supply: Use a dedicated power source instead of relying on USB power for stable operation.
  • Firmware Updates: Ensure the ESP32-CAM is running the latest firmware for optimal performance.

By following this documentation, you can effectively integrate and troubleshoot the ESP32-CAM in your projects.