ESP32 Cam by Espressif
Firmware
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.
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.

DJ, So how should this call be changed to correct the following error? So I can get this to compile correctly?
Answered above. Cast port to a byte. Or map to a byte. One of the two needs to be a byte with your compiler.
So I changed it to this and it compiled...
Haha man arduino is so weird. So byte() is also a function? That’s hilarious
I would have expected traditional C to be
but they have a byte() and probably an int() and such ha too funny
DJ Sures PRO your solution has compiled for me, thanks
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