
Esp32 DevKit v1 by Espressif
Download Firmware
The DOIT Esp32 DevKit v1 is a very affordable WiFi module with plenty of IO, including three hardware UARTs. Adding the firmware below, the WiFi module will become an EZB that ARC can connect. This firmware works with ARC versions greater or equal to 2019.06.25.00.
*Note: For servo use with EZ-Cam, only pins 2,4,12-19,21-23,25-27,32-33 are recommended.
Firmware & Instructions
- In the Arduino IDE, add this link to File->Preferences->Libraries: https://dl.espressif.com/dl/package_esp32_index.json
- In the Arduino IDE, load the Board Manager, search for "ESP32 by Espressif Systems" and select INSTALL.
- Download the firmware from this page to your computer and extract it into a folder.
- Edit the source code firmware in the Arduino IDE and view the WiFi mode settings. You can choose between AP or Client mode. The appropriate settings for each method may be configured as well. Follow the instructions in the firmware code for configuring the WiFi modes.
- Program the device using Arduino's IDE and the firmware code. If you receive errors in the debug window of the Arduino IDE when programming, hold the BOOT button down on the ESP32 until you see WRITING in the Arduino debug window.
- View the status of the connection in the Arduino Serial Monitor set to 115,200 baud. Depending on your WiFi settings, you will see the WiFi connection status.
- Load ARC and connect to the ESP32 directly via WiFi if it is in AP Mode; otherwise, connect to the same network as Client Mode. The default IP Address for AP Mode will be 192.168.1.1. In Client mode, you must view the Serial Debug Monitor in Arduino IDE or check your router DHCP client list.

Video Tutorial
WiFi Modes
Two WiFi modes can be configured in the code. They are AP Mode, which turns the ESP32 into a WiFi server your computer connects directly to. The other mode is Client Mode, in which the ESP32 connects to your network router. Get the IP Address and connection status information by viewing the Serial Monitor set to 115,200 in Arduino IDE.
Port Configuration
The pins in ARC are labeled D0 - D23. The ESP32 has GPIO labeled pins, which are not in any ordered sequence. This translation chart below shows the mapping of the ESP GPIO to ARC Dx pins. The ports labeled TX/RX are the hardware UART ports, which correspond to hardware UART #0 in ARC.

Related Tutorials

Connect ESP32 To ARC Via Wifi

Control Robot With Virtual Reality Headset

Create Auto Position Actions From EZ-Script

Exosphere Telepresence
Related Hack Events
Related Questions

ESP8266 Chip - Installing ARC

I Resolved The Problem
Upgrade to ARC Pro
Become a Synthiam ARC Pro subscriber to unleash the power of easy and powerful robot programming
you still have to recalibrate (although i guess I could use an offset with my bots that use them) and release doesn't work but I get 180 degrees and it is a lot snappier, the old driver was a bit grindy.
I think the ESP has a lot of promise as a controller. There are a lot of things that work with arduino like LIDAR etc and having a single $5 controller that does a lot of things with ARC would be great.
I am sure the new ESP32-S3 will solve all the performance issues as well
https://www.espressif.com/en/news/ESP32_S3
https://www.amazon.ca/Freenove-ESP32-WROVER-Bluetooth-Compatible-Tutorials/dp/B09BC5CNHM/ref=sr_1_3_sspa?crid=28FD74NK9JZX&keywords=ESP32&qid=1649941215&sprefix=esp32%2Caps%2C97&sr=8-3-spons&psc=1&spLa=ZW5jcnlwdGVkUXVhbGlmaWVyPUEyV0xGSENDMk9CMEoyJmVuY3J5cHRlZElkPUEwMTU5MDYzMlhSTllQU1BXQkY3UCZlbmNyeXB0ZWRBZElkPUEwNTc3MjU0VlhHNlNDUzVTVEZDJndpZGdldE5hbWU9c3BfYXRmJmFjdGlvbj1jbGlja1JlZGlyZWN0JmRvTm90TG9nQ2xpY2s9dHJ1ZQ==
But because it is esp32, you're still going to be limited by the i/o restrictions. The camera will use a number of the i/o ports, which will reduce the amount of available i/o to you. It'll also use the same internal timers and DMA, which will conflict with servo PWM generating timers.
ESP32 is an ESP32, even if you change the form factor. You will still experience the same limitations because, at heart, it's the same thing with a different breakout board.
When you look at any micro board that says ESP32, you'll see a shiny silver metal box. That is the same module that all ESP32 controllers use. They all have the same parts but with a different breakout board.
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.
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?
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
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.
so you got it working then?
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.
@Atomist, that's great! What a small world. The NABU has been such a great distraction for me. I never imagined I would experience anything like it - probably never will again.
I have to agree that the ESP32 works so well with ARC. I do wish it had more I/O, but that available I2C or UART could expand on that. Or, using a dynamixel or other "smart" servo would be great. There is a line of servos called Feetech that I've found to be somewhat comparable in quality but much lower cost.