Giới thiệu ESP32 là gì?
Bạn mới tìm hiểu về ESP32? Đây là bài viết đầu tiên dành cho bạn, giúp giải đáp khái niệm ESP32 là gì và các kiến thức liên quan. ESP32 là một dòng hệ thống vi điều khiển trên chip (System on a Chip – SoC) có chi phí và lượng tiêu thụ điện năng thấp.
ESP32 được Espressif phát triển, với khả năng kết nối WiFi và Bluetooth không dây cũng như bộ xử lý lõi kép. Đây là sản phẩm kế thừa của ESP8266 với nhiều tính năng mới hơn. Hiện nay, ESP32 được sử dụng rộng rãi trong các ứng dụng điện tử và IoT, nhà thông minh và cả công nghiệp.
ESP32 là gì?
ESP32 là một dòng chip vi điều khiển được phát triển bởi Espressif, với nhiều đặc điểm ưu việt:
- Giá rẻ: So với các dòng vi điều khiển khác, ESP32 có giá thành phải chăng hơn rất nhiều, giúp tất cả những ai đam mê công nghệ có thể dễ dàng tiếp cận nó
- Lượng điện tiêu thụ thấp: So với các chip điều khiển khác, ESP32 tiêu thụ rất ít năng lượng. Dòng chip này cũng hỗ trợ các trạng thái tiết kiệm năng lượng như Deep Sleep để tiết kiệm điện
- Có thể kết nối Wi-Fi: Bạn có thể dễ dàng kết nối ESP32 với mạng Wi-Fi để truy cập vào Internet (chế độ trạm – Station mode) hoặc tạo một mạng WiFi cho riêng nó (chế độ điểm truy cập – Access point) để các thiết bị khác có thể kết nối với nó. Chế độ Access point thường được dùng trong các dự án IoT hoặc tự động hóa trong Smart Home, trong đó bạn có thể cho phép nhiều thiết bị liên lạc và trao đổi thông tin với nhau thông qua WiFi của chúng
- Hỗ trợ Bluetooth: ESP32 hỗ trợ cả 2 chế độ: Bluetooth Classic và Bluetooth Low Energy (BLE) – một công cụ rất hữu ích cho những ứng dụng IoT
- Lõi kép: Đa số các dòng chip ESP32 hiện nay đều có lõi kép, chúng đi kèm với 2 bộ vi xử lý Xtensa 32-bit LX6: lõi 0 và lõi 1
- Đa dạng thiết bị ngoại vi: ESP32 hỗ trợ nhiều loại thiết bị ngoại vi đầu vào (đọc dữ liệu từ bên ngoài) và đầu ra (gửi lệnh/tín hiệu ra bên ngoài) như cảm ứng điện dung, I2C, DAC, PWM, UART, SPI,… để bạn tự do làm các dự án điện tử mà mình thích
- Tương thích với Arduino và MicroPython: ESP32 có thể được lập trình bằng ngôn ngữ lập trình phổ biến Arduino và MicroPython (phiên bản rút gọn của Python 3, phù hợp cho các bộ vi điều khiển và hệ thống nhúng)
Thông số kỹ thuật
Dưới đây là một số thông số kỹ thuật chính của ESP32:
1. Kết nối không dây
- WiFi: Tốc độ dữ liệu lên đến 150Mbps với HT40
- Bluetooth: Hỗ trợ BLE (Bluetooth Low Energy – Bluetooth năng lượng thấp) và Bluetooth Classic
- Bộ xử lý: Chip vi xử lý LX6 32-bit Tensilica Xtensa Dual-Core, hoạt động ở tốc độ 160MHz hoặc 240MHz
2. Bộ nhớ
- ROM: 448 KB (phục vụ cho việc khởi động và chạy các chức năng cốt lõi)
- SRAM: 520 KB (dùng cho dữ liệu và hướng dẫn)
- RTC fast SRAM: 8 KB (dùng để lưu trữ dữ liệu và CPU chính trong khi RTC Boot ở chế độ Deep Sleep)
- RTC slow SRAM : 8KB (dùng để truy cập bộ đồng xử lý (co-processor) trong chế độ Deep Sleep)
- eFuse: 1 Kbit, trong đó:
- 256 bit: phục vụ cho hệ thống (địa chỉ MAC và cấu hình chip)
- 768 bit còn lại: được dành riêng cho các ứng dụng của người dùng, ví dụ như Flash-Encryption và Chip-ID
- Embedded flash: Flash được kết nối thông qua IO16, IO17, SD_CMD, SD_CLK, SD_DATA_0 and SD_DATA_1 on ESP32-D2WD and ESP32-PICO-D4. Cụ thể:
- 0 MiB (ESP32-D0WDQ6, ESP32-D0WD, and ESP32-S0WD chips)
- 2 MiB (ESP32-D2WD chip)
- 4 MiB (ESP32-PICO-D4 SiP module)
3. Công suất
ESP32 cho phép bạn vẫn có thể sử dụng bộ chuyển đổi ADC, kể cả khi đang trong chế độ Deep Sleep.
4. Hỗ trợ các thiết bị ngoại vi đầu ra / đầu vào
- Giao diện ngoại vi với DMA bao gồm cảm ứng điện dung
- ADC (Bộ chuyển đổi Analog thành Digital, tên đây đủ là Analog to Digital Converter)
- DACs (Bộ chuyển đổi Digital thành Analog, tên đây đủ là Digital to Analog Converter)
- I2C (Inter Integrated Circuit)
- UART (Universal Asynchronous Receiver/Transmitter)
- SPI (Serial Peripheral Interface)
- I2S (Integrated Interchip Sound)
- RMII (Reduced Media-Independent Interface)
- PWM (Pulse-Width Modulation)
5. Tính bảo mật
Bộ tăng tốc phần cứng dành cho SSL/TLS và AES
Sự khác biệt giữa ESP32 vs ESP8266
Như đã trình bày phía trên, ESP32 là phiên bản kế thừa từ ESP8266. Vậy thì điểm khác biệt chính giữa ESP32 vs ESP8266 là gì?
Đó là ESP32 có thêm một lõi CPU, có tốc độ WiFi nhanh chóng hơn, hỗ trợ nhiều GPIO cũng như có thể kết nối Bluetooth 4.2 hoặc BLE. Ngoài ra, để mang lại thuận tiện cao nhất cho dân công nghệ Makers, ESP32 hỗ trợ các chân cảm ứng dùng để đánh thức ESP32 khỏi chế độ Deep Sleep dễ dàng và có các cảm biến hiệu ứng Hall tích hợp (để phát hiện từ trường xung quanh nó).
Nhìn chung, cả 2 mạch ESP32 vs ESP8266 đều có giá thành khá phải chăng, tuy nhiên ESP32 sẽ đắt hơn một chút nhé! Điều này cũng dễ hiểu vì ESP32 có đã được cải thiện khá nhiều tính năng và hiệu suất hoạt động, phù hợp cho chúng ta thực hiện các dự án kỹ thuật hơn.
Nói ngắn gọn, sự khác biệt giữa ESP8266 và ESP32 là gì? Có một số ý chính:
- ESP32 có tốc độ nhanh hơn ESP8266
- ESP32 đi kèm với nhiều GPIO hơn, mang đến nhiều chức năng đa dạng
- ESP32 hỗ trợ các chuyển đổi Analog trên 18 kênh (chân kích hoạt Analog), trong khi đó ESP8266 chỉ có một chân ADC 10 bit
- ESP32 hỗ trợ Bluetooth còn ESP8266 thì không có
- ESP32 cõ lõi kép (hầu hết các sản phẩm), còn ESP8266 chỉ dùng lõi đơn
- ESP32 đắt hơn một chút so với ESP8266
Cách chọn board ESP32
Trên thị trường hiện nay có rất nhiều board ESP32 đến từ nhiều đơn vị cung cấp khác nhau. Nhìn chung thì tất cả chúng đều có cách hoạt động tương tự nhau, nhưng một số board ESP32 sẽ phù hợp hơn cho dự án nhất định so với các board khác.
Vậy, khi chọn board ESP32 để dùng thì bạn cần lưu ý điều gì? Dưới đây là một số lưu ý khi bạn chọn ESP32 chip:
- Giao diện USB-to-UART và mạch điều chỉnh điện áp: Đa số các mạch ESP32 đều hỗ trợ cả 2 tính năng này. Đây là tính năng cực kỳ quan trọng, giúp kết nối ESP32 với máy tính của bạn để cấp nguồn và tải chương trình của bạn lên.
- Nút BOOT và RESET/EN: Có chức năng đưa board ESP32 về chế độ flashing hoặc reset (khởi động lại) bo mạch. Một số mạch ESP32 không có nút BOOT. Đa số các mạch này sẽ tự động chuyển sang chế độ flashing.
- Cấu hình chân và số lượng chân: Để sử dụng ESP32 đúng cách và phục vụ tốt nhất cho các dự án của mình, bạn cần có sơ đồ chân của bảng mạch (một bản đồ hiển thị chân nào tương ứng với GPIO nào cũng như các tính năng chính của nó). Nếu không, rất có thể bạn sẽ sử dụng ESP32 sai cách.
- Đầu nối anten: Hầu hết các mạch ESP32 đều có ăng-ten tích hợp, phục vụ cho việc kết nối WiFi. Một số mạch ESP32 sẽ có đầu nối ăng-ten để có thể kết nối ăng-ten bên ngoài. Việc kết nối thêm ăng ten bên ngoài sẽ mở rộng phạm vi WiFi.
- Đầu nối pin: Có một số mạch ESP32 hỗ trợ cấp nguồn bằng pin, thông qua pin Lipo mang đến sự tiện lợi hơn. Tuy nhiên, bạn cũng có thể cấp nguồn cho một ESP32 “bình thường” bằng pin thông qua các chân nguồn.
- Các tính năng phần cứng bổ sung: Một số ESP32 Development Board hỗ trợ các tính năng phần cứng bổ sung. Ví dụ: có tích hợp thêm màn hình OLED, module LoRa, module SIM800 (hỗ trợ cả GSM và GPRS), hộp đế pin, camera hoặc các phần cứng khác phục vụ những dự án khác nhau.
Nên chọn mạch ESP32 nào cho người mới bắt đầu?
Đối với người mới bắt đầu tìm hiểu về ESP32 là gì, IoTZone khuyên bạn nên dùng các board ESP32 với nhiều lựa chọn GPIO có sẵn. Khi mới tìm hiểu, bạn không nên chọn các mạch ESP32 có các tính năng phần cứng bổ sung, điều này chỉ làm tăng độ phức tạp khi tiếp cận. Điều quan trọng là ESP32 phải có điện áp ổn định và có đầu vào USB để cấp nguồn điện cũng như tải chương trình lên.
Trong hầu hết các dự án ESP32, chúng tôi sử dụng bảng mạch Node WiFi 32. Đây là bảng mạch mà IoTZone khuyên dùng cho người mới bắt đầu.
Mua ESP32 ở đâu?
Bạn có thể mua mạch ESP32 qua các link sau:
Thông số kỹ thuật của mạch:
- Lõi kép Dualcore CPU ESP32 240MHz
- Bộ nhớ RAM 512KB
- Bộ nhớ Flash 4MB
- WiFi 2.4GHz tốc độ cao, với nhiều chế độ hoạt động (Station, Access point)
- Hỗ trợ Bluetooth 4.2, BLE (Bluetooth Low Energy), Audio
- Tương thích Arduino UNO và tương thích với thư viện arduino cho ESP32
- Hỗ trợ sạc pin
- Hỗ trợ nạp chip ESP32 tự động
- Có 1 LED và 1 nút nhấn lập trình được
- 9 cổng cắm Piece
Lời kết
Qua bài viết trên, hy vọng bạn đã hiểu tổng quan về khái niệm ESP32 là gì và chọn được board ESP32 phù hợp để bắt đầu thực hành các dự án đầu tiên.
Tiếp theo, bạn có thể tham khảo bài viết bên dưới để tìm hiểu cách lập trình ESP32 nhé!