Esp32 DevKit v1

Esp32 Devkit V1 by Espressif

Turn DOIT ESP32 DevKit v1 into an EZB for Synthiam ARC: affordable WiFi with 3 UARTs, AP/Client modes, servo pin tips and GPIO-to-Dx mapping.
Connection Type
Wi-Fi
Number of Servos
Varies
Audio Support
No
Camera Support
No
UARTs
Varies
I2C Support
No
ADC Ports
Varies
Digital Ports
Varies

The DOIT ESP32 DevKit v1 is an affordable Wi-Fi controller with plenty of I/O and three hardware UARTs. With the firmware below installed, the board behaves like an EZB that Synthiam ARC can connect to over Wi-Fi. This firmware is compatible with ARC 2019.06.25.00 and newer.

Servo note: For servo use with EZ-Cam, only the following pins are recommended: 2, 4, 12–19, 21–23, 25–27, 32–33.
DOIT ESP32 DevKit v1 board layout

Video Tutorial


Wi-Fi Modes

The firmware supports two Wi-Fi modes:

  • AP Mode – the ESP32 creates its own Wi-Fi network and acts as the server that ARC connects to.
  • Client Mode – the ESP32 joins your existing Wi-Fi network (router), and ARC connects to the ESP32’s IP address on that network.

You can view the current IP address and connection status using the Arduino IDE Serial Monitor set to 115200 baud.


Port Configuration

In ARC, the digital ports are labeled D0–D23. On the ESP32, the pins are labeled with GPIO numbers that are not in sequential order. Use the pin translation diagram below to map ESP32 GPIO pins to ARC Dx ports.

Pins marked TX/RX are the hardware UART pins and correspond to hardware UART #0 in ARC.

ESP32 to ARC digital port mapping

ARC Pro

Upgrade to ARC Pro

With ARC Pro, your robot is not just a machine; it's your creative partner in the journey of technological exploration.

Author Avatar
PRO
Synthiam
#33  

I wouldn't bother with the adafruit servo controller because the communication is slow and a little wonky with i2c.

You'd get more out of an Arduino with a servo shield. Simply connect the Arduino's RX and TX to the TX and RX of the ESP32 cam.

Once you do that, the firmware change is minor on the esp32. All you need to do is a while () loop that passes TCP to the UART and vice versa. All of the EZB code is removed.

#35  

To compile on Arduino IDE 2.0.3 I had to change line 591 to: analogWrite(translateaDigitalPort(port), (uint16_t) map(pos, 0, 100, 0, 255));

I'm assuming here it is supposed to use the included analogWrite and not the Arduino included one?

Author Avatar
PRO
Synthiam
#36  

I don't think an Arduino analog write exists for the ESP Arduino library. At least at the time of the firmware creation, there wasn't. It shouldn't matter which one you use if there happens to be an Arduino AnalogWrite installed with the ESP package.

But i think you need to be casting the value to a uint8_t not a uint16_t. Because it's only a byte from 0-255. I mean, the 16bit int will work but it's unneeded extra bits:)

#37  

Gotcha. I commented out analogWrite and moved the files out of the project and it compiled. Looks like it was included November 2021 since version 2.0.1 so after the firmware was written.

esp32/hardware/esp32/2.0.6/cores/esp32/esp32-hal.h:void analogWrite(uint8_t pin, int value);

Aside from that error the rest of the firmware compiled fine.

Author Avatar
PRO
Synthiam
#38   — Edited

that's good to know - i might have to revisit that firmware and remove the analogwrite.h to use the built-in one.

so you got it working then?

#39  

Yeah I'm just sitting at my bench with multimeter testing the PWM's on the pins. Works great.

p.s. nabu'er here as well :-) actually that's how I found ARC. It's just a hobby of mine and learning ros2 was not fitting into my schedule anytime soon.

Author Avatar
PRO
Canada
#40  

I was really impressed how well the ESP32 worked with ARC.  I think if someone sat down and built a free 3D printed opensource series of robots like a robot humanoid, robot hexapod, robot car etc based on the ESP and called it something like ES-Robot, it would be a huge success for schools and hobbyists  :)