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

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.


Upgrade to ARC Pro

Get access to the latest features and updates before they're released. You'll have everything that's needed to unleash your robot's potential!

#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