Mỗi chân của ESP32 bao gồm chức năng gì? Sơ đồ chân ESP32 được cấu tạo như thế nào?
Có rất nhiều câu hỏi về cách sử dụng các GPIO của ESP32. Bạn nên sử dụng các chân nào? Bạn nên tránh sử dụng các chân nào trong các dự án của mình? Bài này nhằm cho các bạn một số tham khảo đơn giản và dễ làm cho các GPIO của ESP32.
Bài này nằm trong Serie Học lập trình ESP32 Từ A tới Z
Trong phạm vi bài này, mình sẽ không chỉ rõ chân chip ESP32 (các bạn có thể tham khảo trong datasheet) mà sẽ chỉ có các chân của ESP32 WROOM và KIT ESP32
Sơ đồ chân ESP32
ESP32 WROOM là 1 dạng SoC (System on Chip) trên đó đã được thiết kế sẵn để cho chip ESP32 hoạt động.
Đây là thành phần cơ bản của một sản phẩm IOT sử dụng ESP32.
ESP32 DEVKIT V1 – DOIT hay nhiều biến thể khác nhau, đều có chung Pinout hoặc gần giống nhau. Đây cũng là KIT mà chúng ta sẽ sử dụng trong khuôn khổ các bài học này
Dưới đây là bảng tra cứu khả năng sử dụng của các chân.
Các chân được đánh dấu màu xanh lá cây là OK để sử dụng. Các chân được đánh dấu màu vàng thì có thể sử dụng, nhưng bạn cần chú ý vì chúng có thể có hoạt động không mong muốn chủ yếu khi khởi động. Các chân được đánh dấu màu đỏ không được khuyến khích sử dụng làm đầu vào hoặc đầu ra .
GPIO Pin | Input | Output | Chức năng đặc biệt |
0 | pulled up | OK | outputs PWM signal at boot |
1 | TX pin | OK | debug output at boot |
2 | OK | OK | connected to on-board LED |
3 | OK | RX pin | HIGH at boot |
4 | OK | OK | |
5 | OK | OK | outputs PWM signal at boot |
6 | X | X | connected to the integrated SPI flash |
7 | X | X | connected to the integrated SPI flash |
8 | X | X | connected to the integrated SPI flash |
9 | X | X | connected to the integrated SPI flash |
10 | X | X | connected to the integrated SPI flash |
11 | X | X | connected to the integrated SPI flash |
12 | OK | OK | boot fail if pulled high |
13 | OK | OK | |
14 | OK | OK | outputs PWM signal at boot |
15 | OK | OK | outputs PWM signal at boot |
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 | input only | |
35 | OK | input only | |
36 | OK | input only | |
39 | OK | input only |
Mô tả các chân ESP32
Chân Input Only
GPIO từ 34 đến 39 là GPI – chân chỉ đầu vào. Các chân này không có điện trở kéo lên hoặc kéo xuống bên trong. Chúng không thể được sử dụng làm đầu ra, vì vậy chỉ sử dụng các chân này làm đầu vào:
- GPIO 34
- GPIO 35
- GPIO 36
- GPIO 39
Chân tích hợp Flash trên ESP32
GPIO 6 đến GPIO 11 dùng để kết nối Flash SPI, không khuyến khích sử dụng trong các ứng dụng khác
- 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 cám biến điện dung
Các chân ESP32 này có chức năng như 1 nút nhấn cảm ứng, có thể phát hiện sự thay đổi về điện áp cảm ứng trên chân.
Các cảm biến cảm ứng bên trong đó được kết nối với các GPIO 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)
Analog to Digital Converter (ADC)
ESP32 có các kênh đầu vào ADC 18 x 12 bit (trong khi ESP8266 chỉ có ADC 1x 10 bit). Đây là các GPIO có thể được 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)
Các kênh đầu vào ADC có độ phân giải 12 bit. Điều này có nghĩa là bạn có thể nhận được các số đọc tương tự từ 0 đến 4095, trong đó 0 tương ứng với 0V và 4095 đến 3,3V. Bạn cũng có thể lập trình độ phân giải của các kênh của mình trên code.
Digital to Analog Converter (DAC)
Có các kênh DAC 2 x 8 bit trên ESP32 để chuyển đổi tín hiệu kỹ thuật số thành đầu ra tín hiệu điện áp tương tự. Các kênh này chỉ có độ phân giải 8 bit, nghĩa là có giá trị từ 0 – 255 tương ứng với 0 – 3.3V
Đây là các kênh DAC:
- DAC1 (GPIO25)
- DAC2 (GPIO26)
Các chân thời gian thực RTC
Các chân này có tác dụng đánh thức ESP32 khi trong chế độ Low Power Mode. Sử dụng như 1 chân ngắt ngoài.
Các chân RTC:
- 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)
Chân PWM
ESP32 LED PWM có 16 kênh độc lập có thể được định cấu hình để tạo tín hiệu PWM với các thuộc tính khác nhau. Tất cả các chân có thể hoạt động như đầu ra đều có thể được sử dụng làm chân PWM (GPIO từ 34 đến 39 không thể tạo PWM).
Để xuất PWM, bạn cần xác định các thông số này trong code:
- Frequency – tần số
- Duty cycle
- Kênh PWM
- Chân GPIO nơi bạn muốn xuất tín hiệu
Chân I2C
ESP32 có hai kênh I2C và bất kỳ chân nào cũng có thể được đặt làm SDA hoặc SCL. Khi sử dụng ESP32 với Arduino IDE, các chân I2C mặc định là:
- GPIO 21 (SDA)
- GPIO 22 (SCL)
Nếu các bạn muốn sử dụng chân khác cho việc điều khiển I2C có thể sử dụng code:
Wire.begin(SDA, SCL);
Chân Ngắt Ngoài
Tất cả các chân ESP32 đều có thể sử dụng ngắt ngoài
Sơ đồ nguyên lý của ESP32 Dev KIT V1
Đây là sơ đồ nguyên lý của KIT, các bạn có thể tham khảo để tự vẽ cho mình 1 sơ đồ nguyên lý sử dụng ESP32
Kết
Trên đây là sơ đồ chân ESP32 ( ESP32 Pinout) các bạn lưu ý chọn các chân phù hợp với dự án của mình nhé. Đừng quên vào hội Anh Em Nghiện Lập Trình để kết nối với những người có cùng đam mê nhé.