Esp32plus Firmware
ESP32Plus for Synthiam ARC enables ESP32 robot control with audio streaming, ESP32-CAM passthrough, PCA9685 16-servo I2C control and UART expansion.
Compatible Hardware
Description
This firmware converts a Esp32 into an EZB for ARC to connect to it.
ESP32Plus is a high-performance firmware for Synthiam ARC that transforms a standard ESP32 into a powerful, network-connected robot controller with audio streaming, camera passthrough, i2c PCA9685 16-servo control, and hardware UART expansion - all in a compact, low-cost form factor.
It’s ideal for advanced robotics projects, custom robot builds, embedded systems, and WiFi-enabled robots controlled directly from Synthiam ARC.
External Camera Support (ESP32-CAM over UART)
ESP32Plus supports a dedicated camera ESP32 module (ESP32-CAM) connected over UART:
- Serial1 RX: GPIO 12
- Serial1 TX: GPIO 13
*Note: RX/TX pins can be changed in the firmware INO sourcecode.
This allows:
- Camera frames to be streamed from a second ESP32-CAM board
- ARC to treat the camera as a native EZ-Robot camera device
- Clean separation of video processing from robot control logic
This architecture keeps video capture fast and responsive without impacting servo control, networking, or audio playback.
16-Channel servo & PWM Control via PCA9685 (I2C)
ESP32Plus uses the PCA9685 16-channel PWM servo controller for reliable, jitter-free servo output:
- I2C SDA: GPIO 14
- I2C SCL: GPIO 15
- PCA9685 Address:
0x40 - PWM Frequency: 50 Hz (servo standard)
*Note: I2C pins and values can be changed in the firmware INO sourcecode.
This provides:
- Control of up to 16 servos
- Digital on/off outputs
- PWM speed control
- Hardware-timed PWM for smooth motion without CPU jitter
Servos must be powered externally and comply with the PCA9685 current-limitation requirements.
Real-Time Audio Streaming (ESP32 DAC via I2S)
ESP32Plus streams audio directly from Synthiam ARC to the ESP32’s built-in DAC using I2S DMA:
DAC Output Pins:
- GPIO 25 (DAC1)
- GPIO 26 (DAC2)
*Note: If changed in the sourcecode, the pins must be DAC pins of the ESP32.
Features:
- 8-bit PCM audio streamed over WiFi
- Buffered playback using DMA
- Real-time robot sound effects, speech, beeps, and alerts
No external DAC is required - audio is output directly from the ESP32 hardware.
Automatic Network Discovery (EZ-B Scan Broadcast)
ESP32Plus automatically announces itself on the network so ARC can discover it without manual IP configuration:
- Broadcasts every few seconds using UDP
- Compatible with ARC’s EZ-B Scan feature
- Shows up as a discoverable robot controller on the local network
This makes setup fast and user-friendly - power it on, open ARC, and connect.
UART Expansion (Peripheral Serial Devices)
This firmware supports the ARC UART (#0) commands for writing, reading with a buffered input.
- Serial2 RX: GPIO 16
- Serial2 TX: GPIO 17
*Note: RX/TX pins can be changed in the firmware INO sourcecode.
This allows:
- Serial sensors
- Co-processors
- External microcontrollers
- Streaming serial devices directly into ARC
High-Performance Multi-Task Architecture
ESP32Plus uses FreeRTOS with multiple concurrent tasks:
- EZ-Robot protocol handling
- UART camera passthrough
- Audio DAC streaming
- Network discovery broadcasting
This ensures:
- No lag during audio playback
- Smooth servo updates
- High-speed TCP draining
- Stable WiFi performance under heavy load
Network Configuration
Before flashing, the firmware can be configured for:
- Access Point Mode (Robot creates its own WiFi network)
- Client Mode (Robot joins your existing WiFi network)
You must edit:
#define AP_MODE
#define WIFI_AP_SSID "YourRobotName"
#define WIFI_AP_PWD ""
#define WIFI_CLIENT_SSID "YourWiFi"
#define WIFI_CLIENT_PWD "YourPassword"
This gives you full control over how the robot connects to your network.
What You Need (External Hardware)
ESP32Plus intentionally stays modular:
| Function | Hardware |
|---|---|
| Servos | PCA9685 16-channel servo controller |
| Camera | ESP32-CAM module |
| Audio | Amplifier or direct line-out to external amplifier (Built-in ESP32 DAC)) |
| Power | External power for servos recommended |
| Robot controller | ESP32 (original ESP32, not S3/C3) |
This design keeps the system flexible and easy to expand or customize.
