PCBWay Main Content Banner
ESP32ESP32 CAM

Program ESP32 CAM to Stream Video Over Wi-Fi

Getting Started with ESP32 Camera Module

Overview: ESP32 CAM WebServer

In this project, we will program the ESP32 CAM using Arduino IDE and Stream video over Wi-Fi. The ESP32 CAM is a small and cheapest camera module that costs around $10. It comes with an ESP32-S chip which has built-in wifi and Bluetooth. Above the OV2640 camera MicroSD card slot is provided which comes in handy to store images taken with this camera. 

In this tutorial, we will use an FTDI Module to program this ESP32 CAM board. Besides, we will go through its features, pins description, and set up Arduino IDE for the ESP32 Camera Module. Then we will use the ESP32 Camera webserver example code from Arduino IDE to stream video over Wi-Fi.

This is a basic tutorial to get started with ESP32 CAM. We will use the same basic project to make a smart doorbell and surveillance camera. Apart from these, we can also do face recognition-based projects for security applications.


Components Required

Following is the list of the components for Programming ESP32 CAM to Stream Video Over Wi-Fi. You can purchase all the components online from Amazon.

S.NComponents NameQuantityGet Products from Amazon
1ESP32 CAM Board1https://amzn.to/2V5rHxD
2FTDI Module1https://amzn.to/3zzU06q
3Female - Female Jumper Wires5https://amzn.to/3kVFP7q
4USB Cable1https://amzn.to/3eY5jx8
Components required to Program ESP32 CAM to Stream Video Over Wi-Fi

What is ESP32-CAM?

The ESP32-CAM is a small camera module with the ESP32-S chip. The module has an OV2640 camera. It also has many GPIOs for external connections. The ESP32-CAM module has been developed by so many manufacturers but the board developed by AI-Thinker is the most popular.

ESP32 CAMERA Module

The Module is based on a 32-bit CPU controller with a frequency of 240MHz. It has a built-in 520 KB SRAM and external 4M PSRAM. This is a combined  802.11b/g/n Wi-Fi + Bluetooth/BLE SOC module. This ESP32 CAM module comes with an onboard voltage regulator.

Unfortunately, it has a single reset button at the bottom that makes the module breadboard unfriendly. You will not have access to this button if you place it on a breadboard. It also comes with an LED that can be used as a flash LED through program code modification.

Labeled Diagram of esp32 CAM

In the back of this module, you can see the PCB antenna. This module has already an antenna attached. But if you want to use good power and a good range of external antenna, you can connect one antenna to an IPX connector. In order to use that antenna, you need to connect a jumper or zero-ohm resistor to the PCB near the antenna.

OV2460 Camera

The camera module is the most important part of ESP32 CAM. We can use the OV2640 camera module having 24 pins. It has the camera resolution of up to 1600×1200 pixels

ESP32 OV2460 Camera

The gold-plated 24 pin connector strip lets you connect this camera with ESP32. Simply push the little slide in the opposite direction then you can observe the pins for connecting the camera. Insert the camera-facing gold-plated pins downside and then pull the slide. After successfully inserting the camera into this module it is ready to use. 

SD Card Support

On the other side,  there is an SD Card Holder which supports a microSD card up to 4GB. But you can even use up to 16GB SD Card with no issues.

SD card is used for storing the capture images. For demonstration purposes, I am using a 4GB microSD card. To use the SD card in your project simply insert the SD card into the SD card adaptor. 


ESP32 CAM GPIO Pins

The GPIOs pins of ESP32 CAM support UART, SPI, I2C, PWM, ADC, and DAC. There are 3.3V pin, VCC pin, and 5V Pin for powering this module. We can see multiple GND Pins as well.

ESP32 CAM Pins

The following pins are internally connected to the microSD card reader:

GPIO 14: CLK

GPIO 15: CMD

GPIO 2: Data 0

GPIO 4: Data 1 (also connected to the on-board LED)

GPIO 12: Data 2

GPIO 13: Data 3


ESP32-CAM and FTDI Connection

To program the ESP32 CAM board, you need USB-to-TTL Converter Module or an FTDI Module. We can find so many FTDI Modules available based on CP2102 or CP2104 Chip or any other chip.

Circuit Diagram to Program ESP32 CAM to Stream Video Over Wi-Fi

To Program ESP32 CAM and Stream Video Over Wi-Fi, make the following connection between the ESP32 CAM module and FTDI Module.

ESP32-CAMFTDI PROGRAMMER
GNDGND
5VVCC (5V)
U0RTX
U0TRX
GPIO 0GND

Connect the 5V & GND Pin of FTDI module to 5V & GND of ESP32 CAM. Similarly, connect the Rx to UOT and Tx to UOR Pin. And the most important thing, you need to short the IO0 and GND Pin together. This put your ESP32 CAm into programming Mode. Once programming is done, you can remove it.

Project PCB Gerber File & PCB Ordering Online

As I have already mentioned the module is not fully breadboarded friendly.  So, I designed the PCB Board for ESP32 CAM Board using EasyEDA. The PCB looks something like this.

ESP32 CAM board PCB

I gave the Gerber File for the PCB below. You can simply download the Gerber File and order the PCB from https://www.PCBWay.com/

Now you can visit the PCBWay official website by clicking here: https://www.pcbway.com/. So it will direct you to the PCBWay website.

You can now upload the Gerber File to the Website and place an order. The PCB quality is superb & high. That is why most people trust PCBWay for PCB & PCBA Services.

Program ESP32 CAM to Stream Video Over Wi-Fi PCB

Now you can assemble the components on the PCB Board.


Setting Up ESP32 CAM Board on Arduino IDE

To program the ESP32-CAM board using Arduino IDE, you need to install Arduino IDE as well as the ESP32 add-on. Follow this part if you are programming the ESP32 board for the first time in Arduino IDE.

Install the ESP32 Add-on

To install the ESP32 board in your Arduino IDE, follow these steps:

  1. In your Arduino IDE, go to FilePreferences
  2. Enter https://dl.espressif.com/dl/package_esp32_index.json into the “Additional Board Manager URLs” field as shown in the images below. Then, click the “OK” button:
ESP32 board on preferences

Note: If you already have installed other board manager like ESP8266 then enter the comma to seperate the different board URL. Like this:

https://dl.espressif.com/dl/package_esp32_index.json, http://arduino.esp8266.com/stable/package_esp8266com_index.json

3. Open the Boards Manager. Go to Tools > Board > Boards Manager…

ESP32 CAM board manager

4. Search for ESP32 and press the install button for the “ESP32 by Espressif Systems“:

Install ESP32 Cam addon

5. That’s it. It should be installed after a few seconds.

Source Code & Getting Started with ESP32 CAM

Now, go to the files menu and then select examples. From the examples menu, select the ESP32 >> Camera >> CameraWebServer Sketch.

ESP32 CAM webserver example code

So this is the basic example code of ESP32 CAM WebServer for Video Streaming. The code is very complicated due to so many files.

You just need to modify the code by uncommenting the ESP32 CAM model that you are using. If you are using ESP32 CAM from AI-Thinker uncomment the AI-Thinker Part and comment rest of the part.

//#define CAMERA_MODEL_WROVER_KIT // Has PSRAM
//#define CAMERA_MODEL_ESP_EYE // Has PSRAM
//#define CAMERA_MODEL_M5STACK_PSRAM // Has PSRAM
//#define CAMERA_MODEL_M5STACK_V2_PSRAM // M5Camera version B Has PSRAM
//#define CAMERA_MODEL_M5STACK_WIDE // Has PSRAM
//#define CAMERA_MODEL_M5STACK_ESP32CAM // No PSRAM
#define CAMERA_MODEL_AI_THINKER // Has PSRAM
//#define CAMERA_MODEL_TTGO_T_JOURNAL // No PSRAM

You also need to change your Wi-Fi Network credentials like SSID and Password.

const char* ssid = "*********";
const char* password = "*********";

Now, let’s start to program ESP32 CAM. Open your Arduino IDE. Go to tools >> select the ESP32 Board >> from the list select AI-Thinker ESP32-CAM.

Select Ai Thinker ESP32 CAM board

Now connect the FTDI Module to your Computer and select the COM Port. Finally, you can upload the code. The code will take more than a minute to compile and upload.


Recommended Readings:


ESP32 CAM Video Streaming Over WiFi

Once the code is uploaded successfully, you can open the Serial Monitor. Meanwhile, if you press the reset button on the Serial Monitor you will see the device is in downloading mode.

ESP32 CAM download Mode

In order to disable the downloading mode. Simply remove the IO0 GND Jumper from the Module. Now again press the reset button. So the device will connect to the Wi-Fi Network. Once the device gets connected, it will display its local IP Address.

Program ESP32 CAM to Stream Video Over Wi-Fi

You can Copy this IP Address Link and paste it on your favorite web browsers. A simple web interface will appear. you will find all the camera settings on the left side. Simply explore each settings manually to know more about it.

At the bottom of the web page you can see there is an option to stream, you can click on stream option to see the video. Not only that you can also Maximize the resolution using the Camera Option.

You can move the camera module to see yourself in the video. The Video data is live and you are observing it on the local Web server.

Program ESP32 CAM to Stream Video Over Wi-Fi

There is an option “Get Still” to capture the image as well. It will store the capture image on SD Card.


Printed 3D Enclosure for ESP32-CAM

Here, I have designed a ESP32-CAM enclosure and holder so that we can place it anywhere and use as a surveillance camera.

ESP32 CAM 3D Printed Enclosure

The 3D files are provided below simply download it. If you don’t have 3D printer then PCBWay will help you. Recently PCBWay started CNC 3D Printing services. So,there is a $25 SALE on custom metal & plastic parts. Grab this Custom Prototype Manufacturing Service now.

After assembling all the parts our ESP32 CAM is ready for video streaming over Wi-Fi.

Program ESP32 CAM to Stream Video Over Wi-Fi

Video Tutorial & Guide

Wrapping up

So this is how you Program ESP32 CAM to Stream Video Over Wi-Fi. The advantage of this project is you can use the ESP32 CAM as a surveillance camera. You can place it outside your house and use it as a Security Device.

Alsan Parajuli

I am a WordPress enthusiast, a hardworking and highly positive person. I always believes in practicality rather than theoretical knowledge. With my curiosity and fast learning skills, I managed to learn everything on my own. I love coding, editing, writing and rummaging around Internet. I am passionate about IoT Projects, Digital marketing, website designing, and reviewing. Moreover, I had been contributing to WordPress Biratnagar as an active member since 2018.

Related Articles

One Comment

Leave a Reply

Back to top button