ESP32 là gì: chip Wi-Fi, Bluetooth hai nhân, module, bo DevKit, các dòng S3, C3, C6, cách lập trình
ESP32 là gì: chip, module và bo DevKit khác nhau thế nào, bên trong chip có gì, so sánh với ESP8266 và Arduino Nano, các dòng S2, S3, C3, C6, H2, cách lập trình và lưu ý khi nối mạch.
ESP32 là vi điều khiển được dùng nhiều nhất hiện nay cho các dự án IoT, nhà thông minh và học lập trình nhúng: có sẵn Wi-Fi, Bluetooth, hai nhân xử lý, nhiều chân, và lập trình được ngay bằng Arduino IDE. Bài này giải thích ESP32 là gì, khác nhau giữa chip, module và bo mạch DevKit, bên trong chip có gì, so sánh với ESP8266 và Arduino Nano, các dòng ESP32 mới, những cách lập trình và vài điều cần biết trước khi nối mạch.
1. ESP32 là gì
ESP32 là dòng chip của hãng Espressif (Thượng Hải), ra mắt năm 2016, kế nhiệm chip ESP8266 nổi tiếng trước đó. Đó là một "hệ thống trên chip": bộ xử lý, bộ nhớ, bộ phát thu Wi-Fi và Bluetooth, các khối ngoại vi nằm chung trong một chip nhỏ. Nhờ có sẵn kết nối không dây, ESP32 vừa làm được mọi việc của một vi điều khiển thông thường (đọc cảm biến, điều khiển relay, động cơ), vừa gửi dữ liệu lên mạng mà không cần module ngoài.
2. Chip, module và bo mạch

- Chip ESP32: con chip trần, thường chưa có bộ nhớ Flash chứa chương trình.
- Module (ví dụ ESP32-WROOM-32): chip + Flash (thường 4 MB) + thạch anh + anten in trên mạch, đặt dưới vỏ kim loại. Module đã có chứng nhận vô tuyến, nên các hãng làm sản phẩm hay dùng module thay vì chip trần.
- Bo mạch DevKit: module + cổng USB + chip chuyển USB sang cổng nối tiếp (CH340 hoặc CP2102) + ổn áp 3,3 V + nút EN (reset) và BOOT + hai hàng chân. Cắm USB là nạp được chương trình. Xem chọn mạch ESP32 nào: 30 hay 38 chân, CH340 hay CP2102.
3. Bên trong chip ESP32 có gì

- Hai nhân xử lý tới 240 MHz: một nhân lo Wi-Fi, Bluetooth, nhân kia chạy chương trình của bạn (mặc định trong Arduino).
- SRAM 520 KB, gấp khoảng 260 lần Arduino Nano; chương trình nằm trong Flash ngoài.
- Ngoại vi phong phú: ADC, DAC, cảm ứng chạm, PWM, UART, I2C, SPI, I2S (âm thanh), CAN, bộ RMT tạo xung chính xác (điều khiển LED WS2812, hồng ngoại).
- Chế độ ngủ sâu: chip tắt gần hết, dòng tiêu thụ của riêng chip còn khoảng vài µA tới vài chục µA, hợp với thiết bị chạy pin. Xem Deep Sleep trên ESP32.
4. ESP32, ESP8266 và Arduino Nano
| Arduino Nano | ESP8266 | ESP32 | |
|---|---|---|---|
| Bộ xử lý | 8 bit, 16 MHz | 32 bit, 1 nhân, 80/160 MHz | 32 bit, 2 nhân, tới 240 MHz |
| RAM | 2 KB | khoảng 80 KB cho chương trình | 520 KB |
| Kết nối | không | Wi-Fi | Wi-Fi, Bluetooth Classic và BLE |
| ADC | 10 bit, 8 kênh | 10 bit, 1 kênh | 12 bit, 18 kênh |
| Mức logic | 5 V | 3,3 V | 3,3 V |
| Hợp với | học cơ bản, mạch 5 V | thiết bị Wi-Fi đơn giản | hầu hết dự án IoT |
5. Các dòng ESP32 mới
"ESP32" ngày nay là cả một họ chip. Dòng gốc vẫn phổ biến nhất trên bo DevKit; các dòng mới thêm tính năng:
- ESP32-S2: một nhân, có USB, không có Bluetooth.
- ESP32-S3: hai nhân, Wi-Fi và BLE 5, có USB, thêm lệnh tính toán cho AI (nhận giọng nói, hình ảnh).
- ESP32-C3: một nhân kiến trúc RISC-V, Wi-Fi và BLE 5, giá thấp.
- ESP32-C6: RISC-V, Wi-Fi 6, BLE 5, Zigbee và Thread cho nhà thông minh.
- ESP32-H2: BLE và Zigbee, Thread; không có Wi-Fi.
Bài chọn ESP32-S3, C3 hay C6 trong loạt "ESP32 lập trình nâng cao" so sánh chi tiết các dòng này.
6. Lập trình ESP32 bằng gì
- Arduino IDE: dễ nhất, dùng lại kiến thức Arduino và rất nhiều thư viện. Xem cài ESP32 vào Arduino IDE và nạp chương trình đầu tiên.
- MicroPython: viết bằng Python, gõ lệnh và thấy kết quả ngay. Xem bắt đầu MicroPython với Thonny.
- ESP-IDF: bộ công cụ chính thức của hãng, viết bằng C, dùng hết khả năng của chip; hợp với sản phẩm thương mại.
- PlatformIO: chạy trong VS Code, quản lý dự án lớn, dùng được cả lõi Arduino lẫn ESP-IDF.
7. ESP32 làm được gì
- Trang web điều khiển thiết bị ngay trên chip: ESP32 web server điều khiển relay.
- Gửi dữ liệu và nhận lệnh qua máy chủ: MQTT với ESP32.
- Nói chuyện trực tiếp giữa nhiều mạch không cần router: ESP-NOW.
- Kết nối điện thoại qua Bluetooth Low Energy.
- Thậm chí phát hiện chuyển động bằng sóng Wi-Fi, không cần cảm biến.
- Cập nhật chương trình từ xa: nạp qua Wi-Fi (OTA).

8. Cần biết trước khi nối mạch
- Chân ESP32 dùng mức 3,3 V, không chịu được 5 V. Module 5 V cần chuyển mức hoặc cầu chia áp.
- Không phải chân nào cũng dùng được: GPIO6–11 nối với Flash; GPIO34–39 chỉ là ngõ vào; GPIO0, 2, 5, 12, 15 ảnh hưởng tới lúc khởi động; ADC2 không đọc được khi đang bật Wi-Fi. Xem sơ đồ chân ESP32 DevKit V1.
- Nguồn phải khỏe: lúc phát Wi-Fi, dòng có thể vọt lên vài trăm mA trong tích tắc. Nguồn yếu, dây USB kém làm mạch tự khởi động lại (lỗi "brownout").
- Bo DevKit tiêu thụ nhiều hơn chip trong chế độ ngủ vì có thêm ổn áp, chip USB, đèn nguồn.
9. Bắt đầu với ESP32
Một ESP32 DevKit V1 30 chân (hoặc bản 38 chân), dây USB có lõi dữ liệu và breadboard là đủ để làm theo hầu hết bài hướng dẫn ESP32 trên pyworld.vn. Muốn có sẵn màn hình thì chọn ESP32 có OLED; muốn học MicroPython thì có mạch ESP32 MicroPython.
10. Xem thêm
- Các bài cùng loạt lộ trình: học lập trình nhúng bắt đầu từ đâu, Arduino là gì, chọn Arduino, ESP32, STM32 hay Raspberry Pi.
Xem thêm