ESP32-S3 Zero là một board siêu nhỏ gọn, phù hợp để làm “trái tim” cho các dự án IoT, wearable hoặc module ngoại vi giao tiếp với boar trung tâm. Bài này đóng vai trò như một “datasheet pinout rút gọn” để bạn tra cứu nhanh khi đi dây.
1. Kích thước & tổng quan board
Dựa trên hình pinout:
- Kích thước: 18.0 mm (rộng) x 23.5 mm (dài)
- Bước chân: 2.54 mm – cắm vừa breadboard / stripboard.
- Cổng USB-C dùng để nạp firmware & cấp nguồn 5V.
- Trên board có sẵn:
- IC nguồn 3.3V
- 2 nút: BOOT (download mode) & RESET/EN
- 1 LED RGB WS2812B gắn sẵn, nối với GPIO21.
Board đưa ra 26 chân ở hai bên, gồm:
- Nhóm nguồn & điều khiển
- Nhóm TX/RX UART0
- 24 chân GPIO đa dụng hỗ trợ nhiều chức năng (UART, I2C, SPI, I2S, PWM, ADC).
2. Nhóm chân nguồn & điều khiển
Ở phía đầu USB-C:
- 5V
- Cấp nguồn 5V trực tiếp (từ cổng USB, adapter, module sạc pin…).
- Khi cấp ngoài, nên dùng nguồn ổn định, dòng tối thiểu 500 mA cho các project có nhiều cảm biến/LED.
- 3V3 / 3V3OUT
- Nguồn 3.3V sau bộ ổn áp trên board.
- Dùng để cấp cho cảm biến, module logic 3.3V.
- Nên giới hạn tổng dòng tải cảm biến ở khoảng ≤ 300–400 mA cho an toàn (tùy theo datasheet bộ nguồn của batch board bạn mua).
- GND
- Chân mass chung.
- Bắt buộc nối chung GND giữa ESP32-S3 Zero và toàn bộ cảm biến, module ngoại vi.
- EN / RESET
- Kéo xuống GND để reset chip.
- Thường chỉ dùng sẵn nút nhấn có trên board, ít khi cần nối ra ngoài.
- BOOT
- Dùng cùng nút RESET để vào chế độ nạp firmware (flash mode).
- Có thể tận dụng làm GPIO nếu thật sự cần, nhưng nên giữ cho việc nạp code ổn định.
3. Các nhóm GPIO & chức năng hỗ trợ
3.1. Các chân GPIO phía bên trái
Theo hình pinout, bên trái có các chân:
- Nhóm trên: GP1, GP2, GP3, GP4, GP5, GP6
- Hỗ trợ: UART, PWM, I2S, ADC, I2C, SPI
- Có thể dùng:
- Làm UART cho module SIM, GPS
- ADC đọc cảm biến analog (cảm biến khí, cảm biến ánh sáng…)
- PWM cho servo / dim LED
- Nhóm dưới: GP45, GP42, GP41, GP40, GP39, GP38, GP18, GP17
- GP18, GP17: có ADC (ngoài các chức năng UART, PWM, I2S, I2C, SPI).
- GP45, GP42, GP41, GP40, GP39, GP38: không có ADC, nhưng đầy đủ UART, PWM, I2S, I2C, SPI – rất phù hợp cho bus giao tiếp / output digital.
3.2. Các chân GPIO phía bên phải
Bên phải gồm:
- TX, RX
- Gắn với UART0 (TX0/RX0) – đây là đường nối với USB-Serial trên board.
- Dùng để:
- Nạp code, log
Serialtrong Arduino / ESP-IDF.
- Nạp code, log
- Không nên dùng cho cảm biến nếu bạn cần debug nhiều, vì sẽ “đụng” đường nạp code.
- Nhóm còn lại: GP13, GP12, GP11, GP10, GP9, GP8, GP7, GP16, GP15, GP14
- Mỗi chân đều hỗ trợ: SPI, I2C, ADC, I2S, PWM, UART.
- Rất linh hoạt, có thể chọn làm:
- Bus I2C (ví dụ GP8 = SDA, GP9 = SCL – bạn tự đặt trong code)
- Bus SPI (GP13/12/11/10 làm MOSI/MISO/SCK/CS)
- Kênh ADC cho nhiều cảm biến analog
- Kênh PWM cho LED, động cơ nhỏ
3.3. Các chân ADC (Analog Input) nên ưu tiên
Từ bảng màu “ADC” trên hình, các chân có ADC gồm:
- Bên trái: GP1, GP2, GP3, GP4, GP5, GP6, GP18, GP17
- Bên phải: GP13, GP12, GP11, GP10, GP9, GP8, GP7, GP16, GP15, GP14
Bạn có thể thoải mái chọn trong nhóm này để đọc cảm biến analog (0–3.3V).
Ngắn gọn: ESP32-S3 chỉ có 3 UART phần cứng ⇒ tối đa 3 “cổng UART” chạy song song.
3.4. ESP32-S3 có bao nhiêu UART?
Bên trong chip ESP32-S3 có:
- UART0
- UART1
- UART2
Mỗi UART có thể gán lên nhiều GPIO khác nhau nhờ pin matrix.
Trên board ESP32-S3 Zero, gần như tất cả GPIO trong hình có chữ UART đều có thể dùng làm chân TX/RX cho một trong 3 UART này.
Vì vậy:
- Nếu dùng TX & RX cho mỗi UART ⇒ 3 UART full-duplex (6 chân GPIO).
- Nếu chỉ cần 1 chiều (chỉ TX hoặc chỉ RX) thì vẫn là 3 UART, nhưng mỗi UART chỉ xài 1 chân.
3.4.1. Số UART “thực tế” có thể dùng
Tuỳ cách bố trí:
- Giữ 1 UART cho debug (Serial)
- Thường dùng UART0 cho log / debug (
Serial). - Còn lại UART1 + UART2 cho thiết bị ngoài.
👉 Thực tế: 2 cổng UART ngoại vi + 1 cổng debug.
- Thường dùng UART0 cho log / debug (
- Không cần debug UART, dùng USB-CDC để log
- Nếu dùng log qua USB (Serial USB), có thể dùng cả UART0/1/2 cho thiết bị ngoài.
👉 Lúc này có thể gắn tới 3 module UART (ví dụ: SIM 4G, GPS, RS485) chạy song song.
- Nếu dùng log qua USB (Serial USB), có thể dùng cả UART0/1/2 cho thiết bị ngoài.
3.4.2. Gợi ý map chân cụ thể trên ESP32-S3 Zero
Ví dụ một cấu hình dễ nhớ (có thể đổi tuỳ ý trong code):
- UART0 – Debug / thiết bị 1
- TX0 = chân TX trên board
- RX0 = chân RX
- UART1 – SIM 4G
- TX1 = GP1
- RX1 = GP2
- UART2 – module khác (GPS, RS485, cảm biến UART…)
- TX2 = GP5
- RX2 = GP6
Chỉ cần trong code (Arduino) gán lại như:
Serial.begin(115200); // UART0
Serial1.begin(9600, SERIAL_8N1, 2, 1); // RX=2, TX=1 (UART1)
Serial2.begin(9600, SERIAL_8N1, 6, 5); // RX=6, TX=5 (UART2)
3.4.3. Lưu ý khi dùng nhiều UART
- Tất cả vẫn là 3 UART phần cứng tối đa, không hơn – dù nhiều chân có label “UART”.
- Tránh dùng các chân “nhạy cảm” (strap pin) để kéo cứng lên GND/3V3, vì có thể làm chip boot sai chế độ.
- Đừng quên nối GND chung giữa ESP32-S3 và toàn bộ module UART.
4. LED RGB tích hợp – GPIO21
Trên hình có ghi rõ: RGB LED WS2812B – GPIO21
- Board có 1 LED RGB địa chỉ WS2812B tích hợp sẵn.
- Chân điều khiển nối vào GPIO21 (không được kéo ra pad).
- Lưu ý: LED này ăn điện từ 5V trên board, nhưng tín hiệu điều khiển chỉ 3.3V từ ESP32-S3 – đã được thiết kế tương thích sẵn, bạn không cần thêm mạch chuyển mức.
- Ví dụ: Điều khiển LED có sẵn trên board
#include <Adafruit_NeoPixel.h>
#define RGB_PIN 21
Adafruit_NeoPixel strip(1, RGB_PIN, NEO_GRB + NEO_KHZ800);
void setup() {
strip.begin();
strip.setBrightness(30);
}
void loop() {
strip.setPixelColor(0, strip.Color(0, 150, 0)); // Màu xanh lá
strip.show();
delay(500);
}
5. Lưu ý về cấp nguồn & an toàn kết nối
5.1. Điện áp logic
- Tất cả GPIO của ESP32-S3 là 3.3V.
- Không được đưa tín hiệu 5V trực tiếp vào chân GPIO, nếu không rất dễ cháy chip.
- Nếu dùng cảm biến 5V (ví dụ HC-SR04, một số module relay…), hãy:
- Cấp 5V riêng cho cảm biến.
- Dùng mạch chia áp / level shifter để hạ tín hiệu xuống 3.3V khi đưa về ESP32-S3.
5.2. Cấp nguồn qua 5V
- Nên dùng:
- Cổng USB-C (từ adapter 5V–2A, sạc điện thoại, PC…)
- Hoặc chân 5V nếu cấp từ module step-up / step-down.
- Không nên:
- Cấp trực tiếp pin Li-ion 3.7V vào 5V hoặc 3V3 nếu chưa đi qua mạch ổn áp / sạc phù hợp.
5.3. Dòng tải từ 3V3OUT
- 3V3OUT có giới hạn dòng, tùy theo phiên bản board.
- Với các project nhiều LED, nhiều cảm biến, nên:
- Tách riêng nguồn 5V/3.3V cho tải nặng (WS2812 strip, servo, relay coil…).
- Dùng chung GND với ESP32-S3 để tín hiệu ổn định.
5.4. Nối GND chung
- Tất cả module (cảm biến, màn hình, SIM, NRF24, LoRa, v.v.) phải nối chung GND.
- Thiếu GND chung là nguyên nhân rất thường gặp khiến:
- I2C không nhận được địa chỉ
- UART không đọc được dữ liệu
- ADC đo giá trị sai lệch
6. Gợi ý map chân khi làm project IoT
Bạn có thể chuẩn hoá một “layout mặc định” cho IoT project để tái sử dụng:
- UART0 (USB debug): TX/RX giữ nguyên cho nạp code & log.
- UART1 – module SIM / GPS: dùng GP1 (TX1) & GP2 (RX1).
- I2C bus cảm biến:
- SDA = GP8, SCL = GP9 (ví dụ kết nối BME280, OLED I2C…).
- SPI bus màn hình / SD:
- MOSI = GP13, MISO = GP12, SCK = GP11, CS = GP10.
- ADC quan trọng:
- Cảm biến analog: chọn GP3, GP4, GP17, GP18…
- PWM điều khiển LED / servo:
- Dùng GP5, GP6, GP14, GP15 tùy bố trí mạch.
Bạn hoàn toàn có thể thay đổi trong code, nhưng việc cố định một “chuẩn IoTLabs” sẽ giúp:
- Dễ tái sử dụng code skeleton
- Dễ vẽ shield / module mở rộng đồng nhất
7. Kết luận
ESP32-S3 Zero là một board nhỏ nhưng rất nhiều chân:
- 26 chân tổng cộng, trong đó 24 GPIO đa dụng hỗ trợ UART, I2C, SPI, I2S, PWM; phần lớn có ADC.
- Có sẵn USB-C, LED RGB WS2812B (GPIO21), nút BOOT & RESET.
- Phù hợp làm module gas, water level, robot, AI voice buddy…
Bạn có thể lưu bài này như một “thư viện datasheet pinout” để tra cứu nhanh mỗi khi thiết kế shield, module mở rộng hay debug mạch với ESP32-S3 Zero.



Leave a Reply