ESP32 và ESP8266 khác nhau thế nào: khi nào chọn Wemos D1 R2, mạch ESP8266 có OLED hay ESP32
So sánh ESP32 và ESP8266: tốc độ, RAM, Bluetooth, số chân, ADC, cách lập trình bằng Arduino IDE và khi nào nên chọn Wemos D1 R2, mạch ESP8266 có OLED hay mạch ESP32.
ESP8266 và ESP32 đều là vi điều khiển có sẵn Wi-Fi của Espressif, đều lập trình được bằng Arduino IDE và MicroPython, nên người mới hay phân vân không biết mua mạch nào. Bài này so sánh hai chip ở những điểm ảnh hưởng thật tới dự án: tốc độ, bộ nhớ, Bluetooth, số chân, ADC, cách viết chương trình. Sau đó gợi ý khi nào nên chọn Wemos D1 R2, mạch ESP8266 có màn hình OLED hay một mạch ESP32.
1. ESP8266 và ESP32 là gì
ESP8266 ra đời trước. Đây là chip Wi-Fi giá rẻ đầu tiên được dùng rộng rãi cho các dự án IoT, có một nhân xử lý chạy 80 hoặc 160 MHz. ESP32 là thế hệ sau: hai nhân chạy đến 240 MHz, nhiều RAM hơn, có thêm Bluetooth, nhiều chân và nhiều ngoại vi hơn. Cả hai chạy ở mức điện áp 3,3 V và thường được bán dưới dạng mạch phát triển có sẵn cổng USB, IC nạp và IC ổn áp, cắm vào máy tính là nạp được chương trình.
2. Bảng so sánh ESP32 và ESP8266

Những khác biệt đáng kể nhất khi làm dự án:
- Tốc độ và RAM. ESP32 có hai nhân và 520 KB RAM, nên chạy cùng lúc web server, MQTT, đọc cảm biến, hiển thị màn hình vẫn thoải mái. ESP8266 chỉ còn vài chục KB RAM trống khi đã kết nối Wi-Fi; kết nối HTTPS, trang web lớn hay nhiều thư viện cùng lúc dễ hết bộ nhớ.
- Bluetooth. ESP8266 không có Bluetooth. Dự án điều khiển bằng điện thoại qua Bluetooth, tay cầm, thiết bị BLE thì chỉ ESP32 làm được.
- Chân và ADC. Mạch ESP8266 thường chỉ còn khoảng 11 chân digital dùng được và đúng 1 chân analog A0. Bản thân chip chỉ đo được 0–1 V, mạch có cầu phân áp để đo đến khoảng 3,2–3,3 V. ESP32 có hơn 20 chân dùng được trên mạch DevKit, 18 kênh ADC 12 bit (các kênh ADC2 không dùng được khi bật Wi-Fi), thêm DAC và chân cảm ứng chạm.
- PWM. ESP32 có 16 kênh PWM bằng phần cứng, phù hợp điều khiển LED, servo, động cơ. ESP8266 tạo PWM bằng phần mềm, dùng được cho LED, nhưng kém ổn định hơn khi nhiều kênh hoặc khi Wi-Fi đang bận.
- Điện áp chân. Cả hai đều là chip 3,3 V. Nối với module 5 V (một số LCD, cảm biến siêu âm) cần mạch chuyển mức logic hoặc cầu phân áp.
3. Các mạch ESP8266 và ESP32 thường gặp

- Wemos D1 R2: ESP8266 trên khung và vị trí hàng chân giống Arduino UNO, IC nạp CH340, cổng Micro USB, có jack DC dùng adapter 9–12 V. Hợp với người đã quen Arduino UNO. Cách cài đặt và nạp chương trình đầu tiên xem bài bắt đầu với Wemos D1 R2.
- Mạch ESP8266 có màn hình OLED 0.96 inch: màn hình hàn sẵn trên mạch, không phải nối dây I2C. Xem bài dùng màn hình OLED SSD1306 với ESP8266.
- Mạch ESP8266 có đế pin 18650: có mạch sạc và bảo vệ pin, cho thiết bị chạy pin.
- ESP32 DevKit V1 30 chân và bản 38 chân: bản phổ biến nhất, cắm breadboard, nhiều tài liệu nhất. Khác nhau giữa các bản xem bài chọn mạch ESP32 nào.
- ESP32 có màn hình OLED và ESP32 có đế pin 18650: cùng ý tưởng với hai bản ESP8266 ở trên, nhưng chip mạnh hơn và có Bluetooth.
Chênh lệch giá giữa mạch ESP8266 và mạch ESP32 cùng kiểu không lớn, nên với dự án mới, ESP32 thường đáng tiền hơn.
4. Khác nhau khi lập trình

Hai chip dùng hai gói cài đặt khác nhau trong Arduino IDE: gói esp32 của Espressif và gói esp8266 của cộng đồng ESP8266 Arduino. Phần lớn chương trình Arduino chạy được trên cả hai, chỉ cần đổi dòng #include của thư viện Wi-Fi, web server và số chân. Muốn một chương trình biên dịch được cho cả hai chip thì bọc phần khác nhau trong #if defined(ESP32) … #else … #endif.
Tên chân dễ nhầm nhất. Trên mạch ESP8266, chữ in D1, D2… không phải số GPIO: khi chọn bo "LOLIN(WEMOS) D1 R2 & mini", D1 là GPIO5 (SCL), D2 là GPIO4 (SDA), D4 là GPIO2 (LED trên mạch). Viết D1 hoặc 5 trong chương trình đều đúng, viết 1 là sai chân. ESP32 DevKit in thẳng số GPIO nên ít nhầm hơn.
Chân khởi động. ESP8266 cần GPIO0 và GPIO2 ở mức cao, GPIO15 ở mức thấp lúc cấp nguồn; trên Wemos D1 R2 đó là D3, D4 và D8, không nên nối nút nhấn hay relay kéo các chân này sai mức. ESP32 có các chân tương tự là GPIO 0, 2, 12, 15; danh sách chân nên dùng và nên tránh có trong bài sơ đồ chân ESP32 DevKit V1.
5. Nên chọn mạch nào

- Người mới, dự án mới: ESP32 DevKit V1 30 chân. Dư sức cho hầu hết bài học và đồ án, sau này cần Bluetooth hay thêm cảm biến không phải đổi mạch. Cài đặt xem bài cài ESP32 vào Arduino IDE.
- Đã quen Arduino UNO: Wemos D1 R2. Cắm vừa shield của UNO, nhưng shield chạy 5 V hoặc cần nhiều chân analog có thể không chạy.
- Cần hiển thị vài dòng chữ, số đo: mạch có OLED hàn sẵn, chọn bản ESP8266 nếu dự án đơn giản, bản ESP32 nếu cần thêm Bluetooth hoặc nhiều chân.
- Thiết bị cầm tay, chạy pin: bản có đế pin 18650, đỡ phải tự ghép mạch sạc.
- Đang có chương trình chạy tốt trên ESP8266: cứ giữ ESP8266, không cần đổi.
Với học sinh mới học lập trình, bài chọn bo mạch lập trình đầu tiên cho học sinh so sánh thêm ESP32 với Arduino Nano và micro:bit.
6. Câu hỏi thường gặp
| Câu hỏi | Trả lời ngắn |
|---|---|
| ESP8266 có Bluetooth không? | Không. Cần Bluetooth thì dùng ESP32. |
| Chương trình viết cho ESP8266 chạy trên ESP32 được không? | Phần lớn được: đổi thư viện ESP8266WiFi, ESP8266WebServer sang WiFi, WebServer và đổi số chân. |
| ESP8266 đo được mấy cảm biến analog? | Một (chân A0). Cần nhiều hơn thì dùng ESP32 hoặc thêm module ADC ngoài. |
| Cắm thẳng module 5 V vào chân ESP8266, ESP32 được không? | Không nên. Chân chỉ chịu 3,3 V; dùng mạch chuyển mức logic. |
| Mạch nào tốn pin ít hơn? | Khi ngủ sâu, riêng chip ESP32 khoảng 10 µA, ESP8266 khoảng 20 µA; dòng thực tế do mạch (IC ổn áp, đèn báo, IC nạp) quyết định nhiều hơn. |
7. Xem thêm
- Sản phẩm: mạch ESP8266, mạch ESP32.
- Chọn mạch ESP32 nào: DevKit 30 hay 38 chân, CH340 hay CP2102.
- Bắt đầu với Wemos D1 R2 (ESP8266) trên Arduino IDE.
- Sơ đồ chân ESP32 DevKit V1 30 chân và 38 chân.
Cần tư vấn chọn mạch cho dự án cụ thể, liên hệ PYWORLD qua số 0915703319.
Xem thêm