ESP32-C3 SuperMini là board ESP32 nhỏ gọn nhất hiện nay, giá dưới 30k nhưng tích hợp đủ Wi-Fi + Bluetooth 5.0. Vấn đề: pinout dày đặc, tên chân trên silk screen ngắn gọn, và board này do nhiều nhà sản xuất third-party sản xuất — pinout có thể khác nhau tùy phiên bản. Bài này dùng bản chuẩn thông dụng nhất hiện nay — bản phổ biến nhất trên thị trường Việt Nam.
Lưu ý quan trọng: ESP32-C3 SuperMini là board third-party, không phải sản phẩm chính thức của Espressif. Nhiều nhà sản xuất khác nhau có thể có bố cục chân không giống nhau. Sơ đồ trong bài này là bản phổ biến nhất, nhưng luôn đối chiếu với sơ đồ thực tế của board bạn đang cầm trên tay trước khi kết nối.
Tổng Quan Board
| Thông Số | Giá Trị |
|---|---|
| Chip | ESP32-C3FH4 (RISC-V 32-bit, 160MHz) |
| Flash | 4MB built-in |
| RAM | 400KB SRAM |
| Wi-Fi | 802.11 b/g/n 2.4GHz |
| Bluetooth | BLE 5.0 |
| GPIO | 13 chân (GPIO0–GPIO10, GPIO20, GPIO21) |
| ADC | 6 kênh (12-bit, GPIO0–GPIO5) |
| USB | Native USB CDC (không cần chip CH340/CP2102) |
| Kích thước | ~22 × 18mm |
| Điện áp logic | 3.3V — không chịu 5V trên GPIO |
Điểm khác biệt so với ESP32 thường: chip RISC-V (không phải Xtensa), chỉ 1 core, GPIO ít hơn nhiều (13 chân). Không có DAC, không có hall sensor.
Sơ Đồ Chân Đầy Đủ — Bản Chuẩn Thông Dụng Nhất

Chân Nguồn
| Nhãn Trên Board | Tên | Chức Năng |
|---|---|---|
| 5V | 5V | Nguồn 5V — vào từ USB hoặc nguồn ngoài |
| G | GND | Mass / 0V — nối chung GND với tất cả module ngoài |
| 3.3 | 3V3 | Nguồn 3.3V ra — cấp cho cảm biến và module nhỏ |
Chân Bên Trái Board (ADC / GPIO)
| Nhãn | GPIO | Chức Năng Phụ | Mô Tả |
|---|---|---|---|
| 4 | GPIO4 | A4 / SCK | ADC kênh 4 hoặc chân SCK của SPI |
| 3 | GPIO3 | A3 | ADC kênh 3, GPIO thông thường |
| 2 | GPIO2 | A2 | ADC kênh 2, GPIO thông thường |
| 1 | GPIO1 | A1 | ADC kênh 1, GPIO thông thường |
| 0 | GPIO0 | A0 | ADC kênh 0, GPIO thông thường |
Chân Bên Phải Board (Digital / SPI / I2C / UART)
| Nhãn | GPIO | Chức Năng Phụ | Mô Tả |
|---|---|---|---|
| 5 | GPIO5 | A5 / MISO | ADC kênh 5 hoặc MISO của SPI |
| 6 | GPIO6 | MOSI | MOSI của SPI |
| 7 | GPIO7 | SS | Chip Select của SPI |
| 8 | GPIO8 | SDA | Data line của I2C |
| 9 | GPIO9 | SCL | Clock của I2C — kiêm nút BOOT |
| 10 | GPIO10 | — | GPIO thông thường |
| 20 | GPIO20 | RX | Nhận dữ liệu UART |
| 21 | GPIO21 | TX | Truyền dữ liệu UART |
Mapping Chi Tiết Theo Nhóm Chức Năng
ADC — 6 Kênh, Chỉ Có ADC1
| ADC Kênh | GPIO | Nhãn Board |
|---|---|---|
| CH0 | GPIO0 | 0 |
| CH1 | GPIO1 | 1 |
| CH2 | GPIO2 | 2 |
| CH3 | GPIO3 | 3 |
| CH4 | GPIO4 | 4 (dùng chung SCK) |
| CH5 | GPIO5 | 5 (dùng chung MISO) |
ESP32-C3 không có ADC2. Tất cả 6 kênh đều thuộc ADC1.
Hạn chế quan trọng: ADC không cho kết quả chính xác khi Wi-Fi đang bật. Đây là giới hạn phần cứng, không phải lỗi code. Nếu cần đọc analog trong khi kết nối mạng, dùng module ADC ngoài như ADS1115 qua I2C.
SPI
| Vai Trò | GPIO | Nhãn Board |
|---|---|---|
| SCK (Clock) | GPIO4 | 4 |
| MISO (Master In Slave Out) | GPIO5 | 5 |
| MOSI (Master Out Slave In) | GPIO6 | 6 |
| SS (Chip Select) | GPIO7 | 7 |
#include <SPI.h>
// SCK=GPIO4, MISO=GPIO5, MOSI=GPIO6, SS=GPIO7
SPI.begin(4, 5, 6, 7);
I2C (Wire)
| Vai Trò | GPIO | Nhãn Board |
|---|---|---|
| SDA | GPIO8 | 8 |
| SCL | GPIO9 | 9 |
#include <Wire.h>
Wire.begin(8, 9); // SDA=GPIO8, SCL=GPIO9
GPIO9 là nút BOOT trên board (giữ LOW khi cắm điện = vào boot mode). Hoàn toàn dùng được làm SCL khi chạy bình thường — chỉ cần chú ý khi muốn vào boot mode thủ công: phải disconnect thiết bị I2C khỏi GPIO9 trước.
UART
| UART | TX | RX |
|---|---|---|
| UART0 (mặc định) | GPIO21 | GPIO20 |
| UART1 (tùy chọn) | Bất kỳ GPIO | Bất kỳ GPIO |
UART0 dùng chung với USB CDC. Không nối thiết bị UART vào GPIO20/GPIO21 khi USB đang kết nối:
// Dùng UART1 cho thiết bị ngoại vi
Serial1.begin(9600, SERIAL_8N1, 3, 10); // RX=GPIO3, TX=GPIO10
PWM
Tất cả GPIO của ESP32-C3 đều hỗ trợ PWM qua LEDC — không như Arduino Uno chỉ có vài chân ~. 8 kênh độc lập, tần số và duty cycle tùy chỉnh:
ledcSetup(0, 5000, 8); // channel 0, 5kHz, 8-bit resolution
ledcAttachPin(GPIO_NUM_7, 0);
ledcWrite(0, 128); // duty 50%
Chọn Board Trong Arduino IDE
Cài Board Package
- Mở Arduino IDE → Preferences → Additional boards manager URLs, thêm:
https://raw.githubusercontent.com/espressif/arduino-esp32/gh-pages/package_esp32_index.json
- Tools → Board → Boards Manager → tìm “esp32” → cài esp32 by Espressif Systems (v2.0.x trở lên)
Chọn Board Đúng
Tools → Board → ESP32 Arduino → ESP32C3 Dev Module
ESP32-C3 SuperMini không có tên riêng trong board manager. ESP32C3 Dev Module là lựa chọn đúng — không dùng “ESP32 Dev Module” (đó là ESP32 Xtensa, khác chip).
Cấu Hình Upload
| Setting | Giá Trị |
|---|---|
| Board | ESP32C3 Dev Module |
| USB CDC On Boot | Enabled ← bắt buộc |
| CPU Frequency | 160MHz |
| Flash Size | 4MB (32Mb) |
| Flash Mode | DIO |
| Upload Speed | 921600 |
USB CDC On Boot: Enabled là cài đặt bắt buộc nhất. Nếu để Disabled, Serial.print() không ra gì — board dùng USB native, không có chip USB-UART phụ như CH340.
Upload Không Vào — Cách Fix
Nếu Arduino IDE báo lỗi khi upload:
- Giữ nút BOOT (GPIO9)
- Nhấn rồi thả RST (vẫn giữ BOOT)
- Bấm Upload trong Arduino IDE
- Thả BOOT khi thấy “Connecting…”
- Sau khi flash xong, nhấn RST để chạy firmware mới
Những Lưu Ý Quan Trọng
1. Logic 3.3V — Không Chịu 5V Trên GPIO
ESP32-C3 dùng logic 3.3V. Cắm tín hiệu 5V từ Arduino Uno hoặc cảm biến 5V thẳng vào GPIO → hỏng chip, không có mạch bảo vệ bên trong.
Khi kết nối thiết bị 5V: dùng level shifter hai chiều, hoặc voltage divider (2 điện trở) cho tín hiệu một chiều.
2. GPIO20 / GPIO21 — Dùng Chung Với USB
GPIO20 (RX) và GPIO21 (TX) dùng chung với USB CDC. Không cắm thiết bị UART vào hai chân này khi USB đang kết nối — xung đột tín hiệu, có thể làm mất kết nối hoặc gây nhiễu.
3. Nối Chung GND Là Bắt Buộc
Khi kết nối bất kỳ cảm biến hoặc module nào, luôn nối chung GND (chân G trên board) với GND của module đó. Thiếu GND chung → tín hiệu không ổn định, đọc sai giá trị, hoặc không hoạt động.
4. ADC Và Wi-Fi Không Dùng Cùng Lúc
analogRead() trả về kết quả không chính xác khi Wi-Fi đang hoạt động. Giải pháp:
- Đọc ADC trước khi kết nối mạng
- Hoặc dùng module ADS1115 (I2C ADC 16-bit, không bị ảnh hưởng bởi Wi-Fi)
5. Dòng Điện GPIO: Tối Đa 40mA Mỗi Chân
Luôn dùng điện trở giới hạn dòng cho LED (220Ω – 1kΩ). Tổng dòng tất cả GPIO cộng lại không vượt 120mA — nếu cần điều khiển nhiều tải, dùng transistor hoặc MOSFET.
Sơ Đồ Kết Nối Nhanh
LED Đơn
GPIO10 → R 220Ω → LED (+) → LED (-) → G (GND)
DHT11 / DHT22
VCC → 3.3
GND → G
DATA → GPIO3 (thêm R 10kΩ pull-up lên 3.3V)
#include <DHT.h>
#define DHTPIN 3
#define DHTTYPE DHT22
DHT dht(DHTPIN, DHTTYPE);
I2C — OLED SSD1306, BME280, …
VCC → 3.3
GND → G
SDA → GPIO8 (nhãn: 8)
SCL → GPIO9 (nhãn: 9)
#include <Wire.h>
Wire.begin(8, 9);
SPI — SD Card, Màn Hình TFT, …
SCK → GPIO4 (nhãn: 4)
MISO → GPIO5 (nhãn: 5)
MOSI → GPIO6 (nhãn: 6)
CS → GPIO7 (nhãn: 7)
VCC → 3.3
GND → G
#include <SPI.h>
SPI.begin(4, 5, 6, 7);
Cảm Biến Analog — LDR, Potentiometer, …
VCC → 3.3
GND → G
OUT → GPIO1 (nhãn: 1, ADC kênh 1)
int val = analogRead(1); // đọc GPIO1 = ADC CH1
So Sánh Với Các Board Phổ Biến
| ESP32-C3 SuperMini | ESP32 DevKit V1 | ESP8266 D1 Mini | |
|---|---|---|---|
| Kích thước | ~22×18mm ⭐ | ~50×28mm | ~34×25mm |
| CPU | RISC-V 160MHz | Xtensa 240MHz (dual core) | Xtensa 80MHz |
| GPIO | 13 | 34 | 11 |
| ADC | 6 kênh* | 18 kênh | 1 kênh |
| BLE | 5.0 ✓ | 4.2 ✓ | ✗ |
| USB Native | ✓ (không cần CH340) | ✗ (cần CH340) | ✗ (cần CH340) |
| Giá tham khảo | ~25–35k | ~45–60k | ~30–40k |
*ADC chỉ cho kết quả chính xác khi Wi-Fi tắt
Chọn ESP32-C3 SuperMini khi: cần board siêu nhỏ, BLE + Wi-Fi, 13 GPIO là đủ cho dự án.
Không chọn khi: cần nhiều GPIO, cần ADC và Wi-Fi đồng thời, cần xử lý mạnh (dual core).
Checklist Trước Khi Kết Nối
- Đã đối chiếu pinout với sơ đồ thực tế của board đang dùng
- Tất cả tín hiệu đầu vào ≤ 3.3V (không nối 5V thẳng vào GPIO)
- Đã nối chung GND (chân G) giữa board và tất cả module ngoài
- Nguồn cấp đủ dòng (USB 5V, tối thiểu 500mA cho board + thiết bị)
- Arduino IDE: Board =
ESP32C3 Dev Module, USB CDC On Boot =Enabled - Điện trở giới hạn dòng cho LED (220Ω – 1kΩ)
- Không cắm thiết bị vào GPIO20/GPIO21 khi đang kết nối USB


