
The ESP32-CAM board is a $7 device that combines an ESP32-S chip and a OV2640 camera. It allows you to set up a video streaming web server, build a surveillance camera to integrate with your home automation system, do face recognition and detection, and much more.
Besides the OV2640 camera, and several GPIOs to connect peripherals, the ESP32-CAM also features a microSD card slot that can be useful to store images taken with the camera or to store files to serve to clients.
Where to Buy
You can get the ESP32-CAM with OV2640 camera on different stores for approximately $7.




Note: to upload code to the ESP32-CAM board you need an FTDI programmer, so you might consider getting one when you buy your board.
ESP32-CAM Getting Started
For a quick introduction to the ESP32-CAM, you can watch the video below, or you can read our full getting started guide: ESP32-CAM Video Streaming and Face Recognition with Arduino IDE. This guide shows you how to quickly setup a video streaming with face recognition and detection in less than 5 minutes.
ESP32-CAM surveillance camera
The following video shows how to build a simple video streaming web server with the ESP32-CAM and how to integrate it with Home Assistant. For the written instructions, you can read our tutorial: ESP32-CAM Video Streaming Web Server (works with Home Assistant).
ESP32-CAM Take Photo and Save to MicroSD Card
Learn how to take photos with the ESP32-CAM and save them in the microSD card by watching the following video tutorial. For the written instructions and code, you can read our project page: ESP32-CAM Take Photo and Save to MicroSD Card.
ESP32-CAM PIR Motion Detector with Photo Capture
In this project, we’re going to make a motion sensor detector with photo capture using an ESP32-CAM. When your PIR sensor detects motion, it wakes up, takes a photo and saves it in the microSD card. Read project page: ESP32-CAM PIR Motion Detector with Photo Capture.
ESP32-CAM Take Photo and Display in Web Server
Learn how to build a web server with the ESP32-CAM board that allows you to send a command to take a photo and visualize the latest captured photo in your browser saved in SPIFFS. We also added the option to rotate the image if necessary. Read project page: ESP32-CAM Take Photo and Display in Web Server.
ESP32-CAM Specifications
Here is a list with the ESP32-CAM features:
- The smallest 802.11b/g/n Wi-Fi BT SoC Module
- Low power 32-bit CPU,can also serve the application processor
- Up to 160MHz clock speed, summary computing power up to 600 DMIPS
- Built-in 520 KB SRAM, external 4MPSRAM
- Supports UART/SPI/I2C/PWM/ADC/DAC
- Support OV2640 and OV7670 cameras,Built-in Flash lamp.
- Support image WiFI upload
- Support TF card
- Supports multiple sleep modes
- Embedded Lwip and FreeRTOS
- Supports STA/AP/STA+AP operation mode
- Support Smart Config/AirKiss technology
- Support for serial port local and remote firmware upgrades (FOTA)

Wrapping Up
This is quick overview of the ESP32-CAM main features. For a dedicated getting started guide and tutorials, read the following articles:
- Video streaming, face detection and recognition
- ESP32-CAM Video Streaming Web Server (Home Assistant, Node-RED)
- ESP32-CAM Take Photo and Save to MicroSD Card
- ESP32-CAM PIR Motion Detector with Photo Capture
- ESP32-CAM Take Photo and Display in Web Server
You may also like reading:
- ESP-EYE: New ESP32-based board for AI
- ESP32 vs ESP8266 – Pros and Cons
- Best ESP8266 Wi-Fi Development Board
- ESP32 Development Boards Review and Comparison
Thanks for reading.
[Recommended Course] Learn ESP32 with Arduino IDE
Register in our brand new ESP32 course with Arduino IDE. This is our complete guide to program the ESP32 with Arduino IDE, including projects, tips, and tricks! The registrations are open, so sign up now.
Hi! I’ve received my ESP32 cam, and flashed the code, but face recognition doesn’t works, never appears red square, and it seems that when the cam is streaming for a time it hangs and the webserver doen’t works. Have you any idea of what’s my problem?
Thanks!
Hello Juanma, if face recognition does not work for you. Apparently, this was broken in the v1.0.2 version of the Arduino Core. Reverting to v1.01 and loading the example CameraWebServer from v1.0.1 should solve your problem according to Karl Berger.
Hi
I have a big error wenn I start the ESP32.cam
ets Jun 8 2016 00:22:57
rst:0x1 (POWERON_RESET),boot:0x13 (SPI_FAST_FLASH_BOOT)
configsip: 0, SPIWP:0xee
clk_drv:0x00,q_drv:0x00,d_drv:0x00,cs0_drv:0x00,hd_drv:0x00,wp_drv:0x00
mode:DIO, clock div:1
load:0x3fff0018,len:4
load:0x3fff001c,len:1100
load:0x40078000,len:9232
load:0x40080400,len:6400
entry 0x400806a8
[E][sccb.c:154] SCCB_Write(): SCCB_Write Failed addr:0x30, reg:0x12, data:0x80, ret:-1
[E][camera.c:1049] camera_probe(): Detected camera not supported.
[E][camera.c:1249] esp_camera_init(): Camera probe failed with error 0x20004
Cann you help please ?
Thanks
Hello Mochel, I recommend taking a look at our ESP32-CAM dedicated troubleshooting guide: https://randomnerdtutorials.com/esp32-cam-troubleshooting-guide/
I think that error is caused by a power issue (try to use a power supply that outputs 5V)
I was getting a “Brownout detector was triggered” followed by a similar message. The problem is that the USB I was using can’t provide enough current. So, I would try a better, more stable power supply.
Rui,
Thanks for your great tutorial. Initially, face recognition would not work. Apparently, this was broken in the v1.0.2 version of the Arduino Core. Reverting to v1.01 and loading the example CameraWebServer from v1.0.1 solved the problem.
There is an open issue at github.com/espressif/arduino-esp32/issues/2817
Thanks,
Karl
Thanks for the tip Karl! We also have other troubleshooting tips here: https://randomnerdtutorials.com/esp32-cam-troubleshooting-guide/