Initial KiCad project
This commit is contained in:
153
Midea_ESP/PROGRAMMING_HEADER_COMPARISON.md
Normal file
153
Midea_ESP/PROGRAMMING_HEADER_COMPARISON.md
Normal file
@@ -0,0 +1,153 @@
|
||||
# Programming Header: 4-Pin vs 6-Pin Comparison
|
||||
|
||||
## Quick Answer
|
||||
|
||||
**You can use a 4-pin header** if you're okay with manually pressing buttons during flashing. However, **6-pin header is recommended** because it enables automatic reset (no buttons needed).
|
||||
|
||||
---
|
||||
|
||||
## 4-Pin Header (Minimal)
|
||||
|
||||
### Pinout:
|
||||
```
|
||||
Pin 1: +3V3 (optional)
|
||||
Pin 2: GND
|
||||
Pin 3: UART_TX (ESP32 GPIO1)
|
||||
Pin 4: UART_RX (ESP32 GPIO3)
|
||||
```
|
||||
|
||||
### Pros:
|
||||
- ✅ Simpler (fewer pins)
|
||||
- ✅ Lower cost (smaller header)
|
||||
- ✅ Works for basic flashing
|
||||
|
||||
### Cons:
|
||||
- ❌ **Must manually press buttons** every time you flash
|
||||
- ❌ More error-prone (easy to miss timing)
|
||||
- ❌ Slower workflow
|
||||
|
||||
### Flashing Process (4-Pin):
|
||||
1. Connect USB-to-Serial adapter (VCC, GND, TX, RX only)
|
||||
2. Power board (via J1 or J2 Pin 1)
|
||||
3. **Hold SW2 (Boot button)** - pulls GPIO0 LOW
|
||||
4. **Press and release SW1 (Reset button)** - resets ESP32
|
||||
5. **Release SW2** after 1-2 seconds
|
||||
6. ESP32 enters download mode
|
||||
7. Run `esptool` or ESPHome to flash
|
||||
8. **Press SW1 (Reset)** again to restart
|
||||
|
||||
**You must do steps 3-5 every time you flash!**
|
||||
|
||||
---
|
||||
|
||||
## 6-Pin Header (Recommended)
|
||||
|
||||
### Pinout:
|
||||
```
|
||||
Pin 1: +3V3 (optional)
|
||||
Pin 2: GND
|
||||
Pin 3: UART_TX (ESP32 GPIO1)
|
||||
Pin 4: UART_RX (ESP32 GPIO3)
|
||||
Pin 5: DTR (ESP32 GPIO0)
|
||||
Pin 6: RTS (ESP32 EN)
|
||||
```
|
||||
|
||||
### Pros:
|
||||
- ✅ **Automatic reset** - no buttons needed
|
||||
- ✅ Faster and easier flashing
|
||||
- ✅ Less error-prone
|
||||
- ✅ Standard for ESP32 development
|
||||
- ✅ Works with all flashing tools automatically
|
||||
|
||||
### Cons:
|
||||
- ❌ 2 extra pins (minimal cost difference)
|
||||
- ❌ Slightly larger header
|
||||
|
||||
### Flashing Process (6-Pin):
|
||||
1. Connect USB-to-Serial adapter (all 6 pins)
|
||||
2. Power board (via J1 or J2 Pin 1)
|
||||
3. **Just run `esptool` or ESPHome** - that's it!
|
||||
4. DTR/RTS automatically handle reset and boot mode
|
||||
5. No buttons needed!
|
||||
|
||||
**Much easier!**
|
||||
|
||||
---
|
||||
|
||||
## Recommendation
|
||||
|
||||
### Use 4-Pin If:
|
||||
- You only flash firmware occasionally
|
||||
- You don't mind pressing buttons
|
||||
- You want absolute minimal component count
|
||||
- Cost is critical (though difference is minimal)
|
||||
|
||||
### Use 6-Pin If (Recommended):
|
||||
- You flash firmware regularly
|
||||
- You want convenience
|
||||
- You want standard ESP32 development workflow
|
||||
- You want automatic reset (most common setup)
|
||||
|
||||
---
|
||||
|
||||
## Cost Comparison
|
||||
|
||||
| Header Type | Cost (typical) | Difference |
|
||||
|-------------|----------------|------------|
|
||||
| 4-pin header | ~$0.05 | - |
|
||||
| 6-pin header | ~$0.07 | +$0.02 |
|
||||
|
||||
**Difference is negligible** (~$0.02 per board)
|
||||
|
||||
---
|
||||
|
||||
## Component Count
|
||||
|
||||
| Option | Header Pins | Resistors | Total Components |
|
||||
|--------|-------------|-----------|------------------|
|
||||
| 4-pin | 4 | 0 | 1 component |
|
||||
| 6-pin | 6 | 2 (optional) | 1-3 components |
|
||||
|
||||
**6-pin with optional pull-ups:** Adds 2 resistors (R5, R6) - but these are optional
|
||||
|
||||
---
|
||||
|
||||
## My Recommendation
|
||||
|
||||
**Use 6-pin header** because:
|
||||
1. **Only $0.02 more expensive** (negligible)
|
||||
2. **Much more convenient** - no button pressing
|
||||
3. **Standard practice** for ESP32 development
|
||||
4. **Pull-up resistors are optional** - you can skip R5 and R6 if you want
|
||||
5. **Saves time** - especially if you flash multiple times during development
|
||||
|
||||
**If you really want minimal:** Use 4-pin, but you'll need to press buttons every time you flash.
|
||||
|
||||
---
|
||||
|
||||
## Updated Component List for 4-Pin Option
|
||||
|
||||
If you choose 4-pin header:
|
||||
|
||||
| Ref | Component | Library | Symbol | Value | Notes |
|
||||
|-----|-----------|---------|--------|-------|-------|
|
||||
| J2 | Header | `Connector_PinHeader_2.54mm` | `PinHeader_1x04_P2.54mm_Vertical` | - | 4-pin programming header |
|
||||
|
||||
**Connections:**
|
||||
- J2 Pin 1 → +3V3 (optional)
|
||||
- J2 Pin 2 → GND
|
||||
- J2 Pin 3 → Net Label `UART_TX` → U2.GPIO1
|
||||
- J2 Pin 4 → Net Label `UART_RX` → U2.GPIO3
|
||||
|
||||
**No R5, R6 resistors needed** (they're only for DTR/RTS pull-ups)
|
||||
|
||||
---
|
||||
|
||||
## Summary
|
||||
|
||||
**4-Pin:** Works, but requires manual button pressing every flash
|
||||
**6-Pin:** Recommended - automatic reset, standard practice, only $0.02 more
|
||||
|
||||
**My vote:** Go with 6-pin for the convenience, especially since the cost difference is minimal.
|
||||
|
||||
|
||||
Reference in New Issue
Block a user