ESP32 Cam

ESP32 Cam EZB

Hardware: ESP32 Cam ESP32 Cam

Author: DJ Sures

This firmware converts a ESP32 Cam into an EZB for ARC to connect to it.

This firmware transforms the ESP32 Cam module into a fully functional EZ-B with an integrated Synthiam ARC camera, providing a powerful all-in-one solution for robotics and IoT applications. The firmware allows the ESP32 Cam to simultaneously operate as a video streaming device and a controller for peripherals like servos and sensors, making it an ideal choice for compact, feature-rich projects.

Key Features:

  1. EZ-B Compatibility: The firmware enables the ESP32 Cam to emulate an EZ-B, making it compatible with Synthiam ARC for controlling robotics systems and IoT devices.
  2. Integrated Camera: The ESP32 Cam’s built-in camera streams video directly to Synthiam ARC, offering real-time visual feedback alongside EZ-B functionality.
  3. Dual Functionality: Supports servo control and camera streaming simultaneously, making it versatile for applications requiring both visual monitoring and peripheral actuation.

Recommended GPIO Pins for Servos:

To ensure smooth operation of both the camera and peripheral controls, the following pins are recommended for use in servo control while the camera is active:

  • D2
  • D12
  • D13
  • D14
  • D15

These pins are optimized to avoid conflicts with the camera's operation and other internal processes, ensuring reliable performance in EZ-B mode.

How It Works:

  1. EZ-B Functionality: The ESP32 Cam handles peripheral controls, such as servo motors, sensors, and other devices, through Synthiam ARC commands.
  2. Video Streaming: The built-in camera streams video directly to Synthiam ARC, enabling real-time monitoring and control.
  3. Resource Allocation: The firmware ensures efficient management of the ESP32 Cam's resources, prioritizing critical functions like video streaming and servo control.

Benefits:

  1. Compact All-in-One Solution: Combines the functionality of an EZ-B and a camera into a single, compact device, saving space and reducing complexity in your projects.
  2. Cost-Effective: Offers a budget-friendly alternative to traditional EZ-B and camera setups while retaining full compatibility with Synthiam ARC.
  3. Versatile Applications: Suitable for robotics, home automation, surveillance, and other IoT projects requiring simultaneous video streaming and peripheral control.

Use Case Example:

This setup is perfect for robotic systems that require both camera feedback and precise control of servos or other peripherals. For instance:

  • A robotic arm with a camera for object recognition and manipulation.
  • A mobile robot with live video streaming and servo-driven navigation or gripper control.

By converting the ESP32 Cam into an EZ-B with an integrated camera, this firmware unlocks a versatile and efficient solution for advanced robotics and IoT applications.


  1. Install libraries into arduino ide: https://dl.espressif.com/dl/package_esp32_index.json

  2. Board manager install ESP32 by Espressif Systems

This project builds using...

  • Espressif Systems esp32 library version 3.0.7
  • ESP32Servo by Kevin Harrington version 3.0.6
Supported Capabilities
  • 12 Byte Unique Identifier
    Each controller has a unique identifier that can be referenced. This is to keep track in EZ-Builder projects which controller is being used and user logic specific to the ID.
  • ADC with 12 bit Resolution
    The ADC captures analog voltage at 8 bit resolution. This means the native value will be an 8 bit (0-4095) from the controller.
  • Can stream video v4 codec
    The controller supports the streaming Video v4 codec on a TCP or UART or USB connection.
  • Hardware UART TX/RX with DMA buffer and adjustable baud rate
    Contains 1 or more hardware UARTs with TX/RX functionality and DMA RX buffering.
  • Native WiFi Connectivity from ARC
    Controller supports WiFi connectivity using TCP between your computer with ARC.
  • PWM Duty on digital ports
    Digital ports can output a PWM between 0% and 100%.
  • PWM servos on digital ports
    The controller supports PWM Servos on digital ports. These are also called Hobby servos.
  • PWM servos on digital ports can release their position
    PWM servo driver on digital ports support the feature to release their holding position.
  • Read/Write Digital I/O Ports
    The ports marked as being digital will respond to Read and Write commands of boolean logic. The status of the digital port will be either TRUE or FALSE when voltage is detected or not, respectively.
  • Transmit Uart TX on all digital ports
    All digital ports support the ability to transmit (TX) serial/uart data at various pre-determined baud rates.

Version Information

  • Added editable definitions at the top of the ino source file for enabling/disabling features
Click to show supported capabilities
Supported Capabilities
  • 12 Byte Unique Identifier
    Each controller has a unique identifier that can be referenced. This is to keep track in EZ-Builder projects which controller is being used and user logic specific to the ID.
  • ADC with 12 bit Resolution
    The ADC captures analog voltage at 8 bit resolution. This means the native value will be an 8 bit (0-4095) from the controller.
  • Can stream video v4 codec
    The controller supports the streaming Video v4 codec on a TCP or UART or USB connection.
  • Hardware UART TX/RX with DMA buffer and adjustable baud rate
    Contains 1 or more hardware UARTs with TX/RX functionality and DMA RX buffering.
  • Native WiFi Connectivity from ARC
    Controller supports WiFi connectivity using TCP between your computer with ARC.
  • PWM Duty on digital ports
    Digital ports can output a PWM between 0% and 100%.
  • PWM servos on digital ports
    The controller supports PWM Servos on digital ports. These are also called Hobby servos.
  • PWM servos on digital ports can release their position
    PWM servo driver on digital ports support the feature to release their holding position.
  • Read/Write Digital I/O Ports
    The ports marked as being digital will respond to Read and Write commands of boolean logic. The status of the digital port will be either TRUE or FALSE when voltage is detected or not, respectively.
  • Transmit Uart TX on all digital ports
    All digital ports support the ability to transmit (TX) serial/uart data at various pre-determined baud rates.

Version Information

  • Increase the auto compression adjustment jump from 1 to 5 so it responds quicker.
Click to show supported capabilities
Supported Capabilities
  • 12 Byte Unique Identifier
    Each controller has a unique identifier that can be referenced. This is to keep track in EZ-Builder projects which controller is being used and user logic specific to the ID.
  • ADC with 12 bit Resolution
    The ADC captures analog voltage at 8 bit resolution. This means the native value will be an 8 bit (0-4095) from the controller.
  • Can stream video v4 codec
    The controller supports the streaming Video v4 codec on a TCP or UART or USB connection.
  • Hardware UART TX/RX with DMA buffer and adjustable baud rate
    Contains 1 or more hardware UARTs with TX/RX functionality and DMA RX buffering.
  • Native WiFi Connectivity from ARC
    Controller supports WiFi connectivity using TCP between your computer with ARC.
  • PWM Duty on digital ports
    Digital ports can output a PWM between 0% and 100%.
  • PWM servos on digital ports
    The controller supports PWM Servos on digital ports. These are also called Hobby servos.
  • PWM servos on digital ports can release their position
    PWM servo driver on digital ports support the feature to release their holding position.
  • Read/Write Digital I/O Ports
    The ports marked as being digital will respond to Read and Write commands of boolean logic. The status of the digital port will be either TRUE or FALSE when voltage is detected or not, respectively.
  • Transmit Uart TX on all digital ports
    All digital ports support the ability to transmit (TX) serial/uart data at various pre-determined baud rates.

Version Information

  • Works with servo & Camera at the same time
  • Added a note that the default IP address in AP Mode is (192.168.50.1)
Click to show supported capabilities
Supported Capabilities
  • 12 Byte Unique Identifier
    Each controller has a unique identifier that can be referenced. This is to keep track in EZ-Builder projects which controller is being used and user logic specific to the ID.
  • ADC with 12 bit Resolution
    The ADC captures analog voltage at 8 bit resolution. This means the native value will be an 8 bit (0-4095) from the controller.
  • Can stream video v4 codec
    The controller supports the streaming Video v4 codec on a TCP or UART or USB connection.
  • Hardware UART TX/RX with DMA buffer and adjustable baud rate
    Contains 1 or more hardware UARTs with TX/RX functionality and DMA RX buffering.
  • Native WiFi Connectivity from ARC
    Controller supports WiFi connectivity using TCP between your computer with ARC.
  • PWM Duty on digital ports
    Digital ports can output a PWM between 0% and 100%.
  • PWM servos on digital ports
    The controller supports PWM Servos on digital ports. These are also called Hobby servos.
  • PWM servos on digital ports can release their position
    PWM servo driver on digital ports support the feature to release their holding position.
  • Read/Write Digital I/O Ports
    The ports marked as being digital will respond to Read and Write commands of boolean logic. The status of the digital port will be either TRUE or FALSE when voltage is detected or not, respectively.
  • Transmit Uart TX on all digital ports
    All digital ports support the ability to transmit (TX) serial/uart data at various pre-determined baud rates.

Version Information

  • Works with servos & camera at the same time
Click to show supported capabilities
Supported Capabilities
  • 12 Byte Unique Identifier
    Each controller has a unique identifier that can be referenced. This is to keep track in EZ-Builder projects which controller is being used and user logic specific to the ID.
  • ADC with 12 bit Resolution
    The ADC captures analog voltage at 8 bit resolution. This means the native value will be an 8 bit (0-4095) from the controller.
  • Can stream video v4 codec
    The controller supports the streaming Video v4 codec on a TCP or UART or USB connection.
  • Hardware UART TX/RX with DMA buffer and adjustable baud rate
    Contains 1 or more hardware UARTs with TX/RX functionality and DMA RX buffering.
  • Native WiFi Connectivity from ARC
    Controller supports WiFi connectivity using TCP between your computer with ARC.
  • PWM Duty on digital ports
    Digital ports can output a PWM between 0% and 100%.
  • PWM servos on digital ports
    The controller supports PWM Servos on digital ports. These are also called Hobby servos.
  • PWM servos on digital ports can release their position
    PWM servo driver on digital ports support the feature to release their holding position.
  • Read/Write Digital I/O Ports
    The ports marked as being digital will respond to Read and Write commands of boolean logic. The status of the digital port will be either TRUE or FALSE when voltage is detected or not, respectively.
  • Transmit Uart TX on all digital ports
    All digital ports support the ability to transmit (TX) serial/uart data at various pre-determined baud rates.

Version Information

  • added dynamic camera compression

  • mapped Dx to GPIOx (i.e. ARC D4 = GPIO4, which is the FLASH LED)

Click to show supported capabilities
Supported Capabilities
  • 12 Byte Unique Identifier
    Each controller has a unique identifier that can be referenced. This is to keep track in EZ-Builder projects which controller is being used and user logic specific to the ID.
  • ADC with 12 bit Resolution
    The ADC captures analog voltage at 8 bit resolution. This means the native value will be an 8 bit (0-4095) from the controller.
  • Can stream video v4 codec
    The controller supports the streaming Video v4 codec on a TCP or UART or USB connection.
  • Hardware UART TX/RX with DMA buffer and adjustable baud rate
    Contains 1 or more hardware UARTs with TX/RX functionality and DMA RX buffering.
  • Native WiFi Connectivity from ARC
    Controller supports WiFi connectivity using TCP between your computer with ARC.
  • PWM Duty on digital ports
    Digital ports can output a PWM between 0% and 100%.
  • PWM servos on digital ports
    The controller supports PWM Servos on digital ports. These are also called Hobby servos.
  • PWM servos on digital ports can release their position
    PWM servo driver on digital ports support the feature to release their holding position.
  • Read/Write Digital I/O Ports
    The ports marked as being digital will respond to Read and Write commands of boolean logic. The status of the digital port will be either TRUE or FALSE when voltage is detected or not, respectively.
  • Transmit Uart TX on all digital ports
    All digital ports support the ability to transmit (TX) serial/uart data at various pre-determined baud rates.

Version Information

  • First check-in of the ESP32 Cam firmware

*Note: For servo use with EZ-Cam, only pins 2,4,12-19,21-23,25-27,32-33 are recommended.

Click to show supported capabilities
Supported Capabilities
  • 12 Byte Unique Identifier
    Each controller has a unique identifier that can be referenced. This is to keep track in EZ-Builder projects which controller is being used and user logic specific to the ID.
  • ADC with 12 bit Resolution
    The ADC captures analog voltage at 8 bit resolution. This means the native value will be an 8 bit (0-4095) from the controller.
  • Can stream video v4 codec
    The controller supports the streaming Video v4 codec on a TCP or UART or USB connection.
  • Hardware UART TX/RX with DMA buffer and adjustable baud rate
    Contains 1 or more hardware UARTs with TX/RX functionality and DMA RX buffering.
  • Native WiFi Connectivity from ARC
    Controller supports WiFi connectivity using TCP between your computer with ARC.
  • PWM Duty on digital ports
    Digital ports can output a PWM between 0% and 100%.
  • PWM servos on digital ports
    The controller supports PWM Servos on digital ports. These are also called Hobby servos.
  • PWM servos on digital ports can release their position
    PWM servo driver on digital ports support the feature to release their holding position.
  • Read/Write Digital I/O Ports
    The ports marked as being digital will respond to Read and Write commands of boolean logic. The status of the digital port will be either TRUE or FALSE when voltage is detected or not, respectively.
  • Transmit Uart TX on all digital ports
    All digital ports support the ability to transmit (TX) serial/uart data at various pre-determined baud rates.

ARC Pro

Upgrade to ARC Pro

Don't limit your robot's potential – subscribe to ARC Pro and transform it into a dynamic, intelligent machine.

PRO
USA
#25   — Edited

wow that was a lot of wires, lol, unnecessary

Just got it today, I was amazed also -  just plug it into your laptop or computer - works good

PRO
USA
#26   — Edited

Hi Nink,

the picture you took of me is when I used the FTDI adapter on the  Esp32 cam with the ARC program -  just a few wires, lol... I learned that from a great Arduino teacher from Canada named Bill

Here is a short (funny) video of the "new"  ESP32 cam with "NO" wires, lol - It has a built-in adapter to upload DJ's Arduino file, makes it easy, lol

In ARC, connect first when you get the IP from the serial monitor , add the camera last

EzAng

PRO
Canada
#27  

Now I just need to work out how to get GPIO working with ARC and servos / sensors.  So far I managed to get one servo to vibrate on GPIO0 but that is as good as it gets.

PRO
USA
#28   — Edited

Hi Nink,

DJ has a video of how to use a servo with the esp32's GPIOs

Step 1: First download version 3 DJ's ESP32 DOIT DevKit v1 - Firmware - Synthiam https://synthiam.com/Firmware/DJ-s-ESP32-DOIT-DevKit-v1-YGHLAL0K4JE

then get the IP to connect to ARC from the serial monitor

Step 2: read Esp32 Devkit V1 - Compatible EZB Robot Hardware - Support - Synthiam Watch this video

Near the end of this video, DJ show how to add a servo - : no vibrating servo here: https://youtu.be/CbMffZfq5cc

for a test, I first used the Led, then the servo, I used a micro servo (a little off, but), works well

remember the GPIO pins on the esp32 are the D pins in ARC servo controls

Auto-position works great

User-inserted image

EzAng

PRO
Canada
#29  

Hi @EzAng Yes ESP32  works fine. What doesn’t work is the ESP32-CAM with servos.  Finding a free GPIO and making work is the problem.

PRO
USA
#30   — Edited

All I see on this site is:

The pins in ARC are labeled D0 - D23. The ESP32 has GPIO labeled pins, which are not in any ordered sequence. This translation chart below shows the mapping of the ESP GPIO to ARC Dx pins.

User-inserted image

I noticed the DATA2 is a D3 and DATA3 is D4

either the cam works or the servo but not together, you are right, seems like a question for DJ

EzAng

PRO
Synthiam
#31   — Edited

It’s most likely due to the timer or resources that are shared between the servo and camera. Must be a conflict of some sort between those two libraries.

PRO
USA
#32  

Agree

I just used an IoTiny on connection 1  for a servo

esp32 cam on connection 0

that works

esp32 cam can't do it alone

I guess Nink will have to go this rout for now

Thanks

EzAng