Việc lựa chọn vi điều khiển phù hợp hỗ trợ Wi-Fi là một quyết định quan trọng trong phát triển sản phẩm IoT. ESP8266 và ESP32, đều do Espressif Systems sản xuất, đại diện cho hai cách tiếp cận khác nhau về kết nối không dây và xử lý nhúng. Bài viết này cung cấp so sánh kỹ thuật về kiến trúc, thiết bị ngoại vi, khả năng giao tiếp và các cân nhắc thiết kế thực tiễn để giúp kỹ sư và nhóm mua sắm đánh giá mô-đun nào phù hợp nhất với yêu cầu ứng dụng của họ.
Tổng quan về kiến trúc ESP8266 và ESP32
Cả ESP8266 và ESP32 đều là giải pháp System-on-Chip (SoC) tích hợp vi điều khiển, bộ thu phát Wi-Fi và các giao diện ngoại vi trên một chip duy nhất. Mặc dù chia sẻ kiến trúc RISC 32-bit và hỗ trợ các giao thức nối tiếp phổ biến (SPI, I2C, UART), tài nguyên tính toán và bộ tính năng của chúng lại khác biệt đáng kể.
ESP8266 được xây dựng dựa trên bộ xử lý Tensilica Xtensa LX106 một nhân hoạt động ở 80 MHz (có thể ép xung lên 160 MHz trong một số triển khai). Nó cung cấp kết nối Wi-Fi 802.11 b/g/n, 128 KB RAM và thường 4 MB bộ nhớ flash ngoài. Thiết kế tinh gọn ưu tiên hiệu quả chi phí và dễ dàng tích hợp cho các ứng dụng mà truy cập internet không dây là yêu cầu chính.
ESP32 sử dụng bộ xử lý Tensilica Xtensa LX6 lõi kép với tốc độ xung nhịp có thể cấu hình từ 80 MHz đến 240 MHz. Nó bao gồm 520 KB SRAM, 4 MB flash (có thể mở rộng), và bổ sung Bluetooth 4.2 (BR/EDR và BLE) bên cạnh Wi-Fi. Số lượng GPIO mở rộng, các kênh ADC/DAC bổ sung và tăng tốc mã hóa phần cứng giúp nó phù hợp với các ứng dụng nhúng đòi hỏi cao hơn.

ESP8266: Đặc điểm thiết kế và các trường hợp sử dụng điển hình
Thông số kỹ thuật cốt lõi
ESP8266, thường được triển khai trong dạng mô-đun ESP-12E hoặc ESP-12F, hoạt động từ nguồn 3.0 V đến 3.6 V thông qua bộ điều chỉnh LDO tích hợp. Chip cung cấp:
- Bộ xử lý một nhân 32-bit ở tốc độ 80/160 MHz
- 128 KB RAM để thực thi chương trình và dữ liệu
- 4 MB flash SPI ngoài (cấu hình tiêu chuẩn)
- Wi-Fi 802.11 b/g/n với cả chế độ trạm và soft-AP
- 17 chân GPIO với các chức năng đa kênh
- Một kênh ADC 10-bit
- Hỗ trợ SPI, I2C, UART và PWM
Tất cả các chân GPIO đều hoạt động ở mức logic 3.3 V và không chịu được 5 V. Kết nối trực tiếp với tín hiệu 5 V sẽ làm hỏng thiết bị; Cần có bộ chuyển mức hoặc bộ chia điện áp khi kết nối với hệ thống 5 V.
Những cân nhắc thiết kế thực tiễn
Kiến trúc một lõi của ESP8266 có nghĩa là xử lý ngăn xếp Wi-Fi chia sẻ thời gian CPU với mã ứng dụng. Trong quá trình truyền hoặc thu Wi-Fi đang hoạt động, quá trình thực thi mã người dùng có thể bị gián đoạn, điều này có thể ảnh hưởng đến hiệu suất thời gian thực trong các ứng dụng nhạy cảm về thời gian. Đối với dữ liệu truyền dữ liệu đơn giản, ghi dữ liệu cảm biến, hoặc các nhiệm vụ điều khiển từ xa mà thời gian dưới mili giây không quan trọng, giới hạn này hiếm khi gặp vấn đề.
Tiêu thụ điện năng khi truyền Wi-Fi hoạt động có thể đạt 170 mA hoặc cao hơn. Module hỗ trợ chế độ modem-sleep giúp giảm dòng điện tiêu thụ xuống khoảng 15 mA trong khi vẫn duy trì kết nối Wi-Fi, và chế độ ngủ sâu tiêu thụ dưới 20 μA, mặc dù chế độ ngủ sâu cần tín hiệu đánh thức hoặc bộ hẹn giờ bên ngoài.
Số lượng kênh ADC hạn chế (một kênh có thể sử dụng) và chân GPIO có thể hạn chế thiết kế yêu cầu nhiều cảm biến tương tự hoặc kết nối ngoại vi rộng rãi. Trong những trường hợp như vậy, có thể sử dụng bộ ghép kênh ngoài hoặc bộ mở rộng I/O, mặc dù điều này làm tăng độ phức tạp và chi phí.
Ứng dụng điển hình
- Cảm biến kết nối Wi-Fi (nhiệt độ, độ ẩm, chuyển động)
- Công tắc và rơ-le thông minh
- Trạm giám sát môi trường
- Các dự án giáo dục và tạo mẫu
- Các điểm cuối IoT chi phí thấp với yêu cầu xử lý khiêm tốn
ESP32: Khả năng nâng cao cho các hệ thống phức tạp
Thông số kỹ thuật cốt lõi
ESP32, thường có trong các biến thể module ESP32-WROOM-32 hoặc ESP32-WROVER, mở rộng bộ tính năng đáng kể:
- Bộ xử lý lõi kép 32-bit ở tốc độ 80-240 MHz
- SRAM 520 KB, với các tùy chọn PSRAM ngoài lên đến 8 MB (các biến thể WROVER)
- Bộ nhớ flash 4 MB hoặc lớn hơn
- Wi-Fi 802.11 b/g/n với các tính năng nâng cao (Wi-Fi Direct, hỗ trợ WPA3 trong các phiên bản sau)
- Bluetooth 4.2 (Classic và BLE)
- 48 chân GPIO (25+ thường được tách ra trên module)
- 18 × kênh ADC 12-bit và 2 kênh DAC ×-bit
- 10 đầu vào cảm biến cảm ứng điện dung
- Tăng tốc mã hóa phần cứng (AES, SHA, RSA)
- Giao diện CAN 2.0, I2S, SPI, I2C, UART
Giống như ESP8266, ESP32 hoạt động ở mức logic 3.3 V. Bộ điều chỉnh LDO tích hợp nhận điện áp đầu vào từ 3.0 V đến 3.6 V, và các bo mạch phát triển thường có thêm bộ điều chỉnh để nhận nguồn USB 5 V.
Xử lý Lõi kép và Quản lý Tác vụ
Kiến trúc lõi kép của ESP32 cho phép một lõi chuyên dụng cho hoạt động ngăn xếp Wi-Fi và Bluetooth trong khi lõi còn lại thực thi mã ứng dụng. Sự tách biệt này cải thiện khả năng phản hồi theo thời gian thực và cho phép xử lý song song dữ liệu cảm biến, truyền thông và thuật toán điều khiển. Đối với các thiết kế yêu cầu hoạt động đồng thời Bluetooth và Wi-Fi, hoặc xử lý luồng dữ liệu từ nhiều cảm biến, kiến trúc này mang lại lợi thế hiệu suất có thể đo lường được.
Firmware dựa trên FreeRTOS do Espressif cung cấp cho phép ghim tác vụ vào các lõi cụ thể, giúp nhà phát triển kiểm soát rõ ràng việc phân phối khối lượng công việc và hành vi thời gian.
Bộ thiết bị ngoại vi mở rộng
18 kênh ADC của ESP32 cho phép kết nối trực tiếp nhiều cảm biến analog mà không cần ghép kênh bên ngoài. Độ phân giải 12-bit mang lại độ chi tiết tinh tế hơn so với ADC 10-bit của ESP8266, điều này rất quan trọng trong các ứng dụng cảm biến chính xác. Hai kênh DAC hỗ trợ tổng hợp âm thanh, tín hiệu điều khiển analog và tạo dạng sóng mà không cần các thành phần bên ngoài.
Cảm biến cảm ứng điện dung được triển khai trên phần cứng, loại bỏ nhu cầu sử dụng IC điều khiển cảm ứng rời rạc trong thiết kế giao diện người dùng. Giao diện bus CAN cho phép hỗ trợ giao thức ô tô và công nghiệp, mở rộng phạm vi các hệ thống áp dụng.
Chung sống Bluetooth và Không dây
Việc tích hợp Bluetooth Classic và BLE mở rộng khả năng thiết kế. BLE cho phép giao tiếp tiết kiệm năng lượng với điện thoại thông minh, thiết bị đeo và beacon. Bluetooth Classic hỗ trợ phát trực tuyến âm thanh và tương thích với thiết bị cũ. Kết hợp với Wi-Fi, ESP32 có thể hoạt động như một cổng thu thập dữ liệu từ cảm biến BLE và chuyển tiếp đến các dịch vụ đám mây qua Wi-Fi, hoặc như một thiết bị giao diện kép cung cấp cả điều khiển cục bộ (Bluetooth) và điều khiển từ xa (Wi-Fi).
Bluetooth và Wi-Fi chia sẻ cùng một giao diện RF 2.4 GHz, và cơ chế cùng tồn tại của Espressif là đa kênh truy cập radio theo thời gian. Mặc dù cả hai giao thức có thể hoạt động đồng thời, nhưng thông lượng đỉnh trên mỗi liên kết thấp hơn so với khi hoạt động độc lập. Đối với hầu hết các ứng dụng IoT, sự đánh đổi này là chấp nhận được.
Ứng dụng điển hình
- Cổng IoT tổng hợp dữ liệu từ nhiều cảm biến khác nhau
- Phát trực tuyến âm thanh và thiết bị kích hoạt bằng giọng nói
- Thiết bị đeo yêu cầu BLE và Wi-Fi
- Trung tâm tự động hóa nhà
- Hệ thống giám sát và điều khiển công nghiệp với bus CAN
- Thiết bị chạy bằng pin với quản lý trạng thái nguồn phức tạp
Cấu hình chân và so sánh GPIO
ESP8266 Bố cục GPIO
ESP8266 lộ ra 17 chân GPIO, mặc dù một số chân có giới hạn về thời gian khởi động hoặc vận hành:
- GPIO0: Phải ở mức cao khi khởi động để hoạt động bình thường; Kéo thấp sẽ vào chế độ lập trình Flash
- GPIO2: Phải ở mức cao khi khởi động; thường được kết nối với đèn LED tích hợp
- GPIO15: Phải ở mức thấp khi khởi động
- GPIO16: Kết nối với đồng hồ thời gian thực; dùng để đánh thức giấc ngủ sâu nhưng không thể sử dụng ngắt khi thay đổi
- ADC0: Đầu vào analog đơn, thường được đánh dấu là A0, đo được từ 0-1.0 V
Những ràng buộc chân này đòi hỏi phải lên kế hoạch cẩn thận trong bố cục PCB và khởi tạo firmware. Sử dụng GPIO0, GPIO2 hoặc GPIO15 làm I/O đa năng là có thể nhưng phải tính đến trạng thái khởi động của chúng.
ESP8266 hỗ trợ một giao diện SPI phần cứng và một giao diện I2C (bitbang hoặc phần cứng), cả hai đều được chia sẻ giữa các GPIO có sẵn thông qua đa kênh.
Bố cục GPIO ESP32

48 GPIO của ESP32 được chia thành các chức năng chuyên dụng và đa tàu. Các tính năng chính bao gồm:
- 18 kênh ADC phân phối trên ADC1 và ADC2 (lưu ý: ADC2 không thể sử dụng khi Wi-Fi đang hoạt động)
- 2 kênh DAC (GPIO25, GPIO26)
- 10 chân cảm ứng điện dung
- Các chân buộc (GPIO0, GPIO2, GPIO5, GPIO12, GPIO15) xác định chế độ khởi động; Cần chăm sóc tương tự trong quá trình khởi động
- Tập hợp RTC GPIO dùng trong giấc ngủ sâu
Giao diện ngoại vi trên ESP32 linh hoạt hơn nhờ ma trận IO_MUX và GPIO, cho phép hầu hết các thiết bị ngoại vi kỹ thuật số (UART, SPI, I2C) được ánh xạ đến nhiều chân khác nhau. Sự linh hoạt này giúp đơn giản hóa việc định tuyến PCB và đáp ứng các giới hạn về bố cục.
ESP32 hỗ trợ đồng thời ba giao diện UART, ba giao diện SPI và hai bus I2C, cho phép thiết kế đa ngoại vi phức tạp mà không cần ghép kênh bên ngoài hay cầu nối giao thức.
Mức tiêu thụ điện năng và hoạt động pin
Hiệu suất sử dụng năng lượng là yếu tố then chốt trong các ứng dụng chạy bằng pin và thu hoạch năng lượng.
ESP8266 Chế Độ Sức Mạnh
- Hoạt động (Wi-Fi TX): ~170 mA
- Hoạt động (Wi-Fi RX): ~60 mA
- Chế độ ngủ modem: ~15 mA (kết nối Wi-Fi được duy trì, nhưng theo chu kỳ radio)
- Ngủ nhẹ: ~0,9 mA
- Giấc ngủ sâu: ~20 μA (giữ lại RTC và một lượng nhỏ RAM; đánh thức qua GPIO16 hoặc đặt lại bên ngoài)
Ngủ sâu là chế độ tiết kiệm năng lượng thực tế nhất cho các ứng dụng cảm biến định kỳ. ESP8266 không hỗ trợ thức dậy khi sự kiện từ giấc ngủ sâu tinh vi; Thiết bị phải được cấu hình để thức dậy sau khi bộ hẹn giờ hết hoặc thông qua việc đặt lại phần cứng.
Chế Độ Nguồn ESP32
- Hoạt động (Wi-Fi TX): ~160-240 mA
- Hoạt động (Wi-Fi RX): ~80-100 mA
- Chế độ ngủ modem: ~20-30 mA
- Ngủ nhẹ: ~0,8 mA
- Giấc ngủ sâu: ~10 μA (RTC, bộ xử lý phụ ULP và bộ nhớ RTC hoạt động)
- Ngủ đông: ~5 μA (chỉ bộ hẹn giờ RTC hoạt động)
Bộ đồng xử lý Ultra-Low-Power (ULP) của ESP32 cho phép giám sát cảm biến và xử lý dữ liệu đơn giản trong khi các lõi chính vẫn ở trạng thái ngủ sâu. Tính năng này rất hữu ích trong các ứng dụng yêu cầu đánh thức độ trễ thấp dựa trên ngưỡng cảm biến (ví dụ: phát hiện chuyển động, giao cắt mức tương tự) mà không phải tốn năng lượng để duy trì bộ xử lý chính.
Trên thực tế, các chế độ ngủ tiên tiến và bộ đồng xử lý ULP của ESP32 cung cấp quản lý năng lượng linh hoạt hơn so với ESP8266, đặc biệt trong các thiết kế thiết bị phải thức dậy thường xuyên hoặc có điều kiện dựa trên các sự kiện bên ngoài.
Hệ sinh thái phát triển và tùy chọn firmware
Cả hai mô-đun đều được hỗ trợ tốt bởi nhiều môi trường phát triển:
Arduino IDE
Lõi Arduino cho ESP8266 và ESP32 cung cấp API quen thuộc, dễ tiếp cận cho người chơi nghiệp dư và tạo mẫu nhanh. Hỗ trợ thư viện rất rộng rãi, bao gồm các cảm biến, bộ truyền động và giao thức truyền thông phổ biến. Tối ưu hóa hiệu năng và bộ nhớ kém tinh chỉnh hơn so với phát triển SDK gốc, nhưng sự dễ sử dụng và lặp nhanh là những lợi thế đáng kể.
ESP-IDF (Khung phát triển Espressif IoT)
ESP-IDF là khung phát triển chính thức của Espressif dựa trên FreeRTOS. Nó cung cấp quyền truy cập đầy đủ vào các tính năng phần cứng, kiểm soát chi tiết về quản lý năng lượng và các ngăn xếp mạng tối ưu. ESP-IDF là môi trường được khuyến nghị cho firmware sản xuất, nơi hiệu suất, hiệu quả bộ nhớ và khả năng bảo trì lâu dài là ưu tiên. Đường cong học tập dốc hơn, nhưng framework được tài liệu hóa đầy đủ và được duy trì tích cực.
MicroPython và các ngôn ngữ khác
MicroPython cung cấp một môi trường Python tương tác, được diễn giải phù hợp cho việc viết kịch bản, kiểm thử và sử dụng giáo dục. Nó được hỗ trợ tốt trên cả ESP8266 và ESP32, mặc dù giới hạn bộ nhớ trên ESP8266 có thể giới hạn độ phức tạp của các ứng dụng MicroPython.
Các framework khác như Lua (NodeMCU), Rust, và thậm chí JavaScript (Espruino, Moddable SDK) cũng có sẵn, phản ánh sự quan tâm rộng rãi của cộng đồng và các trường hợp sử dụng đa dạng của các module này.
Tóm tắt so sánh: Chọn giữa ESP8266 và ESP32
| Tính năng | ESP8266 | ESP32 |
|---|---|---|
| Bộ xử lý | Lõi đơn, 80 MHz | Lõi kép, 80-240 MHz |
| RAM | 128 KB | 520 KB |
| Flash | 4 MB (điển hình) | 4 MB trở lên |
| Wi-Fi | 802.11 b/g/n | 802.11 b/g/n, Wi-Fi trực tiếp |
| Bluetooth | Không | Bluetooth 4.2 (Cổ điển + BLE) |
| Số lượng GPIO | 17 | 48 (25+ có thể truy cập trên các mô-đun) |
| ADC | 1 × 10-bit | 18 × 12-bit |
| DAC | Không có | 2 × 8-bit |
| Cảm Biến Chạm | Không | 10 đầu vào điện dung |
| Xe buýt CAN | Không | Có |
| Nguồn điện (giấc ngủ sâu) | ~20 μA | ~10 μA (ngủ đông 5 μA) |
| Bộ đồng xử lý ULP | Không | Có |
| Chi phí điển hình cho mô-đun | Lower | Vừa phải |
Khi nào nên chọn ESP8266
- Các dự án bị giới hạn ngân sách, nơi chi phí trên mỗi đơn vị là mối quan tâm chính
- Kết nối Wi-Fi đơn giản để báo cáo cảm biến hoặc chuyển mạch từ xa
- Ứng dụng có yêu cầu I/O hạn chế
- Dự án giáo dục và phát triển IoT giới thiệu
- Thiết kế không yêu cầu Bluetooth
Khi nào nên chọn ESP32
- Ứng dụng yêu cầu kết nối cả Wi-Fi và Bluetooth
- Hệ thống đa cảm biến với nhiều đầu vào analog hoặc kỹ thuật số
- Các tác vụ thời gian thực hoặc đòi hỏi nhiều tính toán, được hưởng lợi từ xử lý lõi kép
- Thiết kế chạy bằng pin đòi hỏi quản lý năng lượng tinh vi và đánh thức có điều kiện
- Hệ thống cần hỗ trợ mật mã tăng tốc phần cứng hoặc bus CAN
- Dự án dự kiến sẽ mở rộng về độ phức tạp hoặc bộ tính năng theo thời gian
Ví dụ thiết kế thực tế: Trạm Giám sát Môi trường
Hãy cân nhắc một trạm giám sát môi trường chạy bằng pin, đo nhiệt độ, độ ẩm, áp suất không khí, cường độ ánh sáng và độ ẩm đất, đồng thời báo cáo dữ liệu lên dịch vụ đám mây mỗi 15 phút.
ESP8266 Triển khai:
Kênh ADC duy nhất giới hạn kết nối cảm biến analog trực tiếp; cần một IC ADC đa kênh (ví dụ: ADS1115) kết nối qua I2C cho cảm biến độ ẩm đất và ánh sáng. Thiết bị sẽ thức dậy từ chế độ ngủ sâu bằng bộ hẹn giờ, khởi tạo Wi-Fi, kết nối mạng, truyền dữ liệu qua MQTT hoặc HTTP, rồi trở lại chế độ ngủ sâu. Dòng điện trung bình tiêu thụ trong chu kỳ 15 phút có thể từ 50-100 μA, cho phép hoạt động trong nhiều tháng với một pin lithium nhỏ.
Triển khai ESP32:
Nhiều kênh ADC cho phép kết nối trực tiếp các cảm biến analog mà không cần linh kiện bên ngoài. Bộ đồng xử lý ULP có thể giám sát ngưỡng cảm biến và chỉ đánh thức các lõi chính khi có thay đổi đáng kể, hoặc duy trì lịch trình 15 phút. Bluetooth có thể cho phép cấu hình cục bộ qua ứng dụng điện thoại thông minh mà không cần phải mã hóa cứng thông tin đăng nhập Wi-Fi. Dòng điện trung bình tiêu thụ có thể giảm xuống còn 30-60 μA với quản lý trạng thái ngủ tối ưu, kéo dài tuổi thọ pin hơn nữa. Kiến trúc lõi kép cũng cho phép thăm dò cảm biến đồng thời và giao tiếp mạng, giảm tổng thời gian thức dậy.
Trong trường hợp này, chi phí bổ sung của ESP32 được bù đắp bằng việc giảm số lượng linh kiện ngoài, thời lượng pin kéo dài và trải nghiệm người dùng được cải thiện.
Kết luận
ESP8266 và ESP32 hướng đến các phân khúc khác nhau của phổ thiết kế IoT. ESP8266 vẫn là lựa chọn thực tế, tiết kiệm chi phí cho các thiết bị kết nối Wi-Fi đơn giản, nơi yêu cầu xử lý khiêm tốn và không cần Bluetooth. Hệ sinh thái trưởng thành, sự hỗ trợ rộng rãi từ cộng đồng và rào cản gia nhập thấp khiến nó phù hợp cho mục đích giáo dục và các sản phẩm thương mại đơn giản.
Bộ xử lý lõi kép, bộ nhớ mở rộng, tích hợp Bluetooth và bộ thiết bị ngoại vi phong phú hơn của ESP32 biện minh cho chi phí cao hơn trong các ứng dụng đòi hỏi dung lượng tính toán lớn hơn, nhiều giao diện truyền thông hoặc quản lý năng lượng tinh vi. Đối với các thiết kế dự kiến sẽ phát triển hoặc mở rộng chức năng, tính linh hoạt của ESP32 giúp giảm nguy cơ phần cứng lỗi thời.
Kỹ sư và nhóm mua sắm nên đánh giá ngân sách điện năng, yêu cầu I/O, giao thức truyền thông, chi phí đơn vị và khả năng mở rộng dài hạn khi lựa chọn giữa các mô-đun này. Cả hai thiết bị đều có khả năng và được hỗ trợ tốt; Lựa chọn tối ưu phụ thuộc vào các ràng buộc kỹ thuật và kinh tế cụ thể của ứng dụng.