ESP32 không nhận cổng COM, lỗi Failed to connect, phải giữ nút BOOT: nguyên nhân và cách sửa

Cách sửa ESP32 không nhận cổng COM, lỗi Failed to connect, Wrong boot mode, phải giữ nút BOOT, nạp xong không chạy: dây USB, driver, chân khởi động, tụ 10 µF ở chân EN, bảng tra thông báo lỗi.

Cắm ESP32 vào máy tính mà Arduino IDE không có cổng COM, hoặc bấm Upload thì báo Failed to connect to ESP32, là lỗi người mới gặp nhiều nhất. Phần lớn trường hợp không phải mạch hỏng mà do dây USB, driver, cách vào chế độ nạp hoặc module nối vào chân khởi động. Bài viết chia lỗi thành ba nhóm, mỗi nhóm có cách kiểm tra từng bước, kèm bảng tra các thông báo lỗi thường gặp.

1. Lỗi thuộc nhóm nào?

Sơ đồ tìm lỗi ESP32: đèn nguồn không sáng là lỗi nguồn; không có cổng COM là nhóm A; nạp code lỗi là nhóm B; nạp xong không chạy là nhóm C
Đi từ trên xuống, câu đầu tiên trả lời Không cho biết nhóm lỗi (hình tự vẽ).
  • Nhóm A: máy tính không thấy cổng COM của mạch.
  • Nhóm B: có cổng COM nhưng bấm Upload thì báo lỗi.
  • Nhóm C: nạp xong nhưng chương trình không chạy, hoặc mạch khởi động lại liên tục.

2. Nhóm A: máy tính không thấy cổng COM

2.1. Dây USB chỉ sạc, không truyền dữ liệu

Mặt cắt minh họa dây USB có truyền dữ liệu gồm 4 sợi 5V GND D+ D− và dây chỉ sạc chỉ có 2 sợi 5V GND
Dây chỉ sạc thiếu hai sợi dữ liệu D+, D− (hình tự vẽ).

Đây là nguyên nhân số một. Dây chỉ sạc vẫn cấp nguồn nên đèn trên mạch sáng bình thường, nhưng máy tính không thấy thiết bị nào. Đổi sang dây USB nạp code có truyền dữ liệu, hoặc thử dây đang chép được ảnh từ điện thoại sang máy tính.

2.2. Cổng USB của máy tính, bộ chia USB

Cắm thẳng vào cổng USB trên thân máy (máy bàn nên dùng cổng phía sau). Bộ chia USB không có nguồn riêng, cổng USB phía trước vỏ máy hay dây nối dài thường làm tín hiệu chập chờn. Thử thêm một cổng USB khác trước khi kết luận.

2.3. Chưa có driver hoặc driver lỗi

Mở Device Manager: nếu mạch nằm trong Other devices với dấu chấm than vàng, máy thấy mạch nhưng chưa có driver. Cài driver CP210x cho mạch chip CP2102 hoặc CH341SER cho mạch chip CH340, rồi rút ra cắm lại. Cách nhận biết chip và cài từng loại driver có trong bài ESP32 CH340 hay CP2102 cùng loạt.

2.4. Unknown USB Device (Device Descriptor Request Failed)

Máy thấy có thiết bị cắm vào nhưng không đọc được thông tin. Thường do dây kém, cổng USB lỏng, cổng trên mạch bị bẩn hoặc lệch chân. Đổi dây và cổng; nếu thông báo vẫn còn với nhiều dây và nhiều máy, chip USB trên mạch có thể đã hỏng.

2.5. Đèn nguồn không sáng

  • Mạch Type-C cắm bằng dây Type-C sang Type-C (từ laptop đời mới hay củ sạc nhanh) có thể không được cấp nguồn nếu mạch thiếu điện trở 5,1 kΩ ở chân CC. Thử dây USB-A sang Type-C. Giải thích chi tiết trong bài vì sao cắm sạc Type-C không lên nguồn.
  • Mạch đang cắm trên breadboard hay đế ra chân có chỗ chập giữa 3V3, VIN và GND: rút mạch ra cắm riêng để thử.

2.6. Chip USB hoặc phần nguồn trên mạch hỏng

Sau khi thử dây tốt, nhiều cổng, nhiều máy mà vẫn không nhận, xem lại mạch đã từng bị cấp ngược nguồn, cấp 12 V vào chân VIN, 3V3 hoặc chạm dây nguồn tải vào chân GPIO chưa. Các trường hợp này có thể làm hỏng chip USB hoặc IC ổn áp.

3. Nhóm B: có cổng COM nhưng nạp báo lỗi

3.1. Giữ nút BOOT khi Connecting

Bình thường chip USB tự kéo GPIO0 xuống và reset ESP32 để vào chế độ nạp. Nếu cửa sổ Output đứng ở Connecting...... rồi báo lỗi: bấm Upload lại, nhấn giữ nút BOOT khi thấy chữ Connecting, thả ra khi bắt đầu ghi dữ liệu.

3.2. Module nối vào chân khởi động

Các chân khởi động GPIO2, GPIO5, GPIO12, GPIO15 trên ESP32 DevKit V1 30 chân và hậu quả khi bị kéo sai mức: GPIO0 thấp vào chế độ nạp, GPIO2 cao không nạp được, GPIO12 cao báo flash read err
Chân khởi động bị mạch ngoài kéo sai mức là lý do mạch "lúc nạp được, lúc không" (hình tự vẽ).

Nếu nạp được khi mạch để trống nhưng không nạp được khi đã nối module, kiểm tra các chân GPIO0, GPIO2, GPIO12 và TX0, RX0. Module relay, cảm biến có điện trở kéo lên nối vào GPIO2 hoặc GPIO12 là trường hợp hay gặp. Rút dây các chân này khi nạp, hoặc chuyển thiết bị sang chân khác. Danh sách chân nên dùng có trong bài sơ đồ chân ESP32 30 chân và 38 chân cùng loạt.

3.3. Lần nào cũng phải giữ BOOT: gắn tụ 10 µF ở chân EN

Tụ hóa 10 µF nối giữa chân EN và GND của ESP32 DevKit V1, chân dương vào EN, chân âm vào GND, giúp mạch tự vào chế độ nạp
Tụ 10 µF giữa EN và GND giúp mạch tự vào chế độ nạp (hình tự vẽ).

Một số mạch có mạch tự nạp hoạt động không ổn định với một số máy tính. Gắn tụ hóa 10 µF giữa chân EN (chân dương) và GND (chân âm) làm chân EN lên mức cao chậm hơn một chút, đủ để GPIO0 kịp được kéo xuống. Nếu mạch đang lắp trên đế ra chân ESP32, có thể cắm tụ vào hàng chân EN và GND trên đế.

3.4. Hạ tốc độ nạp

Dây dài hoặc dây kém có thể nạp lỗi giữa chừng ở tốc độ mặc định 921600. Vào Tools › Upload Speed, chọn 115200: nạp chậm hơn nhưng ổn định hơn.

3.5. Cổng COM đang bị chương trình khác mở

Một cổng COM chỉ một chương trình mở được tại một thời điểm. Đóng Serial Monitor ở cửa sổ Arduino IDE khác, Thonny, PuTTY hay phần mềm đọc cổng COM khác, rồi nạp lại.

4. Nhóm C: nạp xong mà không chạy

Mở Serial Monitor ở tốc độ 115200, nhấn nút EN một lần và đọc các dòng ESP32 in ra lúc khởi động:

  • Brownout detector was triggered và mạch khởi động lại liên tục: điện áp bị sụt, thường lúc bật Wi-Fi. Cắm thẳng vào máy tính, đổi dây ngắn, không lấy nguồn relay, động cơ từ chân 3V3 hay VIN của mạch.
  • flash read err, 1000: GPIO12 bị kéo lên cao lúc khởi động. Rút thiết bị khỏi GPIO12.
  • Guru Meditation Error rồi khởi động lại: chương trình bị lỗi khi chạy (truy cập sai bộ nhớ, chia cho 0, tràn ngăn xếp). Dòng thông báo phía sau cho biết loại lỗi; thử chương trình mẫu đơn giản để chắc mạch vẫn tốt.
  • Không có dòng nào: kiểm tra đúng tốc độ 115200, đúng cổng COM; chương trình có gọi Serial.begin(115200) không.

Mạch chạy khi cắm máy tính nhưng không chạy khi cấp nguồn ngoài: nguồn ngoài không đủ dòng hoặc nối sai chân. ESP32 cần nguồn 5 V đủ khoảng 500 mA vào chân VIN, hoặc 3,3 V ổn định vào chân 3V3, và phải nối chung GND.

5. Bảng tra thông báo lỗi khi nạp ESP32

Thông báo (có thể khác chút tùy phiên bản)Ý nghĩaCách xử lý
Menu Tools › Port trống hoặc mờMáy không thấy mạchNhóm A: dây, cổng, driver
Failed to connect to ESP32: No serial data received.ESP32 không trả lời, chưa vào chế độ nạpGiữ BOOT; rút dây GPIO0, GPIO2; tụ 10 µF ở EN
Wrong boot mode detected (0x13)! The chip needs to be in download mode.ESP32 đang chạy chương trình, không ở chế độ nạpGiữ BOOT khi Connecting
Timed out waiting for packet headerMất liên lạc giữa chừngGiữ BOOT, hạ Upload Speed 115200, đổi dây
could not open port 'COM5', Access is deniedCổng đang bị chương trình khác mởĐóng chương trình đó, rút cắm lại mạch
the port doesn't existChọn sai số COM hoặc mạch vừa bị rút raChọn lại cổng trong Tools › Port
Invalid head of packetDữ liệu bị nhiễuĐổi dây, hạ Upload Speed
Failed uploading: uploading error: exit status 2Thông báo chung của Arduino IDE khi bước nạp lỗiĐọc các dòng phía trên trong cửa sổ Output để biết lỗi cụ thể
Brownout detector was triggeredSụt áp nguồnDây tốt, cổng USB khỏe, nguồn đủ dòng
flash read err, 1000GPIO12 ở mức cao lúc khởi độngRút thiết bị khỏi GPIO12

6. Khi nào kết luận mạch hỏng?

Chỉ nên nghĩ tới mạch hỏng khi đã thử đủ các bước sau mà vẫn lỗi:

  1. Mạch rút khỏi breadboard, không nối bất cứ dây nào ngoài dây USB.
  2. Thử ít nhất hai dây có truyền dữ liệu và hai cổng USB, tốt nhất trên hai máy tính.
  3. Device Manager đã nhận đúng chip CP210x hoặc CH340.
  4. Đã giữ nút BOOT khi Connecting và hạ Upload Speed xuống 115200.

Một mạch ESP32 dự phòng giúp xác định lỗi nằm ở mạch hay ở máy tính rất nhanh, nên có sẵn khi làm đồ án hay dự án quan trọng.

7. Xem thêm


Tin tức liên quan

Dùng transistor làm công tắc: tính điện trở base, bật tải 5 V, 12 V từ ESP32
Dùng transistor làm công tắc: tính điện trở base, bật tải 5 V, 12 V từ ESP32

Mạch transistor NPN đóng cắt phía thấp, bốn bước tính điện trở base, diode dập cho relay và động cơ, cách biết transistor bão hòa, thí nghiệm ESP32 so sánh đủ và thiếu dòng base.

Điện một chiều DC, xoay chiều AC và an toàn khi làm việc gần điện 220 V
Điện một chiều DC, xoay chiều AC và an toàn khi làm việc gần điện 220 V

Điện một chiều và xoay chiều khác nhau thế nào, vì sao điện lưới 220 V có đỉnh 311 V, bộ nguồn đổi 220 V thành 5 V ra sao, vì sao điện giật nguy hiểm, CB, chống giật và quy tắc khi dùng relay 220 V.

Tự lắp máy CNC mini cỡ 3018: cấu tạo, căn vít me, phần điện và cài GRBL
Tự lắp máy CNC mini cỡ 3018: cấu tạo, căn vít me, phần điện và cài GRBL

Các bước tự lắp máy CNC mini 3018: cấu tạo kiểu bàn di chuyển, vật tư, căn vít me T8 thẳng hàng, tính bước/mm, spindle 775 qua MOSFET, cài GRBL, dò Z và nhát phay đầu tiên.

Tư duy máy tính (tư duy lập trình) là gì? 4 kỹ năng với ví dụ đời thường cho trẻ
Tư duy máy tính (tư duy lập trình) là gì? 4 kỹ năng với ví dụ đời thường cho trẻ

Tư duy máy tính, hay tư duy lập trình, gồm bốn kỹ năng: phân rã, nhận dạng mẫu, trừu tượng hóa và thuật toán. Bài giải thích bằng ví dụ đời thường và gợi ý hoạt động cho trẻ.

Mức logic 3,3 V và 5 V: khi nào cần chuyển mức và cách nối an toàn với ESP32
Mức logic 3,3 V và 5 V: khi nào cần chuyển mức và cách nối an toàn với ESP32

Giải thích mức logic 3,3 V và 5 V: ngưỡng mức thấp, mức cao của ESP32, Arduino và các họ IC; khi nào nối thẳng được, khi nào cần mạch chia áp hoặc mạch chuyển mức MOSFET. Kèm chương trình đo kiểm tra.

Vẽ đa giác và hoa văn bằng lập trình: học góc trong môn Toán với Scratch
Vẽ đa giác và hoa văn bằng lập trình: học góc trong môn Toán với Scratch

Dùng nhóm lệnh Bút vẽ của Scratch để vẽ đa giác đều, ngôi sao, hoa văn, xoắn ốc; hiểu vì sao xoay góc ngoài 360 : n, góc trong, và liên hệ với môn Toán ở tiểu học.

Cảm biến gia tốc: cấu tạo MEMS răng lược, áp điện, cách chế tạo và đo góc nghiêng bằng ESP32
Cảm biến gia tốc: cấu tạo MEMS răng lược, áp điện, cách chế tạo và đo góc nghiêng bằng ESP32

Cảm biến gia tốc hoạt động thế nào: mô hình khối lượng – lò xo, MEMS răng lược điện dung vi sai, chế tạo vi cơ bề mặt, áp điện, servo, đo góc nghiêng và đọc MPU-6050 bằng ESP32.

Quy tắc quyết định và tỉ số TUR: khi nào được kết luận đạt, dải bảo vệ và rủi ro chấp nhận sai
Quy tắc quyết định và tỉ số TUR: khi nào được kết luận đạt, dải bảo vệ và rủi ro chấp nhận sai

Quy tắc quyết định theo ISO/IEC 17025 và ILAC-G8: bốn trường hợp kết quả sát giới hạn, chấp nhận đơn giản và dải bảo vệ, rủi ro chấp nhận sai, tỉ số TUR 4:1 và cách chọn quy tắc.


Bình luận
Đã thêm vào giỏ hàng