Documentation

ShillehTek FT232RL Mini USB to TTL Serial Converter 3.3V/5V Arduino (2pcs) | ShillehTek Product Manual
Documentation / ShillehTek FT232RL Mini USB to TTL Serial Converter 3.3V/5V Arduino (2pcs) | ShillehTek Product Manual

ShillehTek FT232RL Mini USB to TTL Serial Converter 3.3V/5V Arduino (2pcs) | ShillehTek Product Manual

Overview

The FT232RL Mini USB to TTL Serial Converter is a compact USB-to-UART adapter built around the popular FTDI FT232RL chip. It bridges your computer's USB port to a 3.3V or 5V TTL serial line, letting you talk to microcontrollers, flash firmware, and debug embedded devices without needing a dedicated programmer.

This module is the go-to tool for programming Arduino Pro Mini boards, flashing ESP8266 (ESP-01) modules, debugging Raspberry Pi serial consoles, and connecting any microcontroller's UART to a PC. A jumper on the board lets you select 3.3V or 5V output on the VCC pin, so the same module works safely with both logic levels.

FTDI chips are well supported across Windows, macOS, and Linux. Drivers are bundled with most operating systems, and tools like the Arduino IDE, esptool.py, PuTTY, and minicom recognize the converter as a standard COM/tty serial port the moment you plug it in.

At a Glance

Driver Chip
FTDI FT232RL
Logic Level
3.3V / 5V (jumper)
USB Port
Mini USB 2.0
Max Baud Rate
3 Mbps
Main Pins
DTR, RX, TX, VCC, CTS, GND
Use Cases
Arduino, ESP8266, Debug

Specifications

Parameter Value
Driver IC FTDI FT232RL
USB Interface USB 2.0 Full Speed (Mini USB)
Power Source USB bus-powered (5V from host)
VCC Output 3.3V or 5V (jumper selectable)
Logic Levels (TX/RX) Match selected VCC (3.3V or 5V)
Operating Current ~40-50 mA typical
Maximum Baud Rate 3 Mbps (3,000,000 baud)
Data Format 5/6/7/8 data bits, 1/1.5/2 stop bits
Parity None / Odd / Even / Mark / Space
Indicator LEDs Power, TX, RX
OS Support Windows, macOS, Linux (FTDI VCP)
Operating Temperature 0°C to 60°C

Pinout Diagram

FT232RL USB to Serial UART Module pinout diagram showing DTR, RX, TX, VCC, CTS, GND main header pins, GND, TXL, RXL, 5V, 3.3V, CTS, SLEEP, TXDEN, PWREN top pins, TXD, RTS, VCC, RXD, RI, GND, DSR, DCD bottom pins, voltage select jumper, RX-TX communication LEDs, power LED, and Mini USB port

The 6-pin main header on the left side is what you'll use for almost every project: DTR, RX, TX, VCC, CTS, GND. The extra pads around the FT232RL chip expose advanced FTDI signals (RTS, DSR, DCD, RI, TXDEN, SLEEP, PWREN) for users who need full RS-232-style flow control. The yellow jumper near the chip selects whether VCC outputs 3.3V or 5V — set it before powering the board.

Wiring Guide

Programming an Arduino Pro Mini

The Arduino Pro Mini has no onboard USB, so you flash sketches through a USB-to-serial adapter. The FT232RL connects to the Pro Mini's 6-pin programming header, and the DTR pin handles the auto-reset that triggers the bootloader.

FT232RL Pin Pro Mini Pin
DTR DTR (GRN)
RX TXO
TX RXI
VCC VCC
CTS (not connected)
GND GND (BLK)
Warning: Match the FT232RL voltage jumper to the Pro Mini you have. A 5V Pro Mini needs the jumper on 5V; a 3.3V Pro Mini needs the jumper on 3.3V. Powering a 3.3V Pro Mini from 5V can damage the regulator and any 3.3V peripherals attached.
Tip: Notice that RX on one device connects to TX on the other (and vice versa). UART pins are always crossed. If your sketches don't upload, swap RX and TX before doing anything else.

Flashing an ESP-01 / ESP8266

The ESP-01 module is 3.3V only. Set the FT232RL voltage jumper to 3.3V before connecting anything. To enter flash mode, GPIO0 must be pulled to GND while the module powers on or resets.

FT232RL Pin ESP-01 Pin Details
VCC (3.3V) VCC Also connect to CH_PD
GND GND Also tie GPIO0 to GND for flashing
TX RX UART crossover
RX TX UART crossover
(unused) RST Pulse to GND momentarily to reset
Warning: Set the voltage jumper to 3.3V for the ESP-01. Applying 5V to the ESP-01's VCC pin will permanently damage the module. Never plug the ESP-01 into a 5V FT232RL.
Info: The FT232RL's 3.3V output may not supply enough current for sustained ESP8266 transmission (peaks can exceed 200 mA). For reliable flashing, power the ESP-01 from an external 3.3V regulator and only connect TX, RX, and GND to the FT232RL.

Raspberry Pi Serial Console

You can use the FT232RL to access the Raspberry Pi's serial console without a network connection. This is invaluable for headless Pi setup and debugging boot issues. The Pi's UART runs at 3.3V, so set the FT232RL jumper to 3.3V.

FT232RL Pin Raspberry Pi Pin Details
GND Pin 6 (GND) Common ground required
TX Pin 10 (GPIO 15 / RXD) UART crossover
RX Pin 8 (GPIO 14 / TXD) UART crossover
VCC (do NOT connect) Pi has its own power supply
Warning: Do NOT connect the FT232RL VCC to the Raspberry Pi. The Pi has its own power supply, and connecting two power sources can damage either board. Only TX, RX, and GND should be wired.
Tip: Enable the serial console in raspi-config under "Interface Options → Serial Port". Then open a terminal at 115200 baud (e.g., screen /dev/ttyUSB0 115200 or PuTTY on Windows).

Loopback Test

The fastest way to confirm a new FT232RL works is the loopback test. With nothing else connected, jumper TX to RX. Anything you type in a terminal program should echo straight back to you.

FT232RL Pin Connect To
TX RX (jumper directly)
GND (no external connection needed)
Tip: Open a terminal program (Arduino Serial Monitor, PuTTY, screen) at 9600 baud and type characters. If they echo back to you, the chip and USB driver are both working. If you see no echo, the cable is data-only or the OS driver may need installing.

Code Examples

Arduino IDE: Upload to Pro Mini

blink_promini.ino
// Blink sketch for Arduino Pro Mini, uploaded via FT232RL
// Steps in Arduino IDE:
//  1. Tools -> Board: Arduino Pro or Pro Mini
//  2. Tools -> Processor: ATmega328P (5V, 16 MHz) or (3.3V, 8 MHz)
//  3. Tools -> Port: select the FT232RL COM/tty port
//  4. Click Upload

const int LED = 13;

void setup() {
  pinMode(LED, OUTPUT);
  Serial.begin(9600);
  Serial.println("Pro Mini online via FT232RL");
}

void loop() {
  digitalWrite(LED, HIGH);
  delay(500);
  digitalWrite(LED, LOW);
  delay(500);
}

Python: Read Serial Data on Any Platform

read_serial.py
#!/usr/bin/env python3
# Read lines from any device connected to the FT232RL.
# Install dependency: pip install pyserial

import serial
import time

# Replace with your port:
#   Linux/macOS: '/dev/ttyUSB0' (Linux) or '/dev/tty.usbserial-XXXX' (macOS)
#   Windows:    'COM3', 'COM4', etc.
PORT = '/dev/ttyUSB0'
BAUD = 9600

with serial.Serial(PORT, BAUD, timeout=1) as ser:
    time.sleep(2)  # let the device reset on DTR toggle
    print(f"Listening on {PORT} at {BAUD} baud. Ctrl+C to stop.")
    try:
        while True:
            line = ser.readline().decode('utf-8', errors='replace').rstrip()
            if line:
                print(line)
    except KeyboardInterrupt:
        print("\nStopped.")

esptool.py: Flash an ESP8266

flash_esp01.sh
# Flash a firmware image to an ESP-01 / ESP8266 via the FT232RL.
# Requires: pip install esptool
# Hold GPIO0 to GND while powering on the ESP-01 to enter flash mode.

# 1. Verify the ESP8266 is responding
esptool.py --port /dev/ttyUSB0 --baud 115200 chip_id

# 2. Erase existing flash (optional but recommended)
esptool.py --port /dev/ttyUSB0 --baud 115200 erase_flash

# 3. Write new firmware (replace path with your .bin file)
esptool.py --port /dev/ttyUSB0 --baud 115200 write_flash 0x00000 firmware.bin

# After flashing: disconnect GPIO0 from GND and reset the ESP-01 to run.

Linux/macOS: Open a Terminal Console

console.sh
# Find the FT232RL port (Linux: /dev/ttyUSB*; macOS: /dev/tty.usbserial-*)
ls /dev/ttyUSB* 2>/dev/null
ls /dev/tty.usbserial-* 2>/dev/null

# Open a serial console at 115200 baud (common for Raspberry Pi)
# Linux/macOS: screen
screen /dev/ttyUSB0 115200

# Exit screen with: Ctrl+A then K, then Y to confirm.

# Alternative: minicom (Linux)
sudo apt install minicom
minicom -D /dev/ttyUSB0 -b 115200

Frequently Asked Questions

Do I need to install drivers for the FT232RL?
Modern versions of Windows 10/11, macOS, and Linux include the FTDI VCP driver out of the box. Plug the module in and it should appear as a COM port (Windows) or /dev/tty.usbserial (macOS/Linux). If your system doesn't recognize it, download the official VCP driver from FTDI's website. Older Windows 7 systems often need a manual install.
What's the difference between the 3.3V and 5V jumper settings?
The jumper sets both the VCC output voltage and the TX/RX logic level. Use 5V for classic Arduino Uno/Nano/Pro Mini 5V boards. Use 3.3V for ESP8266, ESP32, Raspberry Pi UART, and 3.3V Pro Mini. Mismatched levels can damage 3.3V devices, so check the jumper before plugging anything in.
Why isn't my Arduino Pro Mini uploading?
The most common cause is a missing DTR connection. The Pro Mini relies on DTR to auto-reset and enter the bootloader. Make sure DTR on the FT232RL connects to DTR (often labeled GRN) on the Pro Mini. Also verify TX and RX are crossed (FT232RL TX to Pro Mini RXI, FT232RL RX to Pro Mini TXO).
Can the FT232RL power my project from USB?
Yes for low-power sensors and small microcontrollers — the module can supply roughly 50-100 mA from the VCC pin. For higher current loads like motors, ESP modules under transmission, or many LEDs, use an external power supply and only connect TX, RX, and GND to the FT232RL.
What baud rates does the FT232RL support?
The FT232RL supports any standard baud rate from 300 baud up to 3 Mbps, including non-standard rates. For most embedded work you'll use 9600 or 115200. The Raspberry Pi serial console defaults to 115200, and esptool.py for ESP8266/ESP32 commonly uses 115200 or 460800.
Can I use this module to communicate between two computers?
Yes. Plug one FT232RL into each computer, connect their TX/RX/GND lines together (with TX and RX crossed), and you have a basic UART link. This is sometimes called "USB to USB serial" and is useful for null-modem-style file transfer or device emulation.
Why do my characters come out as garbage?
Almost always a baud rate mismatch — the device is sending at one rate (e.g., 115200) and your terminal is reading at another (e.g., 9600). Check both ends use the same baud rate. Less commonly, a voltage mismatch (5V module talking to 3.3V device) can corrupt characters; use the jumper to match the target's logic level.