ESP32 DevKit V1 pinout: every pin, and which ones to avoid
Cơ bản
Hoặc xem mọi bài học.
- 503linh kiện trên bàn làm mạch
- 44bo mạch đang chạy
- 1.00xthời gian thực, trên mọi bo mạch
Đây là sơ đồ chân của ESP32 DevKit V1 30 chân, bo mạch DOIT có module ESP32-WROOM-32 mà hầu hết bộ kit bán kèm. Mọi lỗ trên hai hàng header của nó đều có trong bảng dưới đây cùng số GPIO, những gì nó làm được và điều cần lưu ý. Sau bảng là các chân nguồn, các chân strapping quyết định bo mạch có khởi động được hay không, các chân chỉ input, các chân USB và flash chiếm, và danh sách nên dùng chân nào cho việc gì.
Mạch ở trên là bo mạch đó chạy trong Mokxi: một biến trở ở D32, tức kênh 4 của ADC1, chỉnh độ sáng LED ở D4 và in ra giá trị thô. Mokxi mô phỏng bo mạch 30 chân, không phải DevKitC 38 chân, và các con số trên trang này được đọc từ cùng mô hình mà trình mô phỏng chạy. Ở chỗ trình mô phỏng làm ít hơn chip thật, trang nói rõ ngay trên hàng đó.
Mọi chân trên header
Lụa in gọi GPIO n là "Dn", nên D23 là GPIO 23 và digitalWrite(23, HIGH) điều khiển nó. Một vài lỗ được đặt tên theo chức năng: VP và VN là GPIO 36 và 39, TX0 và RX0 là GPIO 1 và 3, còn TX2 và RX2 là GPIO 17 và 16. Bảng đi xuống dọc header trái từ EN đến VIN, rồi xuống dọc header phải từ D23 đến 3V3, với ổ cắm USB ở dưới cùng.
Thứ tự các lỗ là cách Mokxi đọc bo mạch DOIT, và các bản nhái khác nhau ở vài chân cuối. Nhiều bo mạch 30 chân không có lỗ D0 và đặt thêm một GND ở bên phải, và nhiều bo mạch có header trái kết thúc bằng D12, D13, GND, VIN. Hãy theo các chữ in trên bo mạch của bạn. Số GPIO, thứ mà code của bạn dùng, thì không đổi.
Touch, DAC và ADC2 có trong bảng vì chip có chúng và các bài hướng dẫn dùng tới. Mokxi không mô phỏng cái nào trong ba cái đó, và mỗi hàng đều nói rõ.
| Chân | GPIO | Nó làm được gì | Cần lưu ý |
|---|---|---|---|
| EN | - | Chip enable, tức là reset. Mức thấp giữ chip ở trạng thái reset; nút EN làm việc đó. | Not a GPIO. |
| VP | 36 | ADC1_CH0. Chỉ input. | Không có mạch điều khiển đầu ra và không có điện trở kéo lên hay kéo xuống bên trong. |
| VN | 39 | ADC1_CH3. Chỉ input. | Không có mạch điều khiển đầu ra và không có điện trở kéo lên hay kéo xuống bên trong. |
| D34 | 34 | ADC1_CH6. Chỉ input. | Không có mạch điều khiển đầu ra và không có điện trở kéo lên hay kéo xuống bên trong. |
| D35 | 35 | ADC1_CH7. Chỉ input. | Không có mạch điều khiển đầu ra và không có điện trở kéo lên hay kéo xuống bên trong. |
| D32 | 32 | ADC1_CH4. PWM. Touch T9 (không mô phỏng). | Một chân đa dụng an toàn. |
| D33 | 33 | ADC1_CH5. PWM. Touch T8 (không mô phỏng). | Một chân đa dụng an toàn. |
| D25 | 25 | PWM. DAC1 và ADC2_CH8 trên chip (không mô phỏng). | ADC2 ngừng hoạt động khi WiFi đang bật. |
| D26 | 26 | PWM. DAC2 và ADC2_CH9 trên chip (không mô phỏng). | ADC2 ngừng hoạt động khi WiFi đang bật. |
| D27 | 27 | PWM. ADC2_CH7 và touch T7 trên chip (không mô phỏng). | ADC2 ngừng hoạt động khi WiFi đang bật. |
| D14 | 14 | PWM. ADC2_CH6 và touch T6 trên chip (không mô phỏng). | ADC2 ngừng hoạt động khi WiFi đang bật. |
| D12 | 12 | PWM. ADC2_CH5 và touch T5 trên chip (không mô phỏng). | Chân strapping: mức cao lúc reset thì bo mạch không khởi động. |
| GND | - | Ground. | - |
| D13 | 13 | PWM. ADC2_CH4 và touch T4 trên chip (không mô phỏng). | ADC2 ngừng hoạt động khi WiFi đang bật. |
| VIN | - | Đường 5 V từ USB. Cấp 5 V vào đây để chạy bo mạch mà không cần cáp. | Not a GPIO. |
| D23 | 23 | PWM. SPI MOSI (mặc định). | - |
| D22 | 22 | PWM. I2C SCL (mặc định). | - |
| TX0 | 1 | UART0 TX: Serial, và chip USB sang serial. | Hãy để trống, nếu không việc nạp và Serial Monitor sẽ hỏng. |
| RX0 | 3 | UART0 RX: Serial, và chip USB sang serial. | Hãy để trống, nếu không việc nạp và Serial Monitor sẽ hỏng. |
| D21 | 21 | PWM. I2C SDA (mặc định). | - |
| D19 | 19 | PWM. SPI MISO (mặc định). | - |
| D18 | 18 | PWM. SPI SCK (mặc định). | - |
| D5 | 5 | PWM. SPI SS (mặc định). | Chân strapping: để không tải khi cấp nguồn. |
| TX2 | 17 | PWM. UART2 TX trong các bài hướng dẫn core 2.x: Serial2.begin(9600, SERIAL_8N1, 16, 17). | Core 3.x đặt Serial2 trên 4 và 25 trừ khi chỉ định chân. |
| RX2 | 16 | PWM. UART2 RX trong các bài hướng dẫn core 2.x: Serial2.begin(9600, SERIAL_8N1, 16, 17). | Core 3.x đặt Serial2 trên 4 và 25 trừ khi chỉ định chân. |
| D4 | 4 | PWM. ADC2_CH0 và touch T0 trên chip (không mô phỏng). | Một đầu ra an toàn; các ví dụ đặt LED ở đây. |
| D0 | 0 | PWM. ADC2_CH1 và touch T1 trên chip (không mô phỏng). Nút BOOT. | Chân strapping: mức thấp lúc reset thì chip chờ nạp chương trình. |
| D2 | 2 | PWM. ADC2_CH2 và touch T2 trên chip (không mô phỏng). LED xanh dương, sáng khi ở mức HIGH. | Chân strapping: phải ở mức thấp hoặc để hở thì mới nạp được. |
| D15 | 15 | PWM. ADC2_CH3 và touch T3 trên chip (không mô phỏng). | Chân strapping: mức thấp lúc reset sẽ tắt các thông báo khởi động. |
| 3V3 | - | Đầu ra 3,3 V của mạch ổn áp. | Not a GPIO. |
Các chân nguồn và giới hạn của chúng
VIN là đường 5 V từ ổ cắm USB. Khi không có cáp bạn có thể chạy bo mạch bằng cách cấp 5 V vào VIN, và mạch ổn áp tạo ra 3,3 V từ đó. 3V3 là đầu ra của mạch ổn áp đó: nó cấp nguồn cho ESP32 và những gì bạn gắn vào, nên cảm biến thì được còn servo hay động cơ thì không. GND là GND.
Mọi GPIO đều 3,3 V và không chân nào chịu được 5 V. Đầu ra cảm biến 5 V cần một bộ chia áp hoặc mạch chuyển mức trước khi tới chân. Datasheet của Espressif cho một chân khoảng 40 mA khi cấp dòng ở mức điều khiển mạnh nhất. Hãy xem đó là trần chứ không phải mục tiêu, và giữ LED ở 10 đến 20 mA với điện trở của nó.
Chân strapping: những chân khiến bo mạch không khởi động được
Năm chân được chip đọc ngay lúc nó thoát khỏi reset, và những gì chúng đọc quyết định cách nó khởi động: GPIO 0, 2, 5, 12 và 15. Khi sketch của bạn đã chạy thì chúng là các chân bình thường, nên rắc rối chỉ lộ ra khi có thứ gì nối vào một chân giữ nó sai trạng thái lúc cấp nguồn.
GPIO 0 là nút BOOT. Giữ ở mức thấp lúc reset, chip chờ một chương trình mới thay vì chạy chương trình của bạn, nên một nút nhấn hay module kéo D0 xuống thấp trông như bo mạch không bao giờ khởi động. GPIO 2 phải ở mức thấp hoặc để hở thì mới nạp được. GPIO 12 gây rắc rối nhất: mức cao lúc reset báo cho chip biết flash của nó chạy ở 1,8 V, mà flash của WROOM-32 cần 3,3 V, và bo mạch sẽ không khởi động cho đến khi thứ đang giữ chân 12 ở mức cao buông ra. GPIO 15 ở mức thấp lúc reset sẽ tắt các thông báo khởi động trên cổng serial, vô hại nhưng gây khó hiểu.
Mokxi không mô phỏng strapping. Bo mạch mô phỏng khởi động bất kể thứ gì nằm trên các chân đó, nên một mạch chạy được ở đây vẫn có thể không khởi động được ngoài đời nếu nó kéo D12 lên cao hoặc D0 xuống thấp. Hãy đặt bất cứ thứ gì có điện trở kéo lên hay kéo xuống riêng vào một trong các chân an toàn.
Các chân chỉ input: GPIO 34, 35, 36 và 39
GPIO 34 đến 39 chỉ có bộ đệm đầu vào và không có gì khác: không có mạch điều khiển đầu ra và không có điện trở kéo lên hay kéo xuống bên trong. Bốn chân trong số đó nằm trên header này: D34, D35, VP và VN. Chúng làm đầu vào analog rất tốt, đều trên ADC1, và hoàn toàn không làm đầu ra được. pinMode(34, OUTPUT) không có tác dụng gì trên chip, và INPUT_PULLUP cũng không, nên nút nhấn trên một trong các chân này cần điện trở 10 k của riêng bạn.
Mokxi từ chối đầu ra trên các chân này giống như chip, đếm mọi lần thử, và đánh dấu một chấm hổ phách nhỏ trên bo mạch, để sketch không thể tưởng mình đang điều khiển một chân.
LED trên bo mạch, và các nút BOOT và EN
LED xanh dương ở GPIO 2 và sáng khi chân ở mức HIGH. LED_BUILTIN là 2. Vì GPIO 2 là chân strapping, việc LED có sáng lên trong lúc bo mạch khởi động hay không khác nhau giữa các bo mạch; nó ổn định ngay khi pinMode chạy. LED còn lại trên hầu hết bo mạch là đèn báo nguồn và không nằm trên chân nào.
BOOT kéo GPIO 0 xuống thấp khi bạn giữ nó, nên D0 đọc LOW khi nhấn. EN là nút reset. Trong Mokxi bạn nhấn được cả hai nút ngay trên bo mạch.
Các chân USB và flash chiếm
TX0 và RX0 là UART0, nối với chip USB sang serial của bo mạch, và mang mọi lệnh Serial.print cùng mọi lần nạp. Nối thứ gì vào chúng thì việc nạp thất bại hoặc Serial Monitor đầy ký tự rác, nên hãy để trống. Trong Mokxi, Serial tới thẳng Serial Monitor, nên trình mô phỏng sẽ không cho thấy xung đột đó; ngoài đời thì có.
GPIO 6 đến 11 là flash SPI mà chương trình chạy từ đó, và chúng hoàn toàn không có trên header này, đó là điều tốt. DevKitC 38 chân đưa chúng ra, thành D0 đến D3, CMD và CLK, và đó là những chân không bao giờ nên dùng. TX2 và RX2 là nơi UART2 đi trong hầu hết hướng dẫn. Arduino-esp32 3.x chuyển chân mặc định của Serial2 sang 4 và 25, nên hãy chỉ định chân: Serial2.begin(9600, SERIAL_8N1, 16, 17);. Mokxi mô phỏng UART1 và UART2 từng bit trên bất kỳ chân nào begin() chỉ định, nên một module GPS hay bo mạch thứ hai trên 16 và 17 nghe được chúng, ở đây cũng như trên bàn thực hành.
Analog, PWM, I2C và SPI
Chỉ ADC1 là an toàn trong dự án có WiFi: trên ESP32 thật sóng vô tuyến dùng ADC2, và analogRead trên chân ADC2 thất bại khi WiFi đang bật. ADC1 nằm trên sáu lỗ ở đây: VP, VN, D32, D33, D34 và D35. Mokxi chỉ mô phỏng ADC1, mười hai bit, với đường cong của linh kiện thật ở mức 11 dB mặc định: biến trở nối qua 3,3 V đạt 4095 ở khoảng 3,1 V, hơi sớm trước cuối hành trình, và đọc khoảng 1890 ở giữa.
PWM là LEDC, và mọi chân có mạch điều khiển đầu ra đều dùng được: analogWrite gắn một kênh vào lần gọi đầu tiên. Mokxi mô phỏng tám kênh tốc độ cao, tám bit ở 1 kHz theo mặc định; chip có tổng cộng mười sáu kênh. Wire.begin() dùng D21 cho SDA và D22 cho SCL, còn SPI dùng D18, D19, D23 và D5 cho SCK, MISO, MOSI và SS. Trong Mokxi cả hai bus chạy bằng phần mềm trên các chân đó, vì bộ điều khiển I2C và SPI của chip không được mô phỏng.
Câu hỏi
Nên dùng chân ESP32 nào cho nút nhấn?
D4, D13, D14, D18, D19, D21 đến D23, D25 đến D27, D32 hoặc D33, với `INPUT_PULLUP` và nút nối xuống GND. D34, D35, VP và VN chỉ dùng được với điện trở kéo lên 10 k của riêng bạn, còn D0, D2, D12 và D15 là chân strapping.
Nên dùng chân ESP32 nào cho cảm biến analog?
Một chân ADC1: D32, D33, D34, D35, VP hoặc VN. Chúng vẫn hoạt động khi bật WiFi. Giữ tín hiệu dưới 3,3 V; thang đo đầy 3,9 V danh định của bộ suy hao là một dải đo, không phải mức đầu vào an toàn.
Chân I2C trên ESP32 DevKit V1 là những chân nào?
SDA là D21 và SCL là D22, các chân mà `Wire.begin()` dùng. `Wire.begin(sda, scl)` chuyển bus sang hai chân đầu ra khác bất kỳ.
Những chân nào không bao giờ nên dùng trên ESP32?
GPIO 6 đến 11, tức flash, mà bo mạch này không đưa ra. TX0 và RX0 nếu bạn muốn việc nạp và Serial Monitor hoạt động. Và D12 cho bất cứ thứ gì ở mức cao lúc cấp nguồn.
Đây là sơ đồ chân bản 30 chân hay 38 chân?
DOIT DevKit V1 30 chân. Espressif DevKitC 38 chân là cùng chip với cùng số GPIO nhưng ở những vị trí khác, hai hàng cách nhau trọn một inch, và sáu chân flash được đưa ra. Nó có bo mạch riêng trong Mokxi.
ESP32 DevKit V1 có DAC và chân touch không?
Chip có hai DAC 8 bit, ở D25 và D26, và mười đầu vào touch. Mokxi không mô phỏng cái nào, nên `dacWrite` và `touchRead` sẽ không làm được gì hữu ích ở đây.
Tiếp tục nào
Thông tin trên trang này lấy từ đâu
Lắp mạch này ngoài đời
Mở trình soạn thảo, đổi một giá trị và xem con số thay đổi theo. Không cần cài gì, không cần tài khoản.