Phần cứng

Những chân GPIO ESP32 cần tránh

Áp dụng cho ESP32 gốc (DevKit). Các dòng S3/C3/C6 có sơ đồ chân khác.

ESP32 có nhiều chân nhưng không phải chân nào cũng tự do. Đấu nhầm có thể khiến chip không boot, nạp code lỗi hoặc đọc ADC sai.

1. GPIO 6–11: nối với flash

Trên module ESP32 chuẩn, GPIO6, 7, 8, 9, 10, 11 dùng cho flash SPI. Không dùng cho việc khác.

2. Chân chỉ input

GPIO34, 35, 36 (VP), 39 (VN) chỉ làm input, không có điện trở pull-up/pull-down nội. Không dùng làm output hay nút bấm mà không có điện trở ngoài.

3. Strapping pin (quyết định kiểu boot)

GPIOLưu ý
0Kéo LOW khi reset = vào chế độ nạp. Nút BOOT thường nối ở đây.
2Phải thả nổi hoặc LOW khi nạp code. Thường nối LED onboard.
5Ảnh hưởng timing SDIO; có xung khi boot.
12 (MTDI)Quyết định điện áp flash (VDD_SDIO). Nếu bị kéo HIGH khi boot, một số module sẽ không khởi động được.
15 (MTDO)Kéo LOW khi boot sẽ tắt log boot trên UART.

Các chân này vẫn dùng được, nhưng thiết bị gắn vào không được kéo mức điện áp sai lúc khởi động. Ví dụ module relay kích mức cao ở GPIO12 có thể làm ESP32 không boot.

4. ADC2 không dùng được khi bật WiFi

ADC2 (GPIO0, 2, 4, 12–15, 25–27) xung đột với WiFi: khi WiFi hoạt động, analogRead() trên các chân này không đáng tin. Hãy đọc analog bằng ADC1 (GPIO32–39).

5. GPIO1 và GPIO3

Là TX0/RX0 của UART dùng để nạp và log. Dùng làm GPIO thường sẽ mất Serial.

6. Chân tương đối an toàn

GPIO4, 13, 14, 16, 17, 18, 19, 21, 22, 23, 25, 26, 27, 32, 33 là các lựa chọn phổ biến. I2C mặc định: SDA = 21, SCL = 22. SPI (VSPI): MOSI = 23, MISO = 19, SCK = 18, CS = 5.

Mẹo: ESP32 chỉ chịu được dòng khoảng 20–40mA mỗi chân, và logic 3.3V. Cảm biến 5V hoặc tải lớn cần dùng transistor/MOSFET hoặc module chuyển mức.