NederlandsKlik deze knop voor de Nederlandstalige website

ESP32-CAM: ESP32 with camera and SD card slot

The name says it all: the ESP32-CAM is a WiFi / Bluetooth development board with both an ESP32 microcontroller and a camera. There are also a number of GPIOs available and there is a connection for an external antenna. With that, the board looks a bit like the TTGO T-Journal from Lilygo, but there are also a number of important differences.

ESP32-CAM TTGO T-Journal
ESP32 module ESP32-S ESP32-PICO-D4
USB to serial No CP2104
Battery circuit No IP5306
PSRAM Yes Yes
Camera OV2640 OV2640
Display No OLED 128×32
Buttons 1 2
GPIO 8 2+2
SD Max. 4GB No
Antenna PCB + U.FL SMA + U.FL
#Define AI_THINKER
Flasher Yes No

This board has no USB-to-serial interface. Programming must, therefore, be done via an external interface. This also means no power can be supplied via USB. Furthermore, a battery management circuit and an OLED display are missing. In contrast, this board does have an SD card slot and LED flashlight, and it is a lot more compact. This board was again supplied by VNGsystems from Gouda.

ESP32 boards
ESP32 boards
ESP32-CAM Wifi+Bluetooth Camera board met de OV2640 Camera module
Tested and recommended by OneGuyOneBlog.com:

ESP32-CAM Wifi+Bluetooth Camera board met de OV2640 Camera module
VNGsystems.nl

Power supply

As mentioned above, a USB connection is missing. The board must, therefore, be powered via the 5V pin and GND pin. I use a breadboard supply for this, set to 5V.

ESP32-CAM: ESP32 with camera and SD card slot - power supply
ESP32-CAM: ESP32 with camera and SD card slot – power supply

External antenna or PCB

The ESP32-S module has an antenna on the PCB, but also a U.FL connection for an external antenna. You can activate the desired antenna by the correct placement of a zero-ohm resistor (bridge). The upper position activates the antenna on the PCB, the lower one activates the U.FL connection. The external connection was activated on my board, see photo.

ESP32-CAM: ESP32 with camera and SD card slot - antenna selection
ESP32-CAM: ESP32 with camera and SD card slot – antenna selection

ESP32-CAM programming: serial interface

The board does not have a serial interface, so you need an external interface to program it. I use an FTDI clone here. Note that the interface must operate at 3V: the RX / TX pins on the ESP32 are not 5V tolerant.

ESP32-CAM: ESP32 with camera and SD card slot - FTDI interface
ESP32-CAM: ESP32 with camera and SD card slot – FTDI interface

To put the ESP32 in programming mode, pin IO0 must be connected to GND. After programming, this connection can be broken again. Connect everything as follows:

  • FTDI interface: RX to U0T and TX to U0R on the ESP32-CAM
  • Power supply: GND to the FTDI interface, GND and 5V to the ESP32-CAM
  • ESP32-CAM: IO0 to GND (remove after programming)
FTDI (3V) ESP32-CAM POWER (5V)
Green RX U0T
Yellow TX U0R
Black GND GND
Purple IO0 GND
Black GND GND
Red 5V 5V
ESP32-CAM: ESP32 with camera and SD card slot - USB interface
ESP32-CAM: ESP32 with camera and SD card slot –
USB interface
USB naar TTL adapter - FTDI Compatible
Tested and recommended by OneGuyOneBlog.com:

USB naar TTL adapter - FTDI Compatible
VNGsystems.nl

Programming ESP32-CAM: Arduino IDE

When you have connected the board and the serial interface you can program it with the good old Arduino IDE. First of all, you must, of course, have the IDE installed, along with the ESP32 core. If you have not done that yet, first read ESP32 with Arduino IDE on Linux and Windows.

First, choose the correct ESP32 module:

Tools > Board: > “ESP32 Wrover module”

Arduino IDE: ESP32 Wrover module
Arduino IDE: ESP32 Wrover module

Choose the correct partition scheme:

Tools > Partition Scheme: > “Huge APP (3MB No OTA)”

Arduino IDE: partition scheme
Arduino IDE: partition scheme

Choose the correct USB port:

Tools > Port: > the port to which the serial interface is connected

Arduino IDE - port
Arduino IDE – port

The Arduino IDE is now ready for use with the board.

Example sketch: CameraWebServer

To test the ESP32-CAM you can upload the sample camera “CameraWebServer” to the board.

The sample sketch can be found here in the Arduino IDE:

File > Examples > ESP32 > Camera > CameraWebServer

Arduino IDE: CameraWebServer sketch
Arduino IDE: CameraWebServer sketch

Before you can upload the sketch to your board, you must first make two changes to the code:

  • change the definition of the ESP32 module
  • enter the SSID plus password of your WiFi network

Change the #define statement from #define CAMERA_MODEL_WROVER_KIT

// Select camera model
#define CAMERA_MODEL_WROVER_KIT
//#define CAMERA_MODEL_ESP_EYE
//#define CAMERA_MODEL_M5STACK_PSRAM
//#define CAMERA_MODEL_M5STACK_WIDE
//#define CAMERA_MODEL_AI_THINKER

to #define CAMERA_MODEL_AI_THINKER

// Select camera model
//#define CAMERA_MODEL_WROVER_KIT
//#define CAMERA_MODEL_ESP_EYE
//#define CAMERA_MODEL_M5STACK_PSRAM
//#define CAMERA_MODEL_M5STACK_WIDE
#define CAMERA_MODEL_AI_THINKER

Enter the SSID and password of your WiFi network:

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

You can now compile the sketch and upload it to the board. When the upload is complete, remove the connection between pin IO0 of the ESP32-CAM and GND of the power supply.

Then restart the board and open the serial monitor of the Arduino IDE. When the WiFi connection between the ESP32-CAM and the network is successful, the IP address of the board appears in the serial monitor.

Arduino IDE: IP address
Arduino IDE: IP address

Copy this IP address to the address bar of your browser. You now enter the CameraWebServer interface where you can experiment with all kinds of settings.

Scroll all the way down and click the Start stream button. If all went well you will now see a live video stream from the OV2640 camera.

CameraWebServer video stream
CameraWebServer video stream

To be continued

The following also applies to this board: to be continued. Because just trying out an example ketch is of course not very exciting. What can we do with the SD card reader and GPIOs? What fun projects can we all do with the ESP32-CAM? There is still plenty to discover and experiment with, so keep an eye on this blog for more articles about this board!

Specifications ESP32-CAM

Microcontroller: ESP32-S
Camera: OV2640 2 megapixel
WIFI: 802.11 b / g / n / e / i (up to 150 Mbps)
Bluetooth: v4.2BR / EDR and BLE standard
MicroSD card: Maximum 4 GB

Supply voltage: 5V
Programming voltage: 3.3V
Dimensions: 40.5mm x27mm x4.5mm

ESP32-CAM Wifi+Bluetooth Camera board met de OV2640 Camera module
Tested and recommended by OneGuyOneBlog.com:

ESP32-CAM Wifi+Bluetooth Camera board met de OV2640 Camera module
VNGsystems.nl
USB naar TTL adapter - FTDI Compatible
Tested and recommended by OneGuyOneBlog.com:

USB naar TTL adapter - FTDI Compatible
VNGsystems.nl

VNG Systems

One Comment