Sơ đồ chân ESP8266
ESP8266 mang lại lợi thế với số lượng chân GPIO khá lớn đáp ứng nhu cầu của bạn. Tuy nhiên, điều quan trọng là phải chú ý kỹ các chi tiết của sơ đồ chân cắm (pinout). Không phải tất cả các chân GPIO trên ESP8266 đều an toàn để sử dụng.
Điều quan trọng là lưu ý rằng tham chiếu bố trí chân được cung cấp dưới đây liên quan đến bảng phát triển ESP8266 NodeMCU 30 chân được sử dụng rộng rãi.

Phần cứng cần chuẩn bị
| 1 | × | ESP8266 NodeMCU ESP-12E | ||
| 1 | × | Recommended: ESP8266 NodeMCU ESP-12E (Uno-form) | ||
| 1 | × | USB Cable Type-A to Type-C (for USB-A PC) | ||
| 1 | × | USB Cable Type-C to Type-C (for USB-C PC) | ||
| 1 | × | breadboard | ||
| 1 | × | dây jumper | ||
| 1 | × | (Khuyến nghị) Screw Terminal Expansion Board for ESP8266 | ||
| 1 | × | (Khuyến nghị) Power Splitter for ESP8266 Type-C |
Or you can buy the following kits:
| 1 | × | DIYables Sensor Kit (30 sensors/displays) | ||
| 1 | × | DIYables Sensor Kit (18 sensors/displays) |
Các thiết bị ngoại vi và I/O của ESP8266
ESP8266 NodeMCU tự hào có tổng cộng 17 chân GPIO được phân bổ trên cả hai bên của bảng phát triển thông qua các header pin. Những chân này rất linh hoạt và có thể được gán cho nhiều chức năng ngoại vi khác nhau, bao gồm:
- 9 x chân I/O kỹ thuật số:
- 1 x kênh ADC: Cung cấp một kênh với độ phân giải 10-bit của ADC SAR.
- 2 x giao diện UART: Bao gồm hai giao diện UART với hỗ trợ điều khiển luồng.
- 4 x đầu ra PWM: Cung cấp bốn chân PWM để điều chỉnh các yếu tố như tốc độ động cơ hoặc độ sáng của đèn LED.
- 2 x SPI: Được trang bị hai giao diện SPI để kết nối các cảm biến và phụ kiện đa dạng.
- 1 x I2C: Bao gồm một giao diện I2C để kết nối với nhiều loại cảm biến và phụ kiện.
- 1 x I2S: Bao gồm một giao diện I2S để tích hợp âm thanh vào dự án của bạn.
Sơ đồ chân ESP8266
ESP8266 NodeMCU tự hào có tổng cộng 30 chân, được bố trí để dễ sử dụng cho người dùng. Hãy xem sơ đồ pinout dưới đây để khám phá cách bố trí.

Bây giờ, chúng ta sẽ đi sâu vào từng chân của ESP8266 và làm rõ các chức năng cụ thể của chúng.
Chân Nhập/Xuất Kỹ Thuật Số
Trong 30 chân của bo mạch ESP8266 NodeMCU, bạn có thể sử dụng 9 chân cho đầu vào/ra kỹ thuật số. Trong số 9 chân này, 5 chân an toàn để sử dụng, 4 chân còn lại cũng có thể được sử dụng làm đầu vào/ra kỹ thuật số nhưng cần thận trọng.
Trong 30 chân của bảng ESP8266 NodeMCU, có 9 chân có thể được sử dụng cho mục đích nhập/xuất kỹ thuật số. Cụ thể:
- 5 chân an toàn để sử dụng làm chân đầu vào/đầu ra số
- 4 chân cũng có thể được sử dụng làm chân đầu vào/đầu ra số, nhưng yêu cầu xử lý cẩn thận.
- Tất cả 9 chân có thể được cấu hình với pull-up hoặc pull-down nội bộ (on-chip), hoặc ở chế độ trở kháng cao.
Bảng dưới đây cho thấy những chân an toàn để sử dụng và những chân nên được sử dụng thận trọng.
| GPIO | Pin Label | Safe to use? | Reason |
|---|---|---|---|
| GPIO16 | D0 | HIGH at boot, used to wake up from deep sleep | |
| GPIO5 | D1 | ||
| GPIO4 | D2 | ||
| GPIO0 | D3 | connected to FLASH button, boot fails if pulled LOW. On-board 10k external pull-up resistor | |
| GPIO2 | D4 | HIGH at boot, boot fails if pulled LOW. On-board 10k external pull-up resistor | |
| GPIO14 | D5 | ||
| GPIO12 | D6 | ||
| GPIO13 | D7 | ||
| GPIO15 | D8 | Required for boot, boot fails if pulled HIGH. On-board 10k external pull-down resistor | |
| GPIO3 | RX | RX pin, used for flashing and debugging | |
| GPIO1 | TX | TX pin, used for flashing and debugging | |
| GPIO6 | CLK | Connected to Flash memory | |
| GPIO7 | SDO | Connected to Flash memory | |
| GPIO11 | CMD | Connected to Flash memory | |
| GPIO8 | SD1 | Connected to Flash memory | |
| GPIO9 | SD2 | Connected to Flash memory | |
| GPIO10 | SD3 | Connected to Flash memory | |
| ADC0 | A0 | Can be used as the analog input pin only. |
xuống dòng
| Legend | |
|---|---|
| These are your top-priority pins, absolutely safe for use. No concerns here. | |
| Pay close attention because their behavior, particularly during boot, can be unpredictable. Also pay attention to their on-board external pull-up/pull-down resistors. Use them only when absolutely necessary. | |
| These pins should NOT be used as digital input/output pins. |
Hình ảnh dưới đây cho thấy các chân GPIO nào có thể được sử dụng làm chân đầu vào/đầu ra số.

Cách lập trình cho các chân đầu vào/đầu ra kỹ thuật số của ESP8266.
Bạn có thể sử dụng các hàm sau đây để thao tác các chân đầu vào/đầu ra số của ESP8266.
Xin lưu ý rằng bạn cần sử dụng nhãn chân pin trong mã. Ví dụ, chân GPIO5 (D1):
Ví dụ về việc sử dụng chân đầu vào kỹ thuật số của ESP8266:
Các ví dụ về cách sử dụng chân đầu ra số của ESP8266:
Các chân ADC
ESP8266 được trang bị một bộ chuyển đổi từ tín hiệu tương tự sang số (ADC) có độ phân giải 10 bit, cho phép nó phân biệt 1024 (2^10) mức tương tự khác nhau. Về cơ bản, nó chuyển đổi các điện áp đầu vào trong phạm vi từ 0 đến 3,3 V (điện áp hoạt động) thành các giá trị nguyên từ 0 đến 1024. Do đó, cấu hình này cho ra độ phân giải là 3,3 V chia cho 1024 đơn vị, tương đương với 0,0032 V (3,2 mV) cho mỗi đơn vị.

Ví dụ mã nguồn dùng ADC trên ESP8266:
Ví dụ về các cảm biến tương tự sử dụng chân A0 của ESP8266:
Các chân SPI
ESP8266 có hai SPI (SPI và HSPI) ở chế độ slave và master. Các SPI này cũng hỗ trợ các tính năng SPI dùng cho mục đích chung được liệt kê dưới đây:
- 4 chế độ thời gian của truyền theo định dạng SPI
- Tối đa 80 MHz và các đồng hồ được chia từ 80 MHz
- FIFO lên tới 64 byte

Ví dụ về cách sử dụng các chân SPI của ESP8266:
Các chân I2C
ESP8266 không có các chân I2C tích hợp sẵn, nhưng bạn vẫn có thể khiến nó hoạt động thông qua kỹ thuật bitbang. Nó hoạt động tốt, và ESP8266 đủ nhanh để đáp ứng hiệu suất mong đợi từ Arduino.
Theo mặc định, GPIO4 (SDA) và GPIO5 (SCL) được thiết lập làm chân I2C để đơn giản hóa cho những người đang sử dụng mã Arduino hiện có, các thư viện và các sketch.
Tuy nhiên, bạn có thể tự do chọn bất kỳ hai chân GPIO nào khác cho I2C bằng cách sử dụng wire.begin(SDA, SCL) trong Arduino IDE.

Ví dụ về cách sử dụng các chân I2C của ESP8266:
Các chân UART
ESP8266 tự hào có hai giao diện UART, UART0 và UART2, cho phép giao tiếp bất đồng bộ (RS232 và RS485) với tốc độ ấn tượng lên tới 4,5 Mbps. Khả năng này làm cho chúng phù hợp với các ứng dụng truyền dữ liệu tốc độ cao.
- UART0 (các chân TXD0, RXD0, RST0 và CTS0) được sử dụng cho giao tiếp.
- UART1 (chân TXD1) chỉ có tín hiệu truyền dữ liệu và thường được dùng để ghi log.

RXD0 và TXD0 đóng vai trò là các chân điều khiển nối tiếp và bootloader cho mô-đun ESP, đóng vai trò quan trọng trong giao tiếp với mô-đun. Chúng đặc biệt quan trọng trong quá trình bootloading. Do đó, bạn nên thận trọng khi sử dụng chúng vì chúng được kết nối qua bộ chuyển đổi USB-to-serial và do đó sẽ nhận dữ liệu USB.
Các chân PWM
Mọi chân GPIO trên ESP8266, từ GPIO0 đến GPIO15, đều có thể được lập trình để tạo ra các đầu ra PWM (Pulse Width Modulation).
Tín hiệu PWM trên ESP8266 có độ phân giải 10 bit, cho phép điều khiển đầu ra một cách chính xác. Ngoài ra, dải tần số PWM có thể tùy chỉnh, từ 1000 μs đến 10000 μs, tương đương với phạm vi tần số linh hoạt từ 100 Hz đến 1 kHz. Sự linh hoạt này làm cho nó phù hợp với nhiều ứng dụng khác nhau đòi hỏi các thiết lập PWM đa dạng.
Chân nguồn
- Chân VIN cung cấp một tùy chọn thuận tiện để cấp nguồn trực tiếp cho ESP8266 và các thiết bị ngoại vi khi được cấp nguồn từ nguồn 5V được ổn định.
- Chân 3V3 đóng vai trò là đầu ra từ bộ ổn áp trên bo mạch, có thể cung cấp tới 600 mA. Điều này làm cho nó trở thành nguồn đáng tin cậy để cấp nguồn cho các thiết bị và linh kiện được kết nối.
- GND hoạt động như chân đất, thiết lập điểm tham chiếu điện cho ESP8266 và các thiết bị được kết nối. Nó đảm bảo một mặt đất chung cho hệ thống, duy trì các kết nối điện ổn định và đúng chuẩn.
Các chân ngắt
Mọi GPIO (General Purpose Input/Output) trên ESP8266, ngoại trừ GPIO16, có thể được cấu hình như ngắt.
Điều này có nghĩa là mỗi GPIO, từ GPIO0 đến GPIO15, có thể được thiết lập để kích hoạt ngắt, cho phép ESP8266 phản hồi các sự kiện cụ thể hoặc những thay đổi trong trạng thái đầu vào. GPIO16, tuy nhiên, không hỗ trợ cấu hình ngắt này. Sự linh hoạt trong việc sử dụng ngắt này nâng cao khả năng ESP8266 xử lý các sự kiện thời gian thực và tương tác với các thiết bị bên ngoài.
Các chân SDIO
ESP8266 được trang bị một SDIO slave duy nhất (Giao diện Nhập/Xuất Secure Digital) được thiết kế để kết nối thẻ SD. Nó hỗ trợ cả SDIO v1.1 ở 4-bit 25 MHz và SDIO v2.0 ở 4-bit 50 MHz.
Tính năng này cho phép tích hợp liền mạch thẻ SD với ESP8266, cung cấp khả năng truyền dữ liệu với tốc độ cao và tương thích với các phiên bản SDIO khác nhau. Dù sử dụng SDIO v1.1 hay v2.0, ESP8266 mang lại sự linh hoạt trong việc kết nối và truy cập dữ liệu từ các thẻ SD một cách hiệu quả.
Các pin điều khiển
- Chân EN (còn được gọi là CH_PD hoặc Chip Power Down) đóng vai trò là chân kích hoạt cho ESP8266 và được kéo lên mức cao theo mặc định. Khi ở mức HIGH, chip được kích hoạt, cho phép vận hành bình thường. Ngược lại, khi bị kéo xuống ở mức LOW, chip bị vô hiệu hóa, thực sự tắt nguồn.
- Chân RST đóng vai trò là chân reset cho ESP8266, và nó được kéo lên mức cao theo mặc định. Khi bị kéo xuống về mức đất trong một thời gian ngắn, nó kích hoạt reset cho ESP8266, tương tự như nhấn nút RST trên bo mạch.
- Chân FLASH được ESP8266 sử dụng để xác định xem có boot vào bootloader hay không. Giữ chân này ở mức thấp trong quá trình cấp nguồn sẽ bắt đầu quá trình vào bootloader, tương tự như nhấn nút FLASH trên bo mạch.
- Chân WAKE được dùng để đánh thức ESP8266 khỏi chế độ ngủ sâu, cho phép thiết bị tiếp tục hoạt động bình thường sau khi ở trạng thái tiết kiệm điện.