ESP32 là gì? Toàn tập về vi điều khiển ESP32 cho người mới bắt đầu

ESP32 là vi điều khiển 2 nhân 240 MHz tích hợp WiFi và Bluetooth, giá chỉ hơn 100 nghìn đồng. Tất cả kiến thức cần biết trước khi bắt đầu với ESP32. Trong bài viết này, chúng ta sẽ cùng tìm hiểu chi tiết và ứng dụng thực tế trong robot.
ESP32 là gì?
ESP32 là dòng vi điều khiển (microcontroller) do hãng Espressif Systems phát triển, nổi bật nhờ tích hợp sẵn WiFi và Bluetooth trên một con chip giá chỉ vài chục nghìn đồng. Ra mắt năm 2016, ESP32 nhanh chóng trở thành nền tảng tiêu chuẩn cho các dự án IoT, robot giáo dục và sản phẩm nhúng thương mại trên toàn thế giới.
Với người học lập trình robot, ESP32 đáng chú ý vì ba lý do: mạnh hơn Arduino Uno nhiều lần với giá tương đương, lập trình được bằng chính Arduino IDE quen thuộc, và mở ra cả thế giới dự án không dây (điều khiển robot qua điện thoại, gửi dữ liệu lên Internet) mà không cần mua thêm module nào.
Thông số kỹ thuật ESP32
| Thông số | ESP32 (WROOM-32) | Ghi chú |
|---|---|---|
| CPU | Xtensa LX6 2 nhân, 240 MHz | Gấp 15 lần xung nhịp Arduino Uno |
| RAM | 520 KB SRAM | Uno chỉ có 2 KB |
| Flash | 4 MB (tùy module) | Chứa chương trình và dữ liệu |
| WiFi | 802.11 b/g/n 2.4 GHz | Làm được cả Access Point lẫn Station |
| Bluetooth | Classic + BLE 4.2 | Điều khiển qua app điện thoại |
| GPIO | ~34 chân khả dụng | Digital, analog, PWM, cảm ứng chạm |
| ADC | 18 kênh 12-bit | Đọc analog 0-4095 |
| Điện áp logic | 3.3V | KHÔNG chịu được 5V trực tiếp |
| Nguồn cấp | 5V qua USB hoặc chân VIN | Ổn áp 3.3V có sẵn trên bo |
| Giá bo DevKit | 100.000 - 160.000 đ | Tại các shop linh kiện Việt Nam |
ESP32 khác gì Arduino Uno?
So sánh nhanh cho người đang phân vân (bài so sánh đầy đủ: ESP32 vs Arduino ở mục Kiến thức):
- Hiệu năng: ESP32 vượt trội tuyệt đối — 2 nhân 240 MHz so với 1 nhân 16 MHz, RAM gấp 260 lần
- Không dây: ESP32 có sẵn WiFi + Bluetooth; Uno phải mua thêm module (HC-05, ESP8266) tốn kém và phức tạp hơn
- Điện áp logic: Uno dùng 5V, ESP32 dùng 3.3V — điểm cần chú ý duy nhất khi chuyển đổi
- Cộng đồng: Uno có bề dày tài liệu hơn 15 năm; ESP32 trẻ hơn nhưng tài liệu hiện đã cực kỳ phong phú
- Giá: tương đương nhau ở phân khúc bo học tập
Kết luận thực dụng: người mới năm 2026 nên bắt đầu thẳng với ESP32, trừ khi lớp học hoặc giáo trình có sẵn yêu cầu Arduino Uno.
Các phiên bản ESP32 phổ biến
| Phiên bản | Đặc điểm | Khi nào chọn |
|---|---|---|
| ESP32 DevKit (WROOM-32) | Bản tiêu chuẩn, 2 nhân, phổ biến nhất | Robot, IoT, học tập — lựa chọn mặc định |
| ESP32-S3 | Thêm tăng tốc AI, USB OTG, nhiều RAM hơn | Nhận diện giọng nói/hình ảnh cơ bản |
| ESP32-C3 | 1 nhân RISC-V, giá rẻ, nhỏ gọn | Dự án cảm biến đơn giản, sản phẩm nhỏ |
| ESP32-CAM | Kèm camera OV2640, giá ~120.000 đ | Robot có mắt nhìn, giám sát qua WiFi |
Kit robot của HocLapTrinhRobot dùng ESP32 DevKit tiêu chuẩn và có phiên bản ESP32-S3 cho các bài học nâng cao.
Sơ đồ chân ESP32 - những chân cần nhớ
Bo ESP32 DevKit 30 chân có một số quy tắc quan trọng:
- Chân dùng thoải mái: GPIO 4, 5, 13, 14, 16, 17, 18, 19, 21, 22, 23, 25, 26, 27, 32, 33
- Chân chỉ đọc (input only): GPIO 34, 35, 36, 39 — không xuất tín hiệu được, dùng đọc cảm biến analog
- Chân tránh dùng: GPIO 0, 2, 12, 15 (chân strapping ảnh hưởng khởi động), GPIO 6-11 (nối với flash nội bộ, cấm dùng)
- I2C mặc định: SDA = GPIO 21, SCL = GPIO 22
- UART0: GPIO 1, 3 — dành cho nạp code và Serial Monitor, tránh chiếm dụng
Chi tiết từng chân trong bài Sơ đồ chân ESP32 ở mục Kiến thức.
Bắt đầu với ESP32 cần những gì?
- Phần cứng: bo ESP32 DevKit + cáp micro-USB (loại có dây data, không phải cáp chỉ sạc)
- Phần mềm: Arduino IDE 2.x (miễn phí) + gói board ESP32 của Espressif, hoặc lập trình ngay trên trình duyệt với phòng lab HocLapTrinhRobot
- Driver USB: bo dùng chip CP2102 hoặc CH340 cần cài driver tương ứng trên Windows
Hướng dẫn cài đặt từng bước trong bài Cài Arduino IDE và ESP32 ở mục Kiến thức.
Chương trình đầu tiên - nhấp nháy LED
// LED xanh trên bo ESP32 DevKit thường ở GPIO 2
const int LED = 2;
void setup() {
pinMode(LED, OUTPUT);
}
void loop() {
digitalWrite(LED, HIGH);
delay(500);
digitalWrite(LED, LOW);
delay(500);
}Nạp thành công chương trình này nghĩa là toàn bộ môi trường đã hoạt động — cột mốc quan trọng nhất của buổi học đầu tiên.
Điểm khác biệt khi code ESP32 so với Arduino
ESP32 không hỗ trợ hàm analogWrite truyền thống. Thay vào đó dùng hệ thống LEDC mạnh hơn:
const int MOTOR_PIN = 25;
void setup() {
// core 3.x: gắn chân với tần số 1 kHz, độ phân giải 8 bit
ledcAttach(MOTOR_PIN, 1000, 8);
}
void loop() {
ledcWrite(MOTOR_PIN, 128); // 50% công suất (0-255)
}Đọc analog trả về 0-4095 (12-bit) thay vì 0-1023 (10-bit) như Uno. Các hàm còn lại (digitalWrite, digitalRead, Serial) giữ nguyên như Arduino.
ESP32 làm được những dự án gì?
- Robot học tập: xe tránh vật cản, dò line, điều khiển qua app — nền tảng của kit ESP32 Robot Car
- Điều khiển qua WiFi: ESP32 tự phát WiFi, điện thoại kết nối và điều khiển robot qua trang web do chính ESP32 phục vụ
- IoT gia đình: bật tắt đèn qua Internet, cảm biến nhiệt độ gửi cảnh báo về điện thoại
- Trạm quan trắc: thu thập dữ liệu môi trường, đẩy lên dashboard qua MQTT
- Robot có camera: ESP32-CAM stream video về điện thoại, chụp ảnh khi phát hiện chuyển động
Những lỗi người mới hay gặp với ESP32
- Cấp 5V vào chân GPIO: giới hạn của ESP32 là 3.6V — tín hiệu 5V (ví dụ chân ECHO của HC-SR04) phải qua mạch chia áp
- Cáp USB chỉ sạc: cáp không có dây data khiến máy tính không nhận bo; hiện tượng phổ biến nhất của buổi học đầu
- Không vào được chế độ nạp: một số bo cần giữ nút BOOT khi bắt đầu nạp code
- Dùng nhầm chân input-only để xuất tín hiệu: GPIO 34-39 không điều khiển được LED hay động cơ
- WiFi và ADC2 xung đột: khi WiFi bật, các chân ADC2 (GPIO 0, 2, 4, 12-15, 25-27) không đọc analog được — dùng ADC1 (GPIO 32-39) cho cảm biến analog trong dự án IoT
Câu hỏi thường gặp
ESP32 có thay thế được Arduino Uno hoàn toàn không?
Về năng lực thì có — ESP32 làm được mọi thứ Uno làm và nhiều hơn. Uno vẫn tồn tại trong giáo dục nhờ bề dày giáo trình, độ bền (chip cắm rời thay được) và mức logic 5V khớp với nhiều module cũ. Nhưng dự án mới nên chọn ESP32.
ESP32 lập trình bằng ngôn ngữ nào?
C++ qua Arduino IDE là phổ biến nhất. Ngoài ra có MicroPython (cú pháp Python thân thiện), ESP-IDF (framework chính chủ cho lập trình chuyên nghiệp) và Blockly kéo thả trên các nền tảng giáo dục như phòng lab HocLapTrinhRobot.
Mua ESP32 loại nào, giá bao nhiêu?
Người mới mua ESP32 DevKit V1 (WROOM-32) 30 chân, giá 100.000 - 160.000 đồng tại các shop linh kiện điện tử Việt Nam. Tránh mua bản thiếu (ESP32 module trần không có mạch USB) vì không nạp code trực tiếp được.
ESP32 chạy được bao lâu bằng pin?
Chạy WiFi liên tục tiêu thụ khoảng 150-250 mA — pin 18650 dung lượng 2500 mAh chạy được 10-15 giờ. Ở chế độ deep sleep, ESP32 chỉ tiêu thụ khoảng 10 µA, phù hợp trạm cảm biến chạy pin hàng tháng.
Học ESP32 mất bao lâu?
Biết nhấp nháy LED trong 1 buổi, điều khiển robot cơ bản sau 4-6 buổi, làm dự án WiFi sau 2-3 tháng học đều đặn. Nền tảng C++ Arduino chuyển sang ESP32 gần như không mất thời gian làm quen lại.
Tài nguyên tải về
Tải bản PDF của bài viết để in giáo án hoặc gửi trước cho học viên.


