Sơ đồ chân ESP32 DevKit V1 30 chân và 38 chân: chân nào dùng được, chân nào nên tránh
- 1. Nhận biết bản 30 chân và 38 chân
- 2. Sơ đồ chân ESP32 DevKit V1 30 chân
- 3. Sơ đồ chân ESP32 38 chân
- 4. Những nhóm chân cần nhớ
- 4.1. Chân chỉ vào: GPIO34, 35, 36, 39
- 4.2. Chân khởi động: GPIO0, 2, 5, 12, 15
- 4.3. Chân nối bộ nhớ flash: GPIO6 đến GPIO11
- 4.4. TX0, RX0 (GPIO1, GPIO3)
- 4.5. ADC1, ADC2 và Wi-Fi
- 4.6. Chân cảm ứng, DAC và PWM
- 5. Chọn chân ESP32 theo việc cần làm
- 6. Chân nguồn: VIN, 5V, 3V3, GND và EN
- 7. Lỗi thường gặp do chọn sai chân
- 8. Xem thêm
Sơ đồ chân ESP32 DevKit V1 30 chân và 38 chân: số GPIO, ADC1, ADC2, cảm ứng, I2C, SPI, UART, chân khởi động, chân chỉ vào, chân nối flash và cách chọn chân đúng cho từng việc.
Mạch ESP32 DevKit V1 có hai bản phổ biến: loại 30 chân và loại 38 chân. Cả hai dùng cùng module ESP32-WROOM-32, nhưng thứ tự chân, tên in trên mạch và số chân lộ ra khác nhau. Chọn sai chân là nguyên nhân của rất nhiều lỗi khó hiểu: nạp code không được, mạch không khởi động khi cắm thêm module, đọc analog ra 4095 khi bật Wi-Fi. Bài viết này là bảng tra sơ đồ chân ESP32 cho cả hai bản, chỉ rõ chân nào dùng tự do, chân nào phải cẩn thận và chân nào không được đụng tới.
1. Nhận biết bản 30 chân và 38 chân

Cách nhanh nhất là đếm số chân một bên: 15 chân là bản 30 chân, 19 chân là bản 38 chân. Dấu hiệu thứ hai là chân nguồn ở góc dưới: bản 30 chân in VIN, bản 38 chân in 5V.

| Đặc điểm | Bản 30 chân | Bản 38 chân |
|---|---|---|
| Số chân mỗi bên | 15 | 19 |
| Số chân GPIO lộ ra | 25 | 32 (gồm 6 chân nối flash không dùng được) |
| Chân nguồn vào | VIN | 5V |
| GPIO0 | Không lộ ra (chỉ nối nút BOOT) | Có chân IO0 |
| Cắm lên breadboard MB-102 | Còn một hàng lỗ trống mỗi bên | Che kín một bên, thường phải ghép hai breadboard hoặc dùng đế ra chân |
| Đèn LED ở GPIO2 | Hầu hết bản có | Nhiều bản không có |
Chip ESP32 có 34 chân GPIO (GPIO0 đến GPIO39, thiếu 20, 24 và 28 đến 31). Không bản mạch nào lộ ra đủ cả 34 chân, vì một số chân đã dùng bên trong module.
2. Sơ đồ chân ESP32 DevKit V1 30 chân

Trong chương trình Arduino, chân được gọi bằng số GPIO: chân in D25 trên mạch là 25, chân VP là 36, chân RX2 là 16. Bảng dưới liệt kê đủ 30 chân theo thứ tự trên mạch.
| In trên mạch | GPIO | Chức năng thêm | Lưu ý |
|---|---|---|---|
| EN | – | Reset | Nối xuống GND là khởi động lại |
| VP | 36 | ADC1_0 | Chỉ là chân vào |
| VN | 39 | ADC1_3 | Chỉ là chân vào |
| D34 | 34 | ADC1_6 | Chỉ là chân vào |
| D35 | 35 | ADC1_7 | Chỉ là chân vào |
| D32 | 32 | ADC1_4, cảm ứng T9 | Dùng tự do |
| D33 | 33 | ADC1_5, cảm ứng T8 | Dùng tự do |
| D25 | 25 | ADC2_8, DAC1 | Dùng tự do |
| D26 | 26 | ADC2_9, DAC2 | Dùng tự do |
| D27 | 27 | ADC2_7, cảm ứng T7 | Dùng tự do |
| D14 | 14 | ADC2_6, cảm ứng T6, HSPI SCK | Dùng tự do |
| D12 | 12 | ADC2_5, cảm ứng T5, HSPI MISO | Chân khởi động: phải ở mức thấp khi bật nguồn |
| D13 | 13 | ADC2_4, cảm ứng T4, HSPI MOSI | Dùng tự do |
| GND | – | Mass | |
| VIN | – | Nguồn 5 V vào | Xem mục 6 |
| In trên mạch | GPIO | Chức năng thêm | Lưu ý |
|---|---|---|---|
| D23 | 23 | VSPI MOSI | Dùng tự do |
| D22 | 22 | I2C SCL mặc định | Dùng tự do |
| TX0 | 1 | UART0 TX | Nối chip USB, để trống |
| RX0 | 3 | UART0 RX | Nối chip USB, để trống |
| D21 | 21 | I2C SDA mặc định | Dùng tự do |
| D19 | 19 | VSPI MISO | Dùng tự do |
| D18 | 18 | VSPI SCK | Dùng tự do |
| D5 | 5 | VSPI SS (CS) | Chân khởi động: để mức cao khi bật nguồn |
| TX2 | 17 | UART2 TX | Dùng tự do |
| RX2 | 16 | UART2 RX | Dùng tự do |
| D4 | 4 | ADC2_0, cảm ứng T0 | Dùng tự do |
| D2 | 2 | ADC2_2, cảm ứng T2, LED trên mạch | Chân khởi động: thấp hoặc để hở khi nạp code |
| D15 | 15 | ADC2_3, cảm ứng T3, HSPI SS | Chân khởi động: để mức cao khi bật nguồn |
| GND | – | Mass | |
| 3V3 | – | Nguồn 3,3 V | Xem mục 6 |
3. Sơ đồ chân ESP32 38 chân

Bản 38 chân có cùng các chân GPIO như bản 30 chân, chỉ khác thứ tự và có thêm:
- IO0 (GPIO0): chân khởi động, nối với nút BOOT. Dùng được nhưng phải để mức cao khi bật nguồn.
- SD2, SD3, CMD, CLK, SD0, SD1 (GPIO9, 10, 11, 6, 7, 8): sáu chân nối thẳng với bộ nhớ flash bên trong module. Không nối gì vào các chân này.
- Thêm một chân GND ở hàng phải và chân 3V3 chuyển lên đầu hàng trái.
Tên chân trên bản 38 chân thường in dạng IO34, G34 hoặc chỉ số 34. Dù in kiểu nào, trong chương trình vẫn dùng số GPIO.
4. Những nhóm chân cần nhớ
4.1. Chân chỉ vào: GPIO34, 35, 36, 39
Bốn chân này chỉ đọc được tín hiệu vào, không xuất được mức cao hay thấp, không có điện trở kéo lên hoặc kéo xuống bên trong. Lệnh pinMode(34, INPUT_PULLUP) không có tác dụng. Muốn nối nút nhấn vào các chân này phải thêm điện trở kéo lên khoảng 10 kΩ ra 3V3. Đây là các chân rất tốt để đọc analog vì thuộc ADC1.
4.2. Chân khởi động: GPIO0, 2, 5, 12, 15
ESP32 đọc mức của các chân này đúng lúc bật nguồn hoặc reset để quyết định cách khởi động. Sau khi đã chạy, chúng là chân bình thường. Rắc rối chỉ xảy ra khi mạch ngoài kéo chân về sai mức lúc khởi động.
| Chân | Mức cần có lúc bật nguồn | Nếu sai mức |
|---|---|---|
| GPIO0 | Cao (có điện trở kéo lên trong) | Mức thấp: vào chế độ nạp code, chương trình không chạy |
| GPIO2 | Thấp hoặc để hở khi nạp code | Bị kéo lên cao: không vào được chế độ nạp, báo lỗi kết nối |
| GPIO12 | Thấp (có điện trở kéo xuống trong) | Mức cao: đặt sai điện áp bộ nhớ flash (1,8 V), mạch không khởi động, báo lỗi đọc flash |
| GPIO15 | Cao | Mức thấp: không in thông báo khởi động ra Serial |
| GPIO5 | Cao | Ảnh hưởng chế độ giao tiếp SDIO, thường không gây lỗi với Arduino |
Vì vậy không nối module có điện trở kéo lên (ví dụ một số module relay, cảm biến có ngõ ra kéo lên) vào GPIO12 và GPIO2. Nếu bắt buộc dùng, kiểm tra lại mạch nạp code và khởi động được bình thường.
4.3. Chân nối bộ nhớ flash: GPIO6 đến GPIO11
Chương trình nằm trong bộ nhớ flash, và ESP32 đọc flash liên tục qua sáu chân này. Bản 30 chân không lộ ra các chân này. Bản 38 chân có lộ ra (SD0, SD1, SD2, SD3, CMD, CLK): nối thử bất cứ thứ gì vào là mạch có thể treo hoặc khởi động lại liên tục.
4.4. TX0, RX0 (GPIO1, GPIO3)
Hai chân này nối với chip USB (CP2102 hoặc CH340) để nạp code và in ra Serial Monitor. Nối thiết bị khác vào sẽ làm hỏng cả hai việc. Cần thêm cổng nối tiếp thì dùng UART2 ở RX2 (GPIO16), TX2 (GPIO17).
4.5. ADC1, ADC2 và Wi-Fi
ESP32 có hai bộ chuyển đổi analog sang số. ADC2 (GPIO0, 2, 4, 12, 13, 14, 15, 25, 26, 27) dùng chung với khối Wi-Fi: khi Wi-Fi đang bật, analogRead() trên các chân này không đọc được. Dự án vừa đọc cảm biến analog vừa gửi dữ liệu qua Wi-Fi phải dùng ADC1: GPIO32, 33, 34, 35, 36 (VP), 39 (VN).
4.6. Chân cảm ứng, DAC và PWM
- Cảm ứng: 10 chân T0 đến T9 (GPIO4, 0, 2, 15, 13, 12, 14, 27, 33, 32) đọc được điện dung khi chạm tay bằng
touchRead(). - DAC: GPIO25 và GPIO26 xuất được điện áp thật từ 0 đến khoảng 3,3 V với 256 mức.
- PWM: mọi chân xuất được đều tạo được PWM bằng
analogWrite()hoặc LEDC.
5. Chọn chân ESP32 theo việc cần làm

| Việc cần làm | Chân gợi ý | Ghi chú |
|---|---|---|
| Bật tắt LED, relay, MOSFET | GPIO16, 17, 18, 19, 23, 25, 26, 27, 32, 33 | Tránh GPIO12 và GPIO2 nếu module có điện trở kéo lên |
| Đọc nút nhấn | GPIO4, 13, 14, 16, 17, 18, 19, 23, 25, 26, 27, 32, 33 | Dùng INPUT_PULLUP, nút nối xuống GND |
| Đọc cảm biến analog khi bật Wi-Fi | GPIO32, 33, 34, 35, 36, 39 | Chỉ ADC1 |
| I2C (màn hình OLED, LCD I2C, cảm biến) | SDA GPIO21, SCL GPIO22 | Đổi được sang chân khác bằng Wire.begin(sda, scl) |
| SPI (thẻ nhớ, LoRa) | MOSI 23, MISO 19, SCK 18, CS 5 | Chân CS có thể chọn chân khác |
| UART thêm (module GPS, RS-485) | RX2 GPIO16, TX2 GPIO17 | Serial2 |
| Nút chạm cảm ứng | GPIO4, 13, 14, 27, 32, 33 | Tránh các chân cảm ứng là chân khởi động |
| Xuất điện áp analog | GPIO25, 26 | DAC 8 bit |
6. Chân nguồn: VIN, 5V, 3V3, GND và EN
- VIN (bản 30 chân) hay 5V (bản 38 chân): khi cắm USB, chân này có khoảng 5 V từ cổng USB. Khi không cắm USB, có thể cấp 5 V từ nguồn ngoài vào đây. Không đưa 12 V thẳng vào chân này; dùng mạch hạ áp xuống 5 V trước.
- 3V3: ngõ ra 3,3 V của IC ổn áp trên mạch. Đủ cho cảm biến, màn hình OLED, LCD I2C. Tải tốn dòng như relay, động cơ, dải LED phải lấy nguồn riêng, chỉ nối chung GND.
- GND: mọi thiết bị nối với ESP32 phải nối chung GND, kể cả khi dùng nguồn riêng.
- EN: nối xuống GND để reset, giống nhấn nút EN.
Chân ESP32 dùng mức logic 3,3 V và không chịu được 5 V. Module xuất tín hiệu 5 V (một số cảm biến siêu âm, module 5 V cũ) cần cầu phân áp hoặc mạch chuyển mức. Mỗi chân chỉ nên cấp dòng dưới khoảng 20 mA: đủ cho một LED có điện trở hạn dòng, không đủ cho cuộn dây relay hay động cơ.
7. Lỗi thường gặp do chọn sai chân
| Hiện tượng | Nguyên nhân hay gặp | Cách sửa |
|---|---|---|
| Cắm module vào thì không nạp code được | Module kéo GPIO2 lên cao hoặc kéo GPIO0 xuống thấp | Rút dây khỏi GPIO2, GPIO0 khi nạp, hoặc chuyển sang chân khác |
| Mạch không chạy, Serial báo lỗi đọc flash | GPIO12 bị kéo lên cao lúc bật nguồn | Đổi thiết bị sang chân khác |
| Nút nhấn ở GPIO34 lúc nào cũng nhảy lung tung | Chân chỉ vào, không có điện trở kéo lên trong | Thêm điện trở 10 kΩ từ chân ra 3V3 |
analogRead() trả về 0 hoặc giá trị lạ khi bật Wi-Fi | Đang đọc chân ADC2 | Chuyển cảm biến sang GPIO32 đến 39 |
| Mạch khởi động lại liên tục khi nối vào chân SD2, CMD… | Đụng vào chân nối flash trên bản 38 chân | Không dùng GPIO6 đến 11 |
| Serial Monitor không hiện gì, nạp code báo lỗi | Nối thiết bị vào TX0, RX0 | Dùng Serial2 ở GPIO16, 17 |
| Chân xuất ra nóng hoặc ESP32 tự reset khi bật tải | Lấy dòng trực tiếp từ chân GPIO cho relay, động cơ | Dùng module relay, transistor hoặc MOSFET |
8. Xem thêm
- ESP32 DevKit V1 30 chân, cổng Type-C, chip CP2102, bản 30 chân chip CH340 và bản 38 chân Type-C.
- Đế ra chân ESP32: có hàng chân GND, nguồn, tín hiệu cho từng GPIO, nối module không cần breadboard.
- Giao tiếp I2C trên ESP32: quét địa chỉ và đổi chân SDA, SCL.
- Đọc ADC trên ESP32 và đọc nút nhấn, chống dội.
- Mức logic 3,3 V và 5 V: khi nào cần chuyển mức.
- Bài cùng loạt: chọn mạch ESP32 phù hợp, cài ESP32 vào Arduino IDE, dùng đế ra chân ESP32 30 chân.
Xem thêm