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

ESP32-S2 UART0 not receiving data from Arduino Micro (5V→3.3V with voltage divider) — HID project

Postby paul_garait » Sun Feb 22, 2026 8:20 pm

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!

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

Postby lbernstone » Mon Feb 23, 2026 7:10 pm

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.

horace99
Posts: 34
Joined: Mon Oct 14, 2024 10:38 am

Re: ESP32-S2 UART0 not receiving data from Arduino Micro (5V→3.3V with voltage divider) — HID project

Postby horace99 » Sat Mar 07, 2026 6:22 pm

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, PerplexityBot and 1 guest