IoTLabs

Nghiên cứu, Sáng tạo và Thử nghiệm

ESP32 DevKitC V4: Hướng dẫn toàn diện cho người mới bắt đầu

ESP32 DevKitC V4 là bo mạch phát triển (development board) phổ biến nhất của Espressif Systems, được xây dựng xung quanh module ESP-WROOM-32 tích hợp sẵn Wi-Fi và Bluetooth. Với kích thước nhỏ gọn chỉ 48,26 × 27,94 mm, cổng Micro USB tiện lợi và bộ chuyển đổi USB-UART CP2102N tích hợp sẵn, đây là lựa chọn lý tưởng cho các dự án IoT, smart home, tự động hoá và học lập trình nhúng. Bài viết này sẽ giúp bạn hiểu rõ mọi thứ về ESP32 DevKitC V4 — từ thông số kỹ thuật, sơ đồ chân (pinout), cách cài đặt Arduino IDE cho đến xây dựng web server điều khiển thiết bị từ xa.

Mục Lục

  1. ESP32 DevKitC V4 là gì?
  2. Thông số kỹ thuật chi tiết
  3. Sơ đồ chân (Pinout) đầy đủ
  4. Sơ đồ mạch và các khối chức năng
  5. Kích thước cơ học và lưu ý lắp đặt
  6. Cài đặt Arduino IDE cho ESP32 DevKitC V4
  7. Chương trình đầu tiên: Blink LED
  8. Xây dựng Web Server điều khiển GPIO
  9. Những chân cần tránh khi lập trình
  10. Xử lý lỗi thường gặp
  11. So sánh ESP32 DevKitC V4 với Arduino Uno
  12. Ứng dụng thực tế
  13. Kết luận

1. ESP32 DevKitC V4 là gì?

ESP32 DevKitC V4 (hay còn gọi là ESP32-DevKitC) là bo mạch phát triển chính thức do Espressif Systems thiết kế và sản xuất. Bo mạch này đóng gói module ESP-WROOM-32 — một trong những module IoT phổ biến nhất thế giới — cùng các mạch hỗ trợ cần thiết để bạn có thể bắt đầu lập trình ngay lập tức mà không cần thiết bị ngoại vi nào khác ngoài cáp Micro USB.

ESP32 là vi điều khiển thế hệ kế tiếp của ESP8266, bổ sung thêm lõi kép (dual-core)Bluetooth 4.2 / BLE, nhiều GPIO hơn, ADC độ phân giải cao hơn và hàng loạt ngoại vi tích hợp sẵn. Phiên bản V4 (2019–nay) cải tiến mạch auto-program so với các phiên bản trước, giúp việc nạp firmware trở nên hoàn toàn tự động.

Tại sao nên chọn ESP32 DevKitC V4?

  • ✅ Giá rẻ – thường dưới 100.000–150.000 VNĐ tại các shop linh kiện
  • ✅ Wi-Fi + Bluetooth tích hợp – không cần module thêm
  • ✅ Dual-core 240 MHz – mạnh hơn nhiều so với Arduino Uno
  • ✅ Hệ sinh thái lớn – hỗ trợ Arduino IDE, ESP-IDF, MicroPython, PlatformIO
  • ✅ Cộng đồng khổng lồ – hàng ngàn tutorial, thư viện mã nguồn mở
  • ✅ Nạp firmware tự động – nhờ mạch CP2102N + auto-program

2. Thông Số Kỹ Thuật Chi Tiết

Dưới đây là toàn bộ thông số kỹ thuật của ESP32 DevKitC V4 với module ESP-WROOM-32 (chip ESP32-D0WDQ6):

Thông sốChi tiết
Chip xử lýESP32-D0WDQ6 (Xtensa LX6 dual-core)
Số lõi2 lõi (dual-core)
Tốc độ xung nhịpLên đến 240 MHz
SRAM520 KB
Flash4 MB (trên module WROOM-32)
Wi-Fi802.11 b/g/n (2.4 GHz), tốc độ đến 150 Mbps
BluetoothBluetooth 4.2 + BLE (Bluetooth Low Energy)
Kiến trúc32-bit
Điện áp hoạt động3,3 V (LDO AMS1117-3.3 hạ áp từ 5 V)
Điện áp cấp nguồn5 V qua Micro USB hoặc chân 5V
Số chân GPIO38 chân (2 header × 19 chân, pitch 2.54 mm)
ADC18 kênh × 12-bit (ADC1 và ADC2)
DAC2 kênh × 8-bit (GPIO25 và GPIO26)
Touch sensor10 chân cảm ứng điện dung
UART3 × UART
SPI4 × SPI (VSPI và HSPI khuyên dùng)
I2C2 × I2C
I2S2 × I2S
PWM16 kênh LEDC PWM
USB-UARTCP2102N-A02-GQFN28
Kích thước bo mạch48,26 × 27,94 mm
Nút nhấnEN (Reset) + Boot (Flash mode)
Cổng kết nốiMicro USB
Hỗ trợ lập trìnhArduino IDE, ESP-IDF, MicroPython, PlatformIO

Bảng thông số kỹ thuật ESP32 DevKitC V4 với module ESP-WROOM-32

3. Sơ Đồ Chân (Pinout) Đầy Đủ

ESP32 DevKitC V4 có 2 hàng header mỗi bên 19 chân, pitch 2,54 mm (chuẩn 0.1 inch). Hiểu rõ chức năng từng chân là bước quan trọng nhất trước khi bắt đầu bất kỳ dự án nào.

Header trái (J2) – 19 chân từ trên xuống

Tên chânGPIOChức năng chínhLưu ý
3V3Đầu ra 3,3 V từ AMS1117Max ~600 mA
ENEnable (reset chip khi kéo LOW)Pull-up 10K nội
VPGPIO36ADC1_CH0, SENSOR_VPChỉ đầu vào
VNGPIO39ADC1_CH3, SENSOR_VNChỉ đầu vào
34GPIO34ADC1_CH6Chỉ đầu vào
35GPIO35ADC1_CH7Chỉ đầu vào
32GPIO32ADC1_CH4, Touch9, RTC_GPIO9Vào/Ra, an toàn
33GPIO33ADC1_CH5, Touch8, RTC_GPIO8Vào/Ra, an toàn
25GPIO25ADC2_CH8, DAC1Có DAC
26GPIO26ADC2_CH9, DAC2Có DAC
27GPIO27ADC2_CH7, Touch7Vào/Ra, an toàn
14GPIO14ADC2_CH6, HSPI_CLK, Touch6Xuất PWM khi boot
12GPIO12ADC2_CH5, MTDI, Touch5⚠ Strapping pin
GNDGround
13GPIO13ADC2_CH4, HSPI_ID, Touch4Vào/Ra, an toàn
D2GPIO9SD_DATA2 (Flash SPI nội)⛔ Không dùng
D3GPIO10SD_DATA3 (Flash SPI nội)⛔ Không dùng
CMDGPIO11SD_CMD (Flash SPI nội)⛔ Không dùng
5VVBUS (vào hoặc ra 5 V)Từ USB ~4,7 V

Bảng chân header trái (J2) ESP32 DevKitC V4

Header phải (J3) – 19 chân từ trên xuống

Tên chânGPIOChức năng chínhLưu ý
GNDGround
23GPIO23VSPI_MOSI, I2SVào/Ra, rất phổ biến
22GPIO22I2C SCL mặc địnhDùng cho I2C
TXGPIO1UART0 TX, nối CP2102N⚠ Dùng cho Serial
RXGPIO3UART0 RX, nối CP2102N⚠ Dùng cho Serial
21GPIO21I2C SDA mặc địnhDùng cho I2C
GNDGround
19GPIO19VSPI_MISOVào/Ra, an toàn
18GPIO18VSPI_CLKVào/Ra, an toàn
5GPIO5VSPI_CS0⚠ Strapping pin
17GPIO17UART2 TXVào/Ra, an toàn
16GPIO16UART2 RXVào/Ra, an toàn
4GPIO4ADC2_CH0, Touch0Vào/Ra, phổ biến
0GPIO0ADC2_CH1, Touch1⚠ Strapping / Boot btn
2GPIO2ADC2_CH2, Touch2⚠ Strapping pin
15GPIO15ADC2_CH3, MTDO, HSPI_CS⚠ Strapping pin
D1GPIO8SD_DATA1 (Flash SPI nội)⛔ Không dùng
CLKGPIO6SD_CLK (Flash SPI nội)⛔ Không dùng
D0GPIO7SD_DATA0 (Flash SPI nội)⛔ Không dùng

Bảng chân header phải (J3) ESP32 DevKitC V4

4. Sơ Đồ Mạch và Các Khối Chức Năng

Sơ đồ mạch chính thức của ESP32 DevKitC V4 (file esp32_devkitc_v4_dimensions_dxf.pdf do Espressif phát hành năm 2020) được chia thành 5 khối chức năng:

Khối 1: Cấp nguồn (Power Supply)

Bo mạch sử dụng IC ổn áp AMS1117-3.3 để hạ áp từ 5 V (VBUS từ USB hoặc chân 5V) xuống 3,3 V (VDD33) cấp cho ESP32. Tụ lọc đầu ra gồm C3 và C21 (mỗi tụ 22 µF/10V). Diode bảo vệ ngõ vào BAT760-7 (D3) ngăn dòng ngược. LED đỏ D1 (với điện trở hạn dòng R2 = 2 kΩ) phát sáng khi bo mạch được cấp nguồn.

Khối 2: USB và cầu UART (Micro USB + USB-UART)

IC chuyển đổi USB-UART là CP2102N-A02-GQFN28 (U1) — phiên bản cải tiến của CP2102 phổ biến. Đường D+/D− được bảo vệ bởi 3 diode TVS loại LESD5D5.0CT1G (D4, D5, D6).

Mạch Auto-Program là điểm nổi bật của V4: hai transistor NPN SS8050-G (Q1 và Q2) cùng các điện trở phân áp (R11, R21, R22 = 10 kΩ) tạo thành mạch tự động điều khiển chân EN và IO0 thông qua tín hiệu DTR/RTS từ CP2102N. Bảng chân lý hoạt động:

DTRRTSENIO0Trạng thái
1111Chạy bình thường
0011Chạy bình thường
1001Reset (EN=LOW)
0110Vào chế độ Flash

Bảng chân lý mạch Auto-Program trên ESP32 DevKitC V4

Nhờ mạch này, Arduino IDE có thể tự động nạp firmware mà không cần bạn nhấn giữ nút Boot — khác với nhiều board clone rẻ tiền thiếu mạch này.

Khối 3: Module ESP32 (ESP-WROOM-32)

Module D2 (ESP-WROOM-32) là 39-pad LCC package được hàn trực tiếp lên bo. Tất cả GPIO được dẫn ra hai header J2 và J3. Chân EN có pull-up 10 kΩ (R11). Tụ bypass C22 (0,1 µF) đặt gần chân VDD33 của module. Lưu ý quan trọng: 6 chân SPI flash nội (GPIO 6–11 tức SD0, SD1, SD2, SD3, CMD, CLK) đã được nối cứng với flash 4 MB bên trong module — tuyệt đối không dùng các chân này làm GPIO.

Khối 4: Nút nhấn (Switch Buttons)

  • SW1 (Boot / IO0): Nhấn giữ khi cấp nguồn hoặc khi reset để vào chế độ nạp firmware. Tụ C15 (0,1 µF, mặc định không hàn – NC) để chống nhiễu.
  • SW2 (EN / Reset): Nhấn để reset chip về trạng thái ban đầu. Tụ C14 (0,1 µF) chống dội tiếp điểm.

Khối 5: Connector đầu ra (J2 + J3)

Hai header CON19X1_2P54 (19 chân, pitch 2,54 mm), tương thích breadboard chuẩn 0,1 inch. Header J2 bên trái và J3 bên phải đưa toàn bộ tín hiệu GPIO, nguồn và các giao thức ngoại vi ra ngoài.

5. Kích Thước Cơ Học và Lưu Ý Lắp Đặt

Số liệu kích thước lấy từ file esp32_devkitc_v4_dimensions.pdf (AutoCAD 2016, xuất bản tháng 6/2023):

  • Chiều dài bo mạch: 48,26 mm
  • Chiều rộng bo mạch: 27,94 mm
  • Khoảng cách chân (pitch): 2,54 mm (chuẩn 0,1 inch)
  • Module ESP-WROOM-32 rộng: 25,40 mm
  • Phần anten nhô ra khỏi mép bo: 6,04 mm
  • Chiều rộng vùng anten (PCB): 18,00 mm
  • Khe hở dưới header: 1,29 mm
  • Offset hàng chân: 1,30 mm

Lưu ý khi dùng với breadboard

Với chiều rộng 27,94 mm, ESP32 DevKitC V4 vừa khít breadboard 830 lỗ chuẩn nhưng chỉ còn 1–2 cột lỗ mỗi bên để cắm dây. Giải pháp phổ biến là:

  1. Đặt bo trải dài ngang hai nửa breadboard ghép lại
  2. Dùng breadboard khổ rộng (half+half side by side)
  3. Thiết kế PCB carrier board riêng dựa trên file DXF kích thước chính xác

💡 Lưu ý anten: Phần anten nhựa (PCB antenna) nhô ra 6,04 mm khỏi mép bo. Khi lắp vào hộp hoặc carrier, cần chừa khoảng trống hoặc lỗ thông ở vị trí này để tránh suy giảm tín hiệu Wi-Fi/Bluetooth. Không đặt kim loại trong vùng anten.

6. Cài Đặt Arduino IDE Cho ESP32 DevKitC V4

Dưới đây là hướng dẫn từng bước cài đặt Arduino IDE 2.x để lập trình ESP32 DevKitC V4 trên Windows/macOS/Linux:

Bước 1: Cài Arduino IDE

Tải Arduino IDE từ arduino.cc/en/software và cài đặt theo hướng dẫn. Đảm bảo dùng phiên bản mới nhất.

Bước 2: Thêm URL board ESP32

  1. Mở Arduino IDE → File → Preferences (hoặc Arduino IDE → Settings trên macOS)
  2. Trong ô Additional boards manager URLs, dán URL sau:
https://dl.espressif.com/dl/package_esp32_index.json

Nếu đã có URL khác (ví dụ ESP8266), ngăn cách bằng dấu phẩy:

https://dl.espressif.com/dl/package_esp32_index.json,http://arduino.esp8266.com/stable/package_esp8266com_index.json

Bước 3: Cài đặt board package ESP32

  1. Vào Tools → Board → Boards Manager…
  2. Tìm kiếm esp32
  3. Chọn “esp32 by Espressif Systems” → nhấn Install
  4. Chờ tải xong (có thể mất vài phút)

Bước 4: Chọn board và cổng COM

  1. Cắm ESP32 DevKitC V4 vào máy tính qua cáp Micro USB có dây data
  2. Tools → Board → ESP32 Arduino → ESP32 Dev Module
  3. Tools → Port → chọn cổng COM xuất hiện (ví dụ COM3, /dev/ttyUSB0)

⚠️ Không thấy cổng COM? Bạn cần cài driver CP2102N. Tải từ silabs.com. Ngoài ra, hãy đảm bảo dùng cáp USB có dây data — cáp sạc điện thoại chỉ có dây nguồn sẽ không hoạt động.

Sau khi cài đặt xong, hãy nạp chương trình Blink để kiểm tra bo mạch hoạt động đúng không. Kết nối một LED 5mm và điện trở 330 Ω vào GPIO2 (chân số 2 trên header phải).

/*
  Blink LED trên ESP32 DevKitC V4
  LED kết nối: GPIO2 → Điện trở 330Ω → LED → GND
*/

const int ledPin = 2;  // GPIO2

void setup() {
  pinMode(ledPin, OUTPUT);
  Serial.begin(115200);
  Serial.println("ESP32 DevKitC V4 - Blink bắt đầu!");
}

void loop() {
  digitalWrite(ledPin, HIGH);   // Bật LED
  Serial.println("LED: BẬT");
  delay(1000);

  digitalWrite(ledPin, LOW);    // Tắt LED
  Serial.println("LED: TẮT");
  delay(1000);
}

Cách nạp chương trình

  1. Nhấn nút Upload (→) trong Arduino IDE
  2. Chờ thông báo “Connecting…” xuất hiện trong console
  3. Nhờ mạch auto-program, board sẽ tự động reset và vào chế độ flash
  4. Sau khi thấy “Done uploading”, LED sẽ bắt đầu nhấp nháy

💡 Nếu bị lỗi “Failed to connect”: nhấn giữ nút Boot trên bo, nhấn Upload, chờ thấy “Connecting…” rồi mới thả nút Boot.


8. Xây Dựng Web Server Điều Khiển GPIO

Một trong những ứng dụng nổi bật nhất của ESP32 DevKitC V4 là tạo web server nội bộ (local web server) để điều khiển thiết bị từ bất kỳ trình duyệt nào trong mạng Wi-Fi. Dưới đây là ví dụ điều khiển 2 LED gắn vào GPIO26 và GPIO27.

Sơ đồ kết nối phần cứng

  • LED 1: GPIO26 → Điện trở 330 Ω → LED → GND
  • LED 2: GPIO27 → Điện trở 330 Ω → LED → GND

Code web server hoàn chỉnh

/*
  ESP32 DevKitC V4 - Web Server điều khiển 2 LED
  Truy cập: nhập địa chỉ IP của ESP32 vào trình duyệt
*/

#include <WiFi.h>

// ── Thay bằng tên và mật khẩu Wi-Fi của bạn ──
const char* ssid     = "TEN_WIFI_CUA_BAN";
const char* password = "MAT_KHAU_WIFI";

WiFiServer server(80);

String header;
String trangThaiGPIO26 = "tat";
String trangThaiGPIO27 = "tat";

const int gpio26 = 26;
const int gpio27 = 27;

void setup() {
  Serial.begin(115200);

  pinMode(gpio26, OUTPUT);
  pinMode(gpio27, OUTPUT);
  digitalWrite(gpio26, LOW);
  digitalWrite(gpio27, LOW);

  Serial.print("Đang kết nối Wi-Fi: ");
  Serial.println(ssid);
  WiFi.begin(ssid, password);

  while (WiFi.status() != WL_CONNECTED) {
    delay(500);
    Serial.print(".");
  }

  Serial.println("\nĐã kết nối Wi-Fi!");
  Serial.print("Địa chỉ IP: ");
  Serial.println(WiFi.localIP());
  server.begin();
}

void loop() {
  WiFiClient client = server.available();

  if (client) {
    Serial.println("Client mới kết nối.");
    String currentLine = "";

    while (client.connected()) {
      if (client.available()) {
        char c = client.read();
        header += c;

        if (c == '\n') {
          if (currentLine.length() == 0) {
            // Xử lý yêu cầu HTTP
            if (header.indexOf("GET /26/bat") >= 0) {
              trangThaiGPIO26 = "bat";
              digitalWrite(gpio26, HIGH);
            } else if (header.indexOf("GET /26/tat") >= 0) {
              trangThaiGPIO26 = "tat";
              digitalWrite(gpio26, LOW);
            } else if (header.indexOf("GET /27/bat") >= 0) {
              trangThaiGPIO27 = "bat";
              digitalWrite(gpio27, HIGH);
            } else if (header.indexOf("GET /27/tat") >= 0) {
              trangThaiGPIO27 = "tat";
              digitalWrite(gpio27, LOW);
            }

            // Gửi trang HTML
            client.println("HTTP/1.1 200 OK");
            client.println("Content-type:text/html; charset=UTF-8");
            client.println("Connection: close");
            client.println();
            client.println("<!DOCTYPE html><html lang='vi'>");
            client.println("<head><meta charset='UTF-8'>");
            client.println("<meta name='viewport' content='width=device-width, initial-scale=1'>");
            client.println("<title>ESP32 Web Server</title>");
            client.println("<style>body{font-family:Arial,sans-serif;text-align:center;padding:20px;}");
            client.println(".btn{display:inline-block;padding:15px 30px;font-size:18px;");
            client.println("border:none;border-radius:8px;cursor:pointer;text-decoration:none;color:white;}");
            client.println(".bat{background:#27ae60;} .tat{background:#e74c3c;}</style></head>");
            client.println("<body><h1>ESP32 DevKitC V4</h1><h2>Điều Khiển GPIO</h2>");

            // GPIO26
            client.println("<p><b>GPIO 26</b> – Trạng thái: " + trangThaiGPIO26 + "</p>");
            if (trangThaiGPIO26 == "tat") {
              client.println("<a href='/26/bat'><button class='btn bat'>BẬT</button></a>");
            } else {
              client.println("<a href='/26/tat'><button class='btn tat'>TẮT</button></a>");
            }

            // GPIO27
            client.println("<p><b>GPIO 27</b> – Trạng thái: " + trangThaiGPIO27 + "</p>");
            if (trangThaiGPIO27 == "tat") {
              client.println("<a href='/27/bat'><button class='btn bat'>BẬT</button></a>");
            } else {
              client.println("<a href='/27/tat'><button class='btn tat'>TẮT</button></a>");
            }

            client.println("</body></html>");
            client.println();
            break;
          } else {
            currentLine = "";
          }
        } else if (c != '\r') {
          currentLine += c;
        }
      }
    }
    header = "";
    client.stop();
    Serial.println("Client ngắt kết nối.");
  }
}

Cách truy cập web server

  1. Nạp code, mở Serial Monitor ở 115200 baud
  2. Chờ thấy địa chỉ IP (ví dụ: 192.168.1.100)
  3. Mở trình duyệt, nhập địa chỉ IP đó
  4. Nhấn nút BẬT/TẮT để điều khiển LED — trạng thái cập nhật ngay lập tức

9. Những Chân Cần Tránh Khi Lập Trình

Đây là thông tin cực kỳ quan trọng mà nhiều người mới bỏ qua, dẫn đến bo mạch hoạt động không ổn định hoặc không nạp được firmware:

⛔ Chân kết nối flash nội — tuyệt đối không dùng làm GPIO

GPIO 6, 7, 8, 9, 10, 11 (tương ứng các tên CLK, D0, D1, D2, D3, CMD trên header) được nối cứng với chip flash SPI 4 MB bên trong module WROOM-32. Sử dụng các chân này sẽ khiến board treo hoặc crash ngay lập tức.

⚠️ Strapping pins — cần lưu ý khi boot

GPIOYêu cầu khi bootHậu quả nếu sai
GPIO0HIGH = chạy bình thường; LOW = chế độ flashBoard vào flash mode, không chạy code
GPIO2Phải LOW hoặc để hở khi bootBoot thất bại nếu có pull-up ngoài
GPIO5Phải HIGH khi bootThay đổi timing SPI flash
GPIO12Phải LOW khi bootThay đổi điện áp flash (1,8V/3,3V)
GPIO15HIGH = in boot log; LOW = tắt boot logẢnh hưởng UART output khi boot

Strapping pins trên ESP32 — ảnh hưởng đến quá trình khởi động

⚠️ Chân chỉ đầu vào (Input only)

GPIO 34, 35, 36 (VP), 39 (VN) là input-only — không có pull-up/pull-down nội, không thể xuất tín hiệu. Chỉ dùng để đọc ADC hoặc nhận tín hiệu số.

✅ Các chân an toàn nhất để dùng GPIO đa mục đích

GPIO 4, 13, 16, 17, 18, 19, 21, 22, 23, 25, 26, 27, 32, 33 — đây là những chân ít ràng buộc nhất, phù hợp cho hầu hết dự án.

10. Xử Lý Lỗi Thường Gặp

Lỗi 1: “Failed to connect to ESP32: Timed out… Connecting…”

Nguyên nhân: ESP32 không vào chế độ flash khi upload.

Cách xử lý:

  1. Nhấn giữ nút Boot
  2. Nhấn Upload trong Arduino IDE
  3. Chờ thấy dòng “Connecting…”
  4. Thả nút Boot

Lỗi 2: Không thấy cổng COM trong Arduino IDE

Nguyên nhân 1: Chưa cài driver CP2102N.

→ Tải driver từ Silicon Labs và cài lại, sau đó restart Arduino IDE.

Nguyên nhân 2: Dùng cáp USB chỉ có dây nguồn (cáp sạc).

→ Thay bằng cáp USB có đầy đủ 4 dây (dây data USB).

Lỗi 3: Board liên tục reset (reboot loop)

Nguyên nhân có thể:

  • Đang dùng GPIO6–11 làm GPIO (nối vào flash nội)
  • GPIO12 bị kéo lên 3,3 V qua điện trở ngoài
  • Nguồn cấp không đủ dòng (ESP32 peak 250–500 mA khi phát Wi-Fi)

Lỗi 4: Kết nối Wi-Fi thất bại

Kiểm tra: SSID và password có đúng không (phân biệt hoa thường). ESP32 chỉ hỗ trợ Wi-Fi 2,4 GHz, không hỗ trợ 5 GHz. Đảm bảo router đang phát băng tần 2,4 GHz.

11. So Sánh ESP32 DevKitC V4 với Arduino Uno

Tiêu chíESP32 DevKitC V4Arduino Uno R3
Vi điều khiểnESP32-D0WDQ6 (Xtensa LX6)ATmega328P (AVR 8-bit)
Số lõi2 lõi (dual-core)1 lõi
Tốc độ240 MHz16 MHz
RAM520 KB SRAM2 KB SRAM
Flash4 MB32 KB
Wi-Fi✅ Tích hợp 2,4 GHz❌ Không có
Bluetooth✅ BT 4.2 + BLE❌ Không có
Số GPIO38 chân14 digital + 6 analog
ADC18 kênh × 12-bit6 kênh × 10-bit
DAC✅ 2 kênh × 8-bit❌ Không có
Touch sensor✅ 10 chân❌ Không có
Điện áp hoạt động3,3 V5 V
Giá tham khảo~80.000–150.000 VNĐ~120.000–200.000 VNĐ
Phù hợp choIoT, Wi-Fi, BLE, dự án phức tạpHọc cơ bản, dự án đơn giản

So sánh ESP32 DevKitC V4 và Arduino Uno R3

Kết luận: Nếu dự án của bạn cần kết nối mạng, xử lý đa nhiệm hoặc đọc nhiều cảm biến cùng lúc, ESP32 DevKitC V4 vượt trội hoàn toàn. Arduino Uno vẫn là lựa chọn tốt để học lập trình nhúng từ đầu nhờ tài liệu phong phú và cộng đồng lớn.

12. Ứng Dụng Thực Tế Của ESP32 DevKitC V4

Dưới đây là một số ứng dụng thực tế phổ biến mà cộng đồng maker Việt Nam và quốc tế đã triển khai thành công với ESP32 DevKitC V4:

Smart Home & Home Automation

  • Điều khiển đèn, quạt, máy lạnh qua Wi-Fi/Bluetooth
  • Tích hợp với Home Assistant, Google Home, Amazon Alexa
  • Hệ thống khoá cửa thông minh với RFID + ESP32
  • Camera an ninh mini dùng module OV2640

Giám sát môi trường (Environmental Monitoring)

  • Đo nhiệt độ/độ ẩm với DHT22, BME280 qua I2C/SPI
  • Cảnh báo khí gas/khói với cảm biến MQ-2 qua ADC
  • Trạm thời tiết mini gửi dữ liệu lên cloud (ThingSpeak, Blynk)
  • Giám sát chất lượng không khí PM2.5

Robotics & Điều khiển động cơ

  • Xe robot điều khiển Wi-Fi từ trình duyệt
  • Cánh tay robot với servo qua PWM (16 kênh)
  • Drone firmware đơn giản

IoT & Kết nối đám mây

  • Node MQTT gửi/nhận dữ liệu qua Mosquitto broker
  • Tích hợp với Node-RED dashboard
  • REST API client gọi webhook
  • Hệ thống LoRa + ESP32 cho tầm xa

Audio & Multimedia

  • Web radio Internet bằng thư viện ESP32-audioI2S
  • Tổng hợp giọng nói (Text-to-Speech)
  • Hiệu ứng LED âm thanh với DAC nội

13. Kết Luận

ESP32 DevKitC V4 là một trong những bo mạch phát triển IoT tốt nhất trong phân khúc giá rẻ hiện nay. Với sức mạnh của chip ESP32-D0WDQ6 (dual-core 240 MHz, 520 KB RAM), Wi-Fi và Bluetooth tích hợp, 38 chân GPIO đa năng và hệ sinh thái phần mềm phong phú, đây là nền tảng lý tưởng cho cả người mới bắt đầu lẫn kỹ sư chuyên nghiệp.

Những điểm then chốt cần nhớ khi sử dụng ESP32 DevKitC V4:

  • 🔴 Không bao giờ dùng GPIO 6–11 (D0, D1, D2, D3, CLK, CMD) làm GPIO thường
  • 🟡 Cẩn thận với strapping pins (GPIO 0, 2, 5, 12, 15) khi thiết kế mạch
  • 🔵 Chân 34, 35, 36, 39 là input only — không xuất tín hiệu được
  • 🟢 Các chân an toàn nhất: GPIO 4, 13, 16, 17, 18, 19, 21, 22, 23, 25, 26, 27, 32, 33
  • 📡 Để không ở vùng anten (6,04 mm nhô ra đầu board) khi lắp vào hộp
  • 🔌 Dùng cáp USB có dây data (không phải cáp sạc) để nạp firmware

Bạn đang bắt đầu dự án ESP32 nào? Hãy để lại bình luận bên dưới — chúng tôi rất vui được hỗ trợ và thảo luận cùng cộng đồng maker Việt Nam!