Arduino / ESP32

Sơ đồ chân ESP32 - hướng dẫn dùng GPIO đúng cách, chân nào nên tránh

7 phút đọc05/07/2026HocLapTrinhRobot
Sơ đồ chân ESP32 - hướng dẫn dùng GPIO đúng cách, chân nào nên tránh

Giải thích sơ đồ chân ESP32 DevKit 30 chân - chân nào dùng tự do, chân nào chỉ đọc, chân strapping cần tránh và bảng phân công chân cho robot. Trong bài viết này, chúng ta sẽ cùng tìm hiểu chi tiết và ứng dụng thực tế trong robot.

Vì sao phải hiểu sơ đồ chân ESP32?

Không như Arduino Uno nơi hầu hết chân dùng như nhau, các chân GPIO của ESP32 có vai trò rất khác nhau: có chân dùng tự do, có chân chỉ đọc được, có chân ảnh hưởng đến quá trình khởi động và có chân tuyệt đối không được đụng vào. Cắm nhầm chân là nguyên nhân của hàng loạt lỗi khó hiểu: bo không khởi động, nạp code thất bại, cảm biến đọc sai khi bật WiFi.

Bài này phân loại toàn bộ chân của bo ESP32 DevKit V1 30 chân — bản phổ biến nhất tại Việt Nam — thành các nhóm dễ nhớ.

Nhóm chân dùng tự do (khuyên dùng)

Các chân sau input/output thoải mái, hỗ trợ PWM (LEDC), không ảnh hưởng khởi động:

GPIOGhi chú thêm
4, 5GPIO 5 đôi khi là chân CS của SPI
13, 14Sẵn sàng cho PWM động cơ
16, 17Là RX2/TX2 nếu cần UART thứ hai
18, 19, 23Là SCK/MISO/MOSI nếu dùng SPI
21, 22Là SDA/SCL mặc định của I2C
25, 26, 27Có DAC (25, 26) xuất điện áp analog thật
32, 33Thuộc ADC1 — đọc analog được cả khi bật WiFi

Nguyên tắc chọn chân cho dự án robot: ưu tiên 4, 5, 13, 14, 16, 17, 25, 26, 27, 32, 33; để dành 21, 22 cho I2C và 18, 19, 23 cho SPI.

Nhóm chân chỉ đọc (input only)

GPIO 34, 35, 36 (VP), 39 (VN) chỉ làm đầu vào: không có mạch xuất tín hiệu, không có điện trở kéo nội. Dùng chúng để đọc cảm biến analog (cả 4 đều thuộc ADC1) hoặc tín hiệu digital từ ngoài. Cắm LED hay điều khiển driver bằng các chân này sẽ không hoạt động — lỗi phổ biến của người mới.

Nhóm chân strapping - cẩn thận khi dùng

Chân strapping quyết định chế độ khởi động của ESP32 tại thời điểm cấp nguồn. Dùng được nhưng phải hiểu ràng buộc:

GPIOVai trò khởi độngRàng buộc
0Chọn chế độ nạp codePhải ở mức CAO khi khởi động; kéo XUỐNG là vào chế độ nạp (nút BOOT nối chân này)
2Kết hợp với GPIO 0Phải THẤP hoặc thả nổi khi khởi động; LED bo gắn sẵn ở đây
12Chọn điện áp flashPhải THẤP khi khởi động — kéo CAO là bo không boot; tránh gắn module có pull-up
15Log khởi độngKéo THẤP sẽ tắt log boot; ít nghiêm trọng
5Trạng thái SDIOÍt ảnh hưởng trên DevKit thường

Triệu chứng kinh điển: robot chạy bình thường khi cắm USB nhưng không khởi động khi chạy pin — kiểm tra ngay có module nào kéo GPIO 12 lên cao hoặc GPIO 0 xuống thấp lúc cấp nguồn không.

Nhóm chân cấm dùng

GPIO 6, 7, 8, 9, 10, 11 nối trực tiếp với chip flash SPI chứa chương trình. Cắm bất cứ thứ gì vào các chân này làm bo treo hoặc hỏng dữ liệu flash. Trên đa số bo DevKit 30 chân, các chân này không được đưa ra header — nhưng bo 38 chân thì có, cần chú ý.

GPIO 1 (TX0) và 3 (RX0) là UART nạp code và Serial Monitor. Về kỹ thuật dùng được sau khi khởi động, nhưng chiếm chúng đồng nghĩa mất khả năng debug — chỉ dùng khi thực sự hết chân.

ADC, DAC và cảm ứng chạm

ADC - đọc analog

ESP32 có 2 khối ADC độ phân giải 12-bit (0-4095):

  • ADC1: GPIO 32, 33, 34, 35, 36, 39 — luôn hoạt động
  • ADC2: GPIO 0, 2, 4, 12, 13, 14, 15, 25, 26, 27 — ngừng hoạt động khi WiFi bật

Quy tắc vàng: dự án có WiFi thì mọi cảm biến analog phải nối vào ADC1 (GPIO 32-39).

DAC - xuất analog thật

GPIO 25 và 26 xuất điện áp analog 0-3.3V thật (8-bit) bằng dacWrite — dùng phát âm thanh đơn giản hoặc tạo tín hiệu tham chiếu.

Touch - cảm ứng chạm

10 chân (GPIO 0, 2, 4, 12, 13, 14, 15, 27, 32, 33) đọc được điện dung chạm tay qua touchRead — làm nút bấm không cần linh kiện, rất hợp các dự án sáng tạo của học sinh.

Bảng phân công chân mẫu cho xe robot ESP32

Phân công chuẩn dùng trong kit ESP32 Robot Car, tránh toàn bộ chân rủi ro:

Chức năngGPIOLý do chọn
Động cơ trái IN1, IN226, 27Chân tự do, có PWM
Động cơ phải IN3, IN414, 12*GPIO 12 dùng làm INPUT của driver là an toàn vì driver không kéo áp lúc boot
PWM ENA, ENB25, 13LEDC bất kỳ chân nào
HC-SR04 TRIG, ECHO5, 18ECHO qua chia áp 5V xuống 3.3V
Dò line trái, giữa, phải34, 35, 32Input-only và ADC1, đọc được khi bật WiFi
Servo4LEDC 50 Hz
I2C (MPU6050, OLED)21, 22SDA/SCL mặc định
Còi buzzer33Chân tự do

*Nếu gặp lỗi không boot khi chạy pin, chuyển IN4 từ GPIO 12 sang GPIO 17.

Giới hạn dòng điện của chân GPIO

Mỗi chân GPIO cấp tối đa khoảng 40 mA, khuyến nghị dưới 20 mA; tổng tất cả các chân không quá 200 mA. Điều này đủ cho LED (qua điện trở 220Ω-1kΩ) và tín hiệu điều khiển, nhưng tuyệt đối không đủ cho động cơ (cần 200 mA - vài A) hay dải LED. Luôn dùng driver hoặc MOSFET làm tầng công suất — xem bài MOSFET và Relay ở mục Kiến thức.

Chân 3V3 trên bo lấy từ ổn áp nội, cấp tổng cộng khoảng 500 mA cho cả ESP32 lẫn thiết bị ngoài — cảm biến nhỏ dùng được, module dòng cao (servo, còi lớn) phải lấy nguồn riêng.

Câu hỏi thường gặp

Chân nào của ESP32 an toàn tuyệt đối cho người mới?

Bộ sáu chân 4, 16, 17, 25, 26, 27 cho output và 32, 33, 34, 35 cho input. Nhớ thêm cặp I2C 21, 22. Dự án nhỏ gần như không bao giờ phải rời khỏi nhóm này.

Vì sao cảm biến analog đọc sai khi bật WiFi?

Cảm biến đang nối vào chân ADC2 (ví dụ GPIO 25, 26, 27) — khối ADC2 bị driver WiFi chiếm dụng. Chuyển sang chân ADC1: GPIO 32, 33, 34, 35, 36, 39.

ESP32 có chân 5V không?

Chân VIN (hoặc 5V) nối với nguồn USB, dùng cấp cho module cần 5V như HC-SR04. Nhưng logic của ESP32 vẫn là 3.3V — tín hiệu 5V từ module trả về phải qua chia áp trước khi vào GPIO.

Bo 30 chân và 38 chân khác gì nhau?

Bản 38 chân đưa thêm các GPIO 6-11 (cấm dùng) và vài chân phụ ra header. Tính năng cốt lõi giống hệt. Người mới chọn bản 30 chân cho gọn và đỡ cắm nhầm vào chân flash.

Tài nguyên tải về

Tải bản PDF của bài viết để in giáo án hoặc gửi trước cho học viên.

Tải PDF
Chia sẻ bài viết