The Standard UART Pinout & Signal Definitions
The table below defines the standard UART pinout from the perspective of Data Terminal Equipment (DTE), which includes your microcontroller (Arduino, ESP32, STM32). When connecting to a USB-to-UART adapter, the adapter acts as Data Communication Equipment (DCE), meaning the data lines cross over.
| Pin Name | Direction (DTE) | Description & Practical Use | Idle State |
|---|---|---|---|
| GND | N/A | Common ground reference. Must be connected first to prevent ground loops and floating logic. | 0V |
| TX / TXD | Output | Transmits serial data out. Connects to the RX pin of the receiving device. | High (VCC) |
| RX / RXD | Input | Receives serial data in. Connects to the TX pin of the transmitting device. | High (VCC) |
| VCC / VDD | Power | Power supply. On adapters, this can output 5V or 3.3V to power the target board. | N/A |
| DTR | Output | Data Terminal Ready. Used in auto-reset circuits to pulse the microcontroller's RESET/EN pin. | Low/High |
| RTS | Output | Request To Send. Used alongside DTR to pull GPIO0 low on ESP32 boards for bootloader entry. | Low/High |
| CTS | Input | Clear To Send. Hardware flow control input; rarely used in basic hobbyist sensor wiring. | Low |
| DSR | Input | Data Set Ready. Hardware flow control input; almost never broken out on modern maker adapters. | Low |
USB-to-UART Adapter Standards & Logic Levels
While RS-232 originally specified ±12V signaling, modern embedded UART operates at TTL logic levels. The critical variable is whether your adapter outputs 5V or 3.3V logic on the TX/RX pins. Sending 5V logic into a 3.3V-tolerant ESP32 GPIO will degrade the silicon over time or cause immediate latch-up failure. Below are the most common USB-UART bridge ICs you will encounter on the bench in 2026.
| Bridge IC | Typical VCC Output | Logic Level (TX/RX) | Auto-Reset (DTR/RTS) | Notes & Gotchas |
|---|---|---|---|---|
| FTDI FT232RL | 5V or 3.3V | Configurable (via VIO pin) | Yes | VCC pin outputs 5V, but if the VIO pin is tied to 3.3V, the TX/RX logic is 3.3V. Always check the VIO jumper. |
| WCH CH340C | 5V | 5V (usually) | Yes | The modern replacement for the CH340G. Requires an external crystal-less design. Logic is strictly 5V unless a level shifter is onboard. |
| Silicon Labs CP2102N | 3.3V | 3.3V | Yes | Native 3.3V regulator. Safe for ESP32 and nRF52 boards directly. VCC pin cannot supply high current (>100mA). |
| Prolific PL2303HX | 3.3V | 3.3V | Rarely | Older standard. Often lacks broken-out DTR/RTS pins, making it useless for automated ESP32 flashing without manual button presses. |
For authoritative electrical characteristics and absolute maximum ratings, always consult the specific silicon datasheets, such as the FTDI FT232R Datasheet or the Espressif ESP32 Datasheet.
Rows Makers Get Wrong & Tracing Faded Markings
Many cheap FT232RL clone boards output 5V on the VCC pin to power your breadboard, but output 3.3V logic on the TX pin because the VIO pin is internally or externally tied to the 3.3V regulator. Conversely, some boards output 5V logic while labeling the board "3.3V" because they only stepped down the VCC power rail, not the data lines. Always verify the TX pin voltage with a multimeter before connecting to a 3.3V microcontroller.
The Most Common Wiring Errors
- TX to TX / RX to RX: Beginners often connect identically named pins together. Remember that "TX" means "This pin transmits data." If two transmitters are connected together, they will collide and short out the GPIO drivers. TX must always cross over to RX.
- Ignoring the Common Ground: Serial data is referenced to ground. If you are powering your microcontroller from a separate wall-wart and only connecting the USB adapter's TX/RX lines without the GND wire, the logic thresholds will float, resulting in garbage characters in your serial monitor.
- Baud Rate Mismatch: Not a physical pinout error, but a protocol error. If your code initializes at 115200 baud but your serial monitor is set to 9600, you will see illegible symbols. The hardware wiring is correct, but the timing is off.
Safe Interpretation When Markings Are Faded or Missing
Cheap adapters frequently arrive with misprinted silkscreen, or the paint wears off after a few months on the bench. You can safely identify the pins using a standard digital multimeter (DMM):
- Find GND: Set your DMM to continuity mode. Place one probe on the metal shell of the USB Type-A connector and probe the header pins. The pin that beeps is your Ground.
- Find VCC (5V): Plug the adapter into a USB port. Set the DMM to DC Voltage. Place the black probe on your known GND pin and probe the remaining pins with the red probe. The pin reading a steady 4.8V to 5.2V is VCC.
- Find TX: With the adapter plugged in and idle (not actively sending data), measure the DC voltage on the remaining data pins relative to GND. The TX pin idles HIGH, so it will read either ~3.3V or ~5.0V. If you trigger a serial transmission from your PC while watching the meter, the TX pin voltage will drop slightly as it pulses low to send start bits.
- Find RX: The RX pin is an input and is typically high-impedance or pulled low internally. It will usually read 0V or a floating, unstable millivalue on a DMM.
Hardware Flow Control and Auto-Reset Wiring
Basic sensor logging only requires GND, TX, and RX. However, if you are flashing firmware to an Arduino or ESP32, you need the adapter to automatically trigger the bootloader. Doing this manually requires holding the BOOT/GPIO0 button while tapping the RESET/EN button—a frustrating process when compiling large projects.
Modern development boards (like the NodeMCU or ESP32 DevKit v1) use a clever transistor circuit that leverages the DTR and RTS pins from your USB-UART adapter to sequence the reset automatically. According to the WCH CH340 documentation, these handshake pins can be toggled via software drivers.
| DTR State | RTS State | Result on Target Microcontroller |
|---|---|---|
| Low | High | Pulls EN (Reset) LOW, holding the chip in reset. |
| High | Low | Pulls GPIO0 LOW (Boot mode) while releasing EN, allowing the chip to boot into the UART bootloader. |
| Low | Low | Normal operation (GPIO0 pulled HIGH via resistor, EN released). |
If your adapter lacks broken-out DTR and RTS pins, you cannot use auto-reset. You must either solder directly to the IC's microscopic pins (not recommended for hobbyists) or buy an adapter specifically marketed with "DTR/RTS Auto-Reset" support. When wiring a bare ESP32 module to an adapter with DTR/RTS, you must replicate the NodeMCU auto-reset circuit using two NPN transistors (like the 2N2222 or MMBT3904) to prevent the DTR and RTS lines from shorting each other out when they transition simultaneously.
Always verify your logic levels, cross your TX and RX lines, and ensure a solid common ground before applying power to your target board. A $5 USB-UART adapter is a highly capable bench tool, provided you respect the voltage thresholds of the silicon you are connecting it to.






