Tổng quan về ESP32 Pinout GPIOs & Cách sử dụng

Chip ESP32 có 48 chân với nhiều chức năng, không phải mạch ESP32 nào cũng có đầy đủ tất cả các chân này. Cùng tìm hiểu kỹ hơn về ESP32 Pinout trong bài viết này, làm sao để sử dụng chân GPIOs? Nên tránh sử dụng các chân nào trong dự án?

Dưới đây là hình ảnh minh họa sơ đồ chân của mạch WSP-WROOM-32. Đây là một chip rất phổ biến thường được dùng trong các ứng dụng về IoT. Nếu bạn đang sử dụng chip trần ESP32 để tùy chỉnh thì đây là tài liệu đáng để tham khảo:

Hướng dẫn về ESP32 Pinout trên chip trần

Lưu ý: Không phải tất cả các bảng phát triển đều có đầy đủ các chân GPIO trên, nhưng mỗi GPIO cụ thể đều hoạt động giống nhau, bất kể bạn đang sử dụng board mạch ESP32 của nhà cung cấp nào. Nếu bạn mới tìm hiểu về ESP32, IoTZone khuyên bạn nên tìm hiểu bài viết sau: Giới thiệu ESP32 là gì?

Tổng quan thiết bị ngoại vi của ESP32

Các thiết bị ngoại vi của chip ESP32 gồm:

  • 18 kênh chuyển đổi Analog-to-Digital Converter (ADC)
  • 3 chuẩn giao tiếp SPI
  • 3 chuẩn giao tiếp UART
  • 2 chuẩn I2C
  • 16 kênh PWM
  • 18 kênh chuyển đổi Digital-to-Analog Converters (DAC)
  • 2 chuẩn I2S
  • 10 Capacitive sensing GPIOs

Các tính năng Analog-to-Digital Converter (ADC) và Digital-to-Analog Converters (DAC) được gán cho những chân tĩnh cụ thể. Nhưng bạn có thể quyết định chân nào là I2C, SPI, UART hoặc PWM,… tùy theo chương trình bạn viết. Các mạch ESP32 hỗ trợ tính năng ghép kênh để chúng ta có thể thực hiện được điều này.

Ngoài các chân được gán bằng lập trình trên phần mềm, thì cũng có các chân được gán mặc định trên mạch, ví dụ như hình dưới (đây là mạch ESP32 DEVKIT V1 DOIT). Mạch dưới có 36 chân, tùy theo nhà sản xuất mà vị trí chân có thể thay đổi:

ESP32 Pinout của mạch ESP32 DEVKIT V1 DOIT

Có một số chân GPIO với tính năng cụ thể sẽ phù hợp với dự án này, nhưng chưa chắc phù hợp với dự án khác. Bảng thông tin bên dưới sẽ giúp bạn biết rõ chân nào nên dùng làm đầu vào, chân nào dùng là đầu ra và cần cẩn thận khi sử dụng chân nào.

Ghi chú:

  • Các chân GPIOs màu xanh lá: Có thể sử dụng
  • Các chân màu vàng: Có thể sử dụng nhưng cần chú ý vì chúng có thể tạo ra các hoạt động không mong muốn khi khởi động
  • Các chân màu đỏ: Không khuyến khích sử dụng làm chân đầu vào hoặc đầu ra
Chân GPIOĐầu vàoĐầu raGhi chú
0 Pulled up OK Xuất tín hiệu PWM, phải cấu hình LOW khi cần chuyển sang chế độ Flashing
1 TX pin OK Gỡ lỗi (debug) khi khởi động
2 OK OK Được kết nối với đèn LED trên mạch ESP32, phải cấu hình LOW khi cần chuyển sang chế độ Flashing
3 OK RX pin Phải cấu hình HIGH khi khởi động
4 OK OK
5 OK OK Xuất tín hiệu PWM khi khởi động, chân Strapping
6 X X Kết nối với đèn flash SPI tích hợp
7 X X Kết nối với đèn flash SPI tích hợp
8 X X Kết nối với đèn flash SPI tích hợp
9 X X Kết nối với đèn flash SPI tích hợp
10 X X Kết nối với đèn flash SPI tích hợp
11 X X Kết nối với đèn flash SPI tích hợp
12 OK OK Khởi động không thành công nếu cấu hình HIGH, chân Strapping
13 OK OK
14 OK OK Xuất tín hiệu PWM khi khởi động
15 OK OK Xuất tín hiệu PWM khi khởi động, chân Strapping
16 OK OK
17 OK OK
18 OK OK
19 OK OK
21 OK OK
22 OK OK
23 OK OK
25 OK OK
26 OK OK
27 OK OK
32 OK OK
33 OK OK
34 OK Chỉ dùng làm đầu vào (input)
35 OK Chỉ dùng làm đầu vào (input)
36 OK Chỉ dùng làm đầu vào (input)
39 OK Chỉ dùng làm đầu vào (input)

Chi tiết về ESP32 Pinout

Dưới đây, IoTZone sẽ giới thiệu kỹ hơn về ESP32 Pinout và chức năng của từng GPIO cho bạn.

Các chân chỉ dùng làm đầu vào (input)

Các chân GPIO 34 đến chân 39 là các chân chỉ dùng làm đầu vào (input). Những chân này không có các điện trở kéo lên hoặc xuống bên trong, và không thể dùng làm đầu ra (output).

Đèn Flash SPI tích hợp trên mạch ESP-WROOM-32

Các chân GPIO 6 đến chân 11 sẽ xuất hiện trong một số mạch ESP32. Tuy nhiên, đây là các chân được kết nối với đèn Flash SPI tích hợp trên mạch ESP-WROOM-32, nên chúng tôi khuyến nghị bạn không nên sử dụng cho những mục đích khác. Các chân này gồm:

  • GPIO 6 (SCK/CLK)
  • GPIO 7 (SDO/SD0)
  • GPIO 8 (SDI/SD1)
  • GPIO 9 (SHD/SD2)
  • GPIO 10 (SWP/SD3)
  • GPIO 11 (CSC/CMD)

Chân GPIOs cảm ứng điện dung

Chip ESP32 hỗ trợ 10 cảm ứng điện dung, giúp đo lường sự thay đổi của các yếu tố có điện tích, ví dụ như da của con người. Dựa vào đó, bạn có thể tạo ra các dự án liên quan đến chạm vào chân GPIO bằng ngón tay để hệ thống thực hiện hành động nào đó.

Các chân GPIOs này có thể được tích hợp vào các miếng đệm điện dung và thay thế các nút cơ, hoặc dùng để đánh thức mạch ESP32 khỏi trạng thái Deep Sleep.

Các cảm biến cảm ứng điện dung được kết nối với ESP32 Pinout sau:

  • T0 (GPIO 4)
  • T1 (GPIO 0)
  • T2 (GPIO 2)
  • T3 (GPIO 15)
  • T4 (GPIO 13)
  • T5 (GPIO 12)
  • T6 (GPIO 14)
  • T7 (GPIO 27)
  • T8 (GPIO 33)
  • T9 (GPIO 32)

Bộ chuyển đổi Analog-to-Digital Converter (ADC)

ESP32 có nhiều kênh đầu vào ADC 18 x 12 bit (trong khi ESP8266 chỉ có 1 x 10bit ADC). Dưới đây là các chân GPIOs có thể sử dụng làm ADC và các kênh tương ứng:

  • ADC1_CH0 (GPIO 36)
  • ADC1_CH1 (GPIO 37)
  • ADC1_CH2 (GPIO 38)
  • ADC1_CH3 (GPIO 39)
  • ADC1_CH4 (GPIO 32)
  • ADC1_CH5 (GPIO 33)
  • ADC1_CH6 (GPIO 34)
  • ADC1_CH7 (GPIO 35)
  • ADC2_CH0 (GPIO 4)
  • ADC2_CH1 (GPIO 0)
  • ADC2_CH2 (GPIO 2)
  • ADC2_CH3 (GPIO 15)
  • ADC2_CH4 (GPIO 13)
  • ADC2_CH5 (GPIO 12)
  • ADC2_CH6 (GPIO 14)
  • ADC2_CH7 (GPIO 27)
  • ADC2_CH8 (GPIO 25)
  • ADC2_CH9 (GPIO 26)

Lưu ý: Bạn không thể sử dụng chân ADC2 khi kết nối WiFi. Do đó, nếu bạn đang dùng WiFi và gặp sự cố khi sử dụng chân GPIO ADC2, bạn có thể cân nhắc đổi sang chân GPIO ADC1.

Trên ESP32 Pinout, các kênh đầu vào ADC có độ phân giải 12 bit, đồng nghĩa với việc bạn có thể đọc giá trị trong khoảng từ 0 – 4095, tương ứng với 0V – 3,3V. Bạn cũng có thể cấu hình độ phân giải này tùy thích.

Với các chân ADC trên ESP32 Pinout, bạn sẽ không phân biệt được giữa 0V và 0,1V hoặc giữa 3,2V và 3,3V:

Hoạt động của chân ADC2 trên ESP32 Pinout

Bộ chuyển đổi Digital-to-Analog Converters (DAC)

Các kênh ESP32 Pinout này có thể chuyển đổi tín hiệu Digital thành tín hiệu Analog:

  • DAC1 (GPIO25)
  • DAC2 (GPIO26)

Chân RTC

ESP32 Pinout có chân RTC, cho phép chúng ta sử dụng chân GPIO được định tuyến đến hệ thống con có công suất thấp khi ESP32 đang trong chế độ Deep Sleep. Các chân này có thể dùng để đánh thức ESP32 khỏi chế độ Dêp Sleeep khi bộ đồng xử lý Ultra Low Power đang chạy.

Đây là các chân có thể dùng làm nguồn đánh thức từ bên ngoài:

  • RTC_GPIO0 (GPIO36)
  • RTC_GPIO3 (GPIO39)
  • RTC_GPIO4 (GPIO34)
  • RTC_GPIO5 (GPIO35)
  • RTC_GPIO6 (GPIO25)
  • RTC_GPIO7 (GPIO26)
  • RTC_GPIO8 (GPIO33)
  • RTC_GPIO9 (GPIO32)
  • RTC_GPIO10 (GPIO4)
  • RTC_GPIO11 (GPIO0)
  • RTC_GPIO12 (GPIO2)
  • RTC_GPIO13 (GPIO15)
  • RTC_GPIO14 (GPIO13)
  • RTC_GPIO15 (GPIO12)
  • RTC_GPIO16 (GPIO14)
  • RTC_GPIO17 (GPIO27)

PWM

Bộ điều khiển LED RGB của mạch ESP32 có 16 kênh độc lập, cho phép bạn cấu hình để tạo các tín hiệu PWM với những thuộc tính khác nhau. Tất cả các chân đóng vai trò là output đều có thể dùng làm chân PLC (riêng chân GPIOs từ 34 đến 39 không thể tạo ra xung điện).

Để tạo ra các tín hiệu PWM, bạn cần nêu rõ các thông số sau khi lập trình:

  • Tần số tín hiệu (Signal’s frequency)
  • Chu kỳ (Duty cycle)
  • Kênh PWM
  • Chân GPIO mà bạn muốn xuất tín hiệu

Chân I2C

Trên mạch ESP32 có hỗ trợ 2 kênh I2C, bạn có thể đặc bất kỳ chân nào là SCL hoặc SDA tùy thích:

  • GPIO 21 (SDA)
  • GPIO 22 (SCL)

Trong trường hợp bạn cần sử dụng các chân khác khi sử dụng thư viện Wire, bạn chỉ cần dùng câu lệnh sau:

Wire.begin(SDA, SCL);

SPI

Mặc định, chân tương ứng với SPI như sau:

SPISPIMISOCLKCS
VSPI
GPIO 23

GPIO 19

GPIO 18

GPIO 5
HSPI
GPIO 13

GPIO 12

GPIO 14

GPIO 15

Ngắt ngoài (Chân GPIO Interrupt)

Tất cả các chân GPIOs đều có thể cấu hình để ngắt.

Chân Strapping

Mạch ESp32 có các chân Strapping sau:

  • GPIO 0 (phải cấu hình LOW để chuyển sang chế độ khởi động)
  • GPIO 2 (phải cấu hình LOW trong khi khởi động)
  • GPIO 4
  • GPIO 5 (phải cấu hình HIGH trong khi khởi động)
  • GPIO 12 (phải cấu hình LOW trong khi khởi động)
  • GPIO 15 (phải cấu hình HIGH trong khi khởi động)

Các chân này có mục đích chuyển trạng thái mạch ESP32 thành bootloader hoặc flash. Hiện nay, hầu hết các board mạch đều có tích hợp USB/serial nên bạn không cần phải lo lắng về trạng thái của các chân này.

Tuy nhiên, nếu bạn dùng các thiết bị ngoại vi và kết nối với các chân này, có thể chúng sẽ gây ra khó khăn khi upload chương trình mới lên, khi flash firmware mới cho ESP32 hoặc khi khởi động lại mạch. Điều này xảy ra vì các thiết bị ngoại vi đang kết nối đó đang ngăn cản mạch ESP32 đổi chế độ.

Các chân cấu hình HIGH khi khởi động

Một số chân GPIOs sẽ tự đổi trạng thái tín hiệu thành HIGH hoặc tín hiệu đầu ra PWM khi bạn khởi động hoặc reset mạch ESP32. Điều này có thể sẽ khiến kết quả bạn nhận được bị sai nếu bạn có các output kết nối với các chân GPIOs này:

  • GPIO 1
  • GPIO 3
  • GPIO 5
  • GPIO 6 đến chân GPIO 11 (được kết nối với bộ nhớ flash SPI tích hợp trên ESP32 – không nên sử dụng).
  • GPIO 14
  • GPIO 15

Enable

Đây là chân kích hoạt của bộ điều chỉnh 3,3V. Nó được pulled up, vì vậy bạn cần kết nối với mặt đất để tắt bộ điều chỉnh 3,3V. Bạn có thể sử dụng chân này kết nối với nút nhấn để khởi động lại ESP32.

GPIO current drawn

Dòng điện tối đa cho mỗi chân GPIOs là 40mA

Cảm biến hiệu ứng Hall tích hợp

Trên mạch ESP32 cũng có các cảm biến hiệu ứng Hall tích hợp, cho phép chúng ta phát hiện sự thay đổi của từ trường ở môi trường xung quanh.

Lời kết

Trên đây là tất cả các kiến thức về ESP32 Pinoput cho bạn. Nếu có bất kỳ thắc mắc gì, bạn có thể để lại bình luận bên dưới để IoTZone hỗ trợ bạn nhé!

Trả lời

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *