Files
ESP_Midea/Midea_ESP/PROGRAMMING_HEADER_COMPARISON.md
2026-01-06 02:05:24 +02:00

3.9 KiB

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!


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)
  • 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.