The ESP32 Cam is a low-cost development board manufactured by Arduino (Part ID: UNO) that features a built-in camera and Wi-Fi capabilities. It is based on the ESP32 chip, which is known for its powerful processing capabilities and integrated wireless communication. The ESP32 Cam is ideal for IoT applications, such as video streaming, image capture, and remote monitoring. Its compact size and versatile features make it a popular choice for developers and hobbyists alike.
The ESP32 Cam is equipped with a range of features that make it suitable for various applications. Below are its key technical specifications:
Feature | Specification |
---|---|
Microcontroller | ESP32-S chip |
Camera | OV2640 (2MP) |
Wi-Fi | 802.11 b/g/n |
Bluetooth | BLE and Bluetooth 4.2 |
Flash Memory | 4MB |
SRAM | 520KB |
Operating Voltage | 3.3V |
Power Supply Range | 5V (via external power or USB) |
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 |
3.3V | 2 | 3.3V Power Supply |
5V | 3 | 5V Power Supply |
GPIO0 | 4 | General Purpose I/O (Boot Mode Select) |
GPIO1 | 5 | UART TX (Serial Communication) |
GPIO3 | 6 | UART RX (Serial Communication) |
GPIO4 | 7 | General Purpose I/O |
GPIO12 | 8 | General Purpose I/O |
GPIO13 | 9 | General Purpose I/O |
GPIO14 | 10 | General Purpose I/O |
GPIO15 | 11 | General Purpose I/O |
GPIO16 | 12 | General Purpose I/O |
GPIO33 | 13 | General Purpose I/O |
GPIO34 | 14 | General Purpose I/O |
RESET | 15 | Reset Pin |
GND | 16 | Ground |
The ESP32 Cam can be used in a variety of projects, but it requires careful setup and configuration. Below are the steps to get started:
https://dl.espressif.com/dl/package_esp32_index.json
#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 (esp_camera_init(&config) != ESP_OK) {
Serial.println("Camera init failed");
return;
}
startCameraServer();
Serial.println("Camera ready! Use the IP address to connect.");
}
void loop() {
// Main loop does nothing; camera server handles requests
}
ESP32 Cam Not Booting:
Camera Initialization Failed:
Wi-Fi Connection Issues:
By following this documentation, you can successfully set up and use the ESP32 Cam for your IoT and video streaming projects.