Hardware:
ESP32-S2-DevKitC-1-N8R2 (8MB Flash, 2MB PSRAM)
Arduino Micro (ATmega32U4)
1kΩ + 2kΩ resistor voltage divider on TX line
Project context:
I'm building a sim racing steering wheel controller. The ESP32-S2 handles HID joystick output via native USB (GPIO19/20). I need to receive telemetry data from the Arduino Micro, in ESP32 S2 UART0 (GPIO 43&44).
Voltage divider wiring:
Arduino TX ──── 1kΩ ────┬──── ESP32 GPIO44 (RX)
│
2kΩ
│
GND
GND is shared between Arduino and ESP32.
Problem :
The ESP32 receives nothing from Arduino.
But in the other side, when I send a message from ESP to Arduino, it works.
I tried different baud rates (9600, 57600, 115200), but nothing changed.
Questions :
- Is there something special about GPIO43/44 on ESP32-S2 that prevents UART use?
- Do I need pull-up/pull-down resistors?
- Is the voltage divider causing signal integrity issues at 115200 baud?
Thanks for any help!
ESP32-S2 UART0 not receiving data from Arduino Micro (5V→3.3V with voltage divider) — HID project
-
paul_garait
- Posts: 1
- Joined: Sun Feb 22, 2026 8:18 pm
-
lbernstone
- Posts: 1131
- Joined: Mon Jul 22, 2019 3:20 pm
Re: ESP32-S2 UART0 not receiving data from Arduino Micro (5V→3.3V with voltage divider) — HID project
Those pins are used by the console by default. If you don't want the console on them, you should call Serial0.end() first thing in your setup. esp32 buffers uart data, so maybe you aren't getting a flush triggered. You can test that with the onReceiveExample.
If you aren't sure you have the right voltage there, break out a multimeter and test. Maybe even throw a LED in the RX circuit.
If you aren't sure you have the right voltage there, break out a multimeter and test. Maybe even throw a LED in the RX circuit.
Re: ESP32-S2 UART0 not receiving data from Arduino Micro (5V→3.3V with voltage divider) — HID project
try GPIO4 and GPIO5, e.g.
Code: Select all
#define RXD1 4
#define TXD1 5
void setup() {
// initialize both serial ports:
Serial.begin(115200); // note Serial is on the TX and RX pins NOT the USB
delay(2000);
Serial1.begin(9600, SERIAL_8N1, RXD1, TXD1);Who is online
Users browsing this forum: Applebot, ChatGPT-User and 1 guest