ESP32 อัปโหลดโค้ดไม่ได้ (Failed to connect) แก้ทีละขั้น

ESP32 ขึ้น Failed to connect ตอนอัปโหลด ไล่เช็กทีละขั้น ทั้งสาย USB, driver CP2102 / CH340, ปุ่ม BOOT และขา strapping ที่ทำให้อัปโหลดไม่ได้

อัปเดต 2026-11-02

ข้อความ Failed to connect to ESP32 แปลว่าโปรแกรมอัปโหลดคุยกับชิปไม่ได้ สาเหตุที่พบบ่อยที่สุดเรียงตามลำดับคือ สาย USB ส่งข้อมูลไม่ได้, ไม่มี driver, ชิปไม่เข้าโหมดอัปโหลด (แก้ด้วยการกดปุ่ม BOOT ค้าง) และอุปกรณ์ที่ต่อไว้กับขา strapping ทำตามขั้นตอนด้านล่างทีละข้อ ส่วนใหญ่จะเจอสาเหตุภายใน 5 นาที

ข้อความ error ที่เจอบ่อย

ข้อความมักเกิดจาก
Failed to connect to ESP32: Timed out waiting for packet headerชิปไม่เข้าโหมดอัปโหลด (ขั้นที่ 4) หรืออุปกรณ์ดึงขา strapping (ขั้นที่ 5)
Wrong boot mode detected (0x13)! The chip needs to be in download mode.ชิปบูตเข้าโปรแกรมปกติแทนโหมดอัปโหลด: กด BOOT ค้าง (ขั้นที่ 4)
Could not open COM3, the port doesn't exist หรือ No such file or directory: /dev/ttyUSB0เลือกพอร์ตผิด หรือคอมพิวเตอร์มองไม่เห็นบอร์ด (ขั้นที่ 1–2)
Access is denied / port is busyโปรแกรมอื่นเปิดพอร์ตค้างไว้ (ขั้นที่ 3)

1. คอมพิวเตอร์เห็นบอร์ดไหม

ถอดแล้วเสียบ USB ใหม่ ดูว่ามีพอร์ตใหม่โผล่ขึ้นมาหรือไม่

ถ้าไม่มีพอร์ตใหม่เลย และไฟ LED บนบอร์ดติด แปลว่าบอร์ดได้ไฟแต่ไม่ได้ข้อมูล: ไปขั้นที่ 2

2. สาย USB และ driver

3. เลือกบอร์ดและพอร์ตใน Arduino IDE

4. กดปุ่ม BOOT ค้างตอน "Connecting..."

ESP32 จะเข้าโหมดอัปโหลดได้เมื่อขา GPIO 0 เป็น LOW ตอนรีเซ็ต ปกติวงจร auto-reset บนบอร์ดจัดการให้ แต่บอร์ดราคาถูกหลายรุ่นทำงานไม่ทันจังหวะ ให้ทำแบบนี้:

  1. กด Upload แล้วรอจนเห็น Connecting........_____
  2. กดปุ่ม BOOT (บางบอร์ดเขียนว่า IO0) ค้างไว้
  3. ปล่อยเมื่อเห็นเปอร์เซ็นต์ Writing at 0x… เริ่มขึ้น
  4. อัปโหลดเสร็จแล้วกดปุ่ม EN (RST) หนึ่งครั้งเพื่อรันโปรแกรม
แก้ถาวร บัดกรีตัวเก็บประจุอิเล็กโทรไลต์ 10 µF ระหว่างขา EN กับ GND (ขาลบลง GND) จะหน่วงจังหวะรีเซ็ตให้ช้าลงพอที่บอร์ดจะเข้าโหมดอัปโหลดเองได้ ไม่ต้องกดปุ่มอีก

5. ขา strapping: ต่อของไว้แล้วอัปโหลดไม่ได้

ถ้าบอร์ดเปล่าอัปโหลดได้ แต่พอต่อเข้ากับวงจรหุ่นแล้วอัปโหลดไม่ได้ ให้สงสัยขา strapping ขาเหล่านี้ถูกอ่านค่าตอนบูตเพื่อเลือกโหมดการทำงาน อุปกรณ์ที่ดึงขาเป็น HIGH หรือ LOW ค้างไว้จึงเปลี่ยนโหมดได้

ขาต้องเป็นอะไรตอนบูตถ้ามีอุปกรณ์ดึงไว้
GPIO 0LOW = โหมดอัปโหลด, HIGH = รันโปรแกรมปุ่มหรือเซนเซอร์ที่ดึงขาไว้ทำให้บูตผิดโหมดตลอด
GPIO 2LOW หรือปล่อยลอยตอนอัปโหลดอุปกรณ์ที่ดึงเป็น HIGH ทำให้เข้าโหมดอัปโหลดไม่ได้
GPIO 12 (MTDI)LOWถ้าเป็น HIGH ชิปตั้งแรงดัน flash เป็น 1.8 V แล้วบูตไม่ขึ้น หรืออ่าน flash ผิด
GPIO 15 (MTDO)HIGH (มี pull-up ในตัว)ถ้าถูกดึง LOW ข้อความตอนบูตจะหายไป และบางกรณีกระทบการอัปโหลด
GPIO 5HIGH (มี pull-up ในตัว)มักไม่เป็นปัญหากับบอร์ด DevKit แต่ควรเลี่ยงอุปกรณ์ที่ดึงเป็น LOW
GPIO 1, 3 (TX0, RX0)ใช้เป็นสาย Serial ของ USBอุปกรณ์ที่ต่อไว้ชนกับข้อมูลที่อัปโหลด: ห้ามใช้ขานี้กับเซนเซอร์

วิธีทดสอบเร็วที่สุด: ถอดสายที่ต่อกับขาเหล่านี้ออกทั้งหมด อัปโหลดให้ได้ก่อน แล้วค่อยย้ายอุปกรณ์ไปขาอื่น ขาที่ปลอดภัยสำหรับใช้ทั่วไปบน DevKit คือ GPIO 4, 13, 14, 16–19, 21–23, 25–27, 32, 33 และ GPIO 34–39 สำหรับ input อย่างเดียว (GPIO 6–11 ต่อกับ flash ภายในอยู่แล้ว ห้ามใช้)

ตัวจำลองตรวจข้อนี้ให้ในหน้า Wiring ตัวอย่างนี้คือหุ่นหาแสงที่มีเซนเซอร์และจอเยอะจนต้องใช้ขา strapping สองขา:

ดูคำเตือนขา strapping ในตัวจำลอง →

6. ยังไม่ได้อีก

ชิ้นส่วน

บอร์ดในบทความนี้คือ ESP32 DevKit V1 แบบ 30 ขา ซึ่งเป็นบอร์ดที่ตัวจำลองใช้ จัดขาให้เลี่ยงขา strapping ไว้ก่อนเสมอ:

ชิ้นส่วนสำหรับ ESP32 DevKit V1
ชิ้นส่วนจำนวนราคาประมาณร้าน
ESP32 DevKit V1 (30 ขา)1฿130–฿250Shopee
TB6612FNG motor driver1฿50–฿120Shopee
ชุดแชสซี 2WD
มีมอเตอร์ TT 2 ตัว ล้อ 2 ล้อ และล้อ caster
1฿150–฿300Shopee
ถ่าน Li-ion 186502฿60–฿150Shopee
รางถ่าน 18650 แบบ 2 ก้อน (2S)1฿20–฿60Shopee
Buck converter 7.4 V → 5 V 3 A1฿30–฿90Shopee
สวิตช์เปิด-ปิด1฿5–฿20Shopee
สายจัมเปอร์ ผู้-ผู้ / ผู้-เมีย ชุด 40 เส้น1฿30–฿60Shopee
แนะนำเพิ่ม
ที่ชาร์จถ่าน 186501฿100–฿250Shopee
รวมโดยประมาณ฿535–฿1,200

ราคาประมาณการ ณ 2026-10-31 ยังไม่ได้ตรวจกับร้าน · บางลิงก์เป็นลิงก์ affiliate (อ่านเพิ่ม)