252 lines
5.9 KiB
Markdown
252 lines
5.9 KiB
Markdown
a# USB-to-Serial Adapters for 6-Pin Programming Header
|
|
|
|
## What You Need
|
|
|
|
For the 6-pin programming header, you need a **USB-to-Serial adapter** that has:
|
|
- ✅ **VCC** (or 3.3V) - Optional, for powering ESP32
|
|
- ✅ **GND** - Required
|
|
- ✅ **TX** (Transmit) - Required
|
|
- ✅ **RX** (Receive) - Required
|
|
- ✅ **DTR** (Data Terminal Ready) - Required for auto-reset
|
|
- ✅ **RTS** (Request To Send) - Required for auto-reset
|
|
|
|
**Important:** The adapter **MUST have DTR and RTS pins** for automatic reset to work.
|
|
|
|
---
|
|
|
|
## Recommended USB-to-Serial Adapters
|
|
|
|
### 1. **CP2102** (Recommended) ⭐
|
|
|
|
**Why it's good:**
|
|
- Very common and reliable
|
|
- Excellent driver support (Windows, Linux, macOS)
|
|
- Usually has all 6 pins (VCC, GND, TX, RX, DTR, RTS)
|
|
- Good quality, stable operation
|
|
- 3.3V logic levels (perfect for ESP32)
|
|
|
|
**Common boards:**
|
|
- CP2102 USB-to-Serial breakout boards
|
|
- Available from many manufacturers
|
|
- Usually $2-5 USD
|
|
|
|
**Example products:**
|
|
- Generic CP2102 breakout boards (AliExpress, eBay, Amazon)
|
|
- SparkFun CP2102 Breakout
|
|
- Adafruit CP2102 Friend
|
|
|
|
---
|
|
|
|
### 2. **CH340** (Budget Option)
|
|
|
|
**Why it's good:**
|
|
- Very cheap ($1-2 USD)
|
|
- Common in China-made boards
|
|
- Good Linux support
|
|
- Usually has all 6 pins
|
|
|
|
**Common boards:**
|
|
- CH340G USB-to-Serial modules
|
|
- Very common on cheap Arduino clones
|
|
- Available everywhere
|
|
|
|
**Note:** May need driver installation on Windows/macOS
|
|
|
|
---
|
|
|
|
### 3. **FT232RL** (Premium Option)
|
|
|
|
**Why it's good:**
|
|
- Premium quality
|
|
- Excellent driver support
|
|
- Very reliable
|
|
- Professional grade
|
|
- Usually $5-10 USD
|
|
|
|
**Common boards:**
|
|
- FTDI FT232RL breakout boards
|
|
- SparkFun FT232RL Breakout
|
|
- Adafruit FT232H (more advanced)
|
|
|
|
---
|
|
|
|
### 4. **CH341** (Alternative)
|
|
|
|
**Why it's good:**
|
|
- Similar to CH340
|
|
- Usually cheaper
|
|
- Good Linux support
|
|
- Usually has all 6 pins
|
|
|
|
**Note:** May need driver installation
|
|
|
|
---
|
|
|
|
## What to Look For
|
|
|
|
### Required Features:
|
|
1. **DTR pin** - Must be present (for auto-reset)
|
|
2. **RTS pin** - Must be present (for auto-reset)
|
|
3. **3.3V logic levels** - ESP32 uses 3.3V (not 5V)
|
|
4. **Standard pinout** - Easy to connect
|
|
|
|
### Pin Configuration:
|
|
Most USB-to-Serial adapters have this pinout:
|
|
```
|
|
VCC - Power (3.3V or 5V)
|
|
GND - Ground
|
|
TX - Transmit (to ESP32 RX)
|
|
RX - Receive (from ESP32 TX)
|
|
DTR - Data Terminal Ready
|
|
RTS - Request To Send
|
|
```
|
|
|
|
---
|
|
|
|
## Where to Buy
|
|
|
|
### Online:
|
|
- **AliExpress** - Very cheap ($1-3), ships from China
|
|
- **eBay** - Good prices, various sellers
|
|
- **Amazon** - Faster shipping, slightly higher prices
|
|
- **SparkFun** - Quality boards, higher prices
|
|
- **Adafruit** - Quality boards, higher prices
|
|
- **Digi-Key/Mouser** - Professional components
|
|
|
|
### Local:
|
|
- Electronics stores
|
|
- Maker/hacker spaces
|
|
- Local electronics suppliers
|
|
|
|
---
|
|
|
|
## Price Comparison
|
|
|
|
| Adapter | Price (typical) | Quality | Driver Support |
|
|
|---------|----------------|---------|----------------|
|
|
| **CH340** | $1-2 | Good | May need drivers |
|
|
| **CP2102** | $2-5 | Excellent | Excellent |
|
|
| **FT232RL** | $5-10 | Premium | Excellent |
|
|
| **CH341** | $1-2 | Good | May need drivers |
|
|
|
|
**Recommendation:** CP2102 is the sweet spot - good quality, good price, excellent support.
|
|
|
|
---
|
|
|
|
## Connection Example
|
|
|
|
### CP2102 Breakout Board to J2 Header:
|
|
|
|
| CP2102 Pin | J2 Pin | Signal |
|
|
|------------|--------|--------|
|
|
| VCC (3.3V) | Pin 1 | +3V3 (optional) |
|
|
| GND | Pin 2 | GND |
|
|
| RX | Pin 3 | UART_TX (ESP32 TX) |
|
|
| TX | Pin 4 | UART_RX (ESP32 RX) |
|
|
| DTR | Pin 5 | DTR (GPIO0) |
|
|
| RTS | Pin 6 | RTS (EN) |
|
|
|
|
**Note:** RX/TX are swapped - CP2102 RX connects to ESP32 TX, and vice versa.
|
|
|
|
---
|
|
|
|
## Driver Installation
|
|
|
|
### CP2102:
|
|
- **Windows:** Usually auto-installs, or download from Silicon Labs
|
|
- **Linux:** Usually works out-of-the-box (built into kernel)
|
|
- **macOS:** Usually auto-installs, or download from Silicon Labs
|
|
|
|
### CH340:
|
|
- **Windows:** May need driver download
|
|
- **Linux:** Usually works out-of-the-box
|
|
- **macOS:** May need driver download
|
|
|
|
### FT232RL:
|
|
- **Windows/Linux/macOS:** Excellent driver support, usually auto-installs
|
|
|
|
---
|
|
|
|
## Testing Your Adapter
|
|
|
|
After connecting, test with:
|
|
|
|
```bash
|
|
# Check if device is detected
|
|
ls /dev/ttyUSB* # Linux
|
|
# or
|
|
ls /dev/cu.* # macOS
|
|
|
|
# Test with esptool
|
|
esptool.py --port /dev/ttyUSB0 chip_id
|
|
```
|
|
|
|
If it works, you'll see the ESP32 chip ID.
|
|
|
|
---
|
|
|
|
## Common Issues
|
|
|
|
### Problem: Adapter doesn't have DTR/RTS
|
|
**Solution:** You'll need to manually press buttons (use 4-pin header instead)
|
|
|
|
### Problem: Adapter is 5V logic
|
|
**Solution:** ESP32 can handle 5V on UART pins (they're 5V tolerant), but 3.3V is safer
|
|
|
|
### Problem: Driver not working
|
|
**Solution:** Download drivers from manufacturer website
|
|
|
|
### Problem: Device not detected
|
|
**Solution:**
|
|
- Check USB cable (some are power-only)
|
|
- Try different USB port
|
|
- Check drivers are installed
|
|
- On Linux: Check user is in `dialout` group
|
|
|
|
---
|
|
|
|
## My Recommendation
|
|
|
|
**Get a CP2102 USB-to-Serial adapter** because:
|
|
- ✅ Excellent quality and reliability
|
|
- ✅ Good price ($2-5)
|
|
- ✅ Excellent driver support
|
|
- ✅ Usually has all 6 pins (VCC, GND, TX, RX, DTR, RTS)
|
|
- ✅ 3.3V logic levels (perfect for ESP32)
|
|
- ✅ Very common and easy to find
|
|
|
|
**Where to buy:**
|
|
- AliExpress: Search "CP2102 USB to Serial"
|
|
- Amazon: Search "CP2102 breakout"
|
|
- eBay: Search "CP2102 module"
|
|
|
|
**What to look for:**
|
|
- Make sure it has DTR and RTS pins
|
|
- 3.3V logic levels (or jumper-selectable)
|
|
- Standard pinout
|
|
|
|
---
|
|
|
|
## Alternative: Use Existing Adapter
|
|
|
|
If you already have a USB-to-Serial adapter:
|
|
1. Check if it has DTR and RTS pins
|
|
2. If yes → Use 6-pin header (automatic reset)
|
|
3. If no → Use 4-pin header (manual buttons)
|
|
|
|
Most modern USB-to-Serial adapters have DTR and RTS, so 6-pin header is usually the better choice.
|
|
|
|
---
|
|
|
|
## Summary
|
|
|
|
**For 6-pin programming header, you need:**
|
|
- USB-to-Serial adapter with **DTR and RTS pins**
|
|
- **Recommended:** CP2102 adapter ($2-5)
|
|
- **Budget option:** CH340 adapter ($1-2)
|
|
- **Premium option:** FT232RL adapter ($5-10)
|
|
|
|
**All of these will work** - CP2102 is the best balance of price and quality.
|
|
|
|
|