ESP32 Cam

ESP32 Cam by Espressif

ESP32-CAM as an EZB for Synthiam ARC: stream video, control GPIO/servos, AP/Client WiFi, and ARC D0-D23 to GPIO pin mapping.
Connection Type
Wi-Fi
Number of Servos
Varies
Audio Support
No
Camera Support
Yes
UARTs
Varies
I2C Support
No
ADC Ports
Varies
Digital Ports
Varies

The ESP32-CAM is a small, affordable WiFi microcontroller board that includes an onboard camera and enough GPIO to control simple robotics hardware. When you flash the Synthiam ESP32-CAM firmware, the board behaves like an EZ-B compatible controller: ARC can connect to it over WiFi, stream the camera, and use the GPIO that doesn’t conflict with the camera wiring.

What this firmware provides
  • WiFi camera streaming to ARC (via the Camera Device robot skill)
  • EZ-B style connectivity so ARC can control supported GPIO
  • Configurable WiFi mode (AP or Client)
  • Pin mapping to translate ARC ports (D0-D23) to ESP32 GPIO pins
Setup guidance

Each firmware build includes configuration details and model-specific notes to help you: select the correct camera model define, choose WiFi mode, confirm the IP address, and avoid pin conflicts. Always follow the firmware’s comments and documentation for your specific board.

Supported Camera Models

The firmware supports multiple ESP32 camera boards. Select the matching model in the firmware by enabling the correct #define CAMERA_MODEL_... entry before compiling.

  • CAMERA_MODEL_AI_THINKER Common
  • CAMERA_MODEL_WROVER_KIT
  • CAMERA_MODEL_ESP_EYE
  • CAMERA_MODEL_M5STACK_PSRAM
  • CAMERA_MODEL_M5STACK_V2_PSRAM
  • CAMERA_MODEL_M5STACK_WIDE
  • CAMERA_MODEL_M5STACK_ESP32CAM
  • CAMERA_MODEL_M5STACK_UNITCAM
  • CAMERA_MODEL_M5STACK_CAMS3_UNIT
  • CAMERA_MODEL_TTGO_T_JOURNAL
  • CAMERA_MODEL_XIAO_ESP32S3
  • CAMERA_MODEL_ESP32_CAM_BOARD
  • CAMERA_MODEL_ESP32S3_CAM_LCD
  • CAMERA_MODEL_ESP32S2_CAM_BOARD
  • CAMERA_MODEL_ESP32S3_EYE
  • CAMERA_MODEL_DFRobot_FireBeetle2_ESP32S3
  • CAMERA_MODEL_DFRobot_Romeo_ESP32S3

WiFi Modes

The firmware supports two WiFi modes. Choose the one that best matches how you run ARC.

AP Mode (Direct Connect)

The ESP32-CAM creates its own WiFi network and your PC connects directly to it. This is simple for quick testing and field use when you don’t want a router involved.

Client Mode (Join Your Network)

The ESP32-CAM connects to your existing WiFi router. ARC then connects using the IP address assigned by your network. Use the Arduino Serial Monitor at 115200 baud to view connection status and the IP address.

Port Configuration and Pin Mapping

ARC labels controller ports as D0 - D23, while ESP32 boards label pins as GPIO numbers that vary by board and camera wiring. The firmware includes a mapping layer so ARC can consistently talk in D-ports, while the firmware translates those ports to the correct GPIO pins for your camera model.

ARC to ESP32 GPIO port mapping chart
Example port mapping reference. Always follow the firmware’s model-specific mapping and conflict notes for your board.

Notes About Servos and Pin Conflicts

Some boards (especially common AI Thinker style modules) have a handful of pins that often work well for servos, but the exact safe pins can differ by board revision, camera model, and whether the flash LED or SD card is enabled.


ARC Pro

Upgrade to ARC Pro

ARC Pro is more than a tool; it's a creative playground for robot enthusiasts, where you can turn your wildest ideas into reality.

#17  

DJ, So how should this call be changed to correct the following error?  So I can get this to compile correctly?

/Users/shawn/Documents/Arduino/EZ_ESP32_CAM/EZ_ESP32_CAM.ino: In function 'void doEZProtocol()':
/Users/shawn/Documents/Arduino/EZ_ESP32_CAM/EZ_ESP32_CAM.ino:755:49: error: call of overloaded 'analogWrite(byte&, long int)' is ambiguous
       analogWrite(port, map(pos, 0, 100, 0, 255));
                                                 ^
Author Avatar
PRO
Synthiam
#18  

Answered above. Cast port to a byte. Or map to a byte. One of the two needs to be a byte with your compiler.

#19   — Edited

So I changed it to this and it compiled...:D

analogWrite(port, byte(map(pos, 0, 100, 0, 255)));
Author Avatar
PRO
Synthiam
#20  

Haha man arduino is so weird. So byte() is also a function? That’s hilarious

I would have expected traditional C to be


analogWrite(port, (byte)map(pos, 0, 100, 0, 255));

but they have a byte() and probably an int() and such ha too funny

Author Avatar
Unknown Country
#21  

DJ Sures PRO your solution has compiled for me, thanks

Author Avatar
United Kingdom
#22   — Edited

Hi.

Is it works with Freenove ESP32-WROVER CAM Board

https://www.amazon.co.uk/dp/B0CJJHXD1W

UPDATED.

OK, sorted, maybe will be helpful for somebody.

Uncomment: CAMERA_MODEL_WROVER_KIT

Thanks, Tomas