1) Giới thiệu về ESP32

ESP32 là một dòng vi điều khiển được phát triển bởi Espressif. Chúng phổ biến chủ yếu nhờ những đặc điểm sau:




  • Giá rẻ: Bạn có thể mua một ESP32 với giá từ khoảng 6 USD, giúp nó dễ dàng tiếp cận với đại đa số người dùng
  • Tiêu thụ điện năng thấp: ESP32 dùng rất ít năng lượng so với các vi điều khiển khác và hỗ trợ nhiều chế độ tiết kiệm điện như “deep sleep” để giảm tiêu thụ
  • Khả năng Wi-Fi: ESP32 có thể dễ dàng kết nối vào mạng Wi-Fi để truy cập internet (chế độ station), hoặc tự tạo mạng Wi-Fi riêng (chế độ access point) để các thiết bị khác kết nối vào — tính năng cực kỳ quan trọng cho các dự án IoT và nhà thông minh. Bạn có thể có nhiều thiết bị giao tiếp với nhau bằng chính kết nối Wi-Fi này
  • Bluetooth: ESP32 hỗ trợ cả Bluetooth cổ điển và Bluetooth Low Energy (BLE), rất hữu ích cho nhiều ứng dụng IoT khác nhau
  • Hai nhân xử lý: Hầu hết các dòng ESP32 đều có hai lõi xử lý — sử dụng 2 bộ xử lý Xtensa 32-bit LX6: core 0 và core 1
  • Hệ thống giao tiếp ngoại vi phong phú: ESP32 hỗ trợ rất nhiều giao thức vào/ra như cảm ứng điện dung, ADC, DAC, UART, SPI, I2C, PWM và nhiều hơn nữa, giúp đọc tín hiệu từ môi trường và điều khiển các thiết bị
  • Tương thích với lập trình Arduino
  • Tương thích với MicroPython

2) Chỉ tiêu kĩ thuật ESP32 WROOM

WiFi: tốc độ dữ liệu 150,0 Mbps với HT40

Bluetooth: hỗ trợ BLE (Bluetooth Low Energy) và Bluetooth Classic

Bộ xử lý: Tensilica Xtensa Dual-Core 32-bit LX6, chạy ở 160 hoặc 240 MHz

Bộ nhớ:




  • ROM: 448 KB (dùng để khởi động và các chức năng lõi)
  • SRAM: 520 KB (lưu trữ dữ liệu và lệnh)
  • RTC fast SRAM: 8 KB (dùng cho dữ liệu và CPU chính khi khởi động từ chế độ deep-sleep bằng RTC Boot)
  • RTC slow SRAM: 8 KB (dùng cho bộ đồng xử lý khi ở chế độ deep-sleep)
  • eFuse: 1 Kbit (256 bit dùng cho hệ thống — địa chỉ MAC và cấu hình chip; 768 bit dành cho ứng dụng người dùng, bao gồm mã hoá Flash và Chip-ID)
  • Flash: kết nối nội bộ qua IO16, IO17, SD_CMD, SD_CLK, SD_DATA_0 và SD_DATA_1 trên ESP32-D2WD và ESP32-PICO-D4:

0 MiB (các chip ESP32-D0WDQ6, ESP32-D0WD và ESP32-S0WD)

2 MiB (chip ESP32-D2WD)

4 MiB (module SiP ESP32-PICO-D4)

Tiêu thụ năng lượng thấp: cho phép sử dụng các chức năng như ADC ngay cả khi ở chế độ deep sleep

Các giao tiếp ngoại vi:




  • Giao diện ngoại vi hỗ trợ DMA, bao gồm cảm ứng điện dung (capacitive touch)
  • ADC (bộ chuyển đổi tương tự – số)
  • DAC (bộ chuyển đổi số – tương tự)
  • I²C (giao tiếp liên tích hợp)
  • UART (thu phát không đồng bộ)
  • SPI (giao tiếp ngoại vi nối tiếp)
  • I²S (giao tiếp âm thanh liên chip)
  • RMII (giao diện độc lập phương tiện rút gọn)
  • PWM (điều chế độ rộng xung)

Bảo mật: hỗ trợ phần cứng tăng tốc cho AES và SSL/TLS




3) Mới bắt đầu nên chọn kit ESP32 nào?

Các bạn nên chọn ESP32 DEVKIT DOIT

Chỉ tiêu kĩ thuật:




  • Số lõi xử lý: 2 (hai nhân – dual core)
  • Wi-Fi 2.4 GHz, tốc độ lên đến 150 Mbit/s
  • Bluetooth: BLE (Bluetooth Low Energy) và Bluetooth cổ điển
  • Kiến trúc: 32-bit
  • Tần số xung nhịp: Lên đến 240 MHz
  • RAM: 512 KB
  • Số lượng chân GPIO: 30, 36 hoặc 38 (tùy model)
  • Ngoại vi hỗ trợ: Cảm ứng điện dung, ADC, DAC, I2C, UART, CAN 2.0, SPI, I2S, RMII, PWM, và nhiều hơn nữa
  • Nút tích hợp: Nút RESET và BOOT
  • LED tích hợp: LED xanh gắn với GPIO2; LED đỏ báo nguồn
  • Chip chuyển USB–UART: CP2102

Board này đi kèm với giao diện microUSB, cho phép bạn kết nối bo mạch với máy tính để nạp code hoặc cấp nguồn.

Nó sử dụng chip CP2102 (USB sang UART) để giao tiếp với máy tính thông qua cổng COM bằng giao thức nối tiếp (serial). Một chip phổ biến khác là CH340. Bạn cần kiểm tra bo mạch của mình dùng chip chuyển đổi USB–UART loại nào, vì bạn sẽ cần cài driver tương ứng để máy tính có thể giao tiếp được với bo mạch

Bo mạch này cũng có nút RESET (có thể được ghi là EN) để khởi động lại bo và nút BOOT để đưa bo vào chế độ flashing (chế độ sẵn sàng nhận code). Lưu ý rằng một số board có thể không có nút BOOT.

Ngoài ra, nó còn có một LED xanh tích hợp, được nối nội bộ với GPIO2. LED này hữu ích cho việc debug vì nó giúp tạo ra tín hiệu hiển thị trực quan. Cũng có một LED đỏ sáng lên khi bo mạch được cấp nguồn



4) Cách lập trình ESP32

ESP32 có thể được lập trình bằng nhiều firmware và ngôn ngữ lập trình khác nhau. Bạn có thể sử dụng: Arduino C/C++ với Arduino core dành cho ESP32, Espressif IDF (IoT Development Framework), MicroPython, JavaScript, LUA…

Ở series này tôi sẽ sử dụng Arduino IDE để lập trình cho ESP32

Cách tải Arduino IDE: 




Cách cài board ESP32 trên Arduino IDE:




  • Bước 1: Truy cập File -> Preferences





  • Bước 3: Tool -> Board -> Boards Manager hoặc ấn biểu tượng Boards Manager ở góc trái



  • Bước 4: Tìm ESP32 và tải esp32 by Espressif Systems version 3.x



  • Bước 5: Khởi động lại Arduino IDE

Upload code vào ESP32:




  • Bước 1: Kết nối ESP32 bằng cáp vào laptop (lưu ý cài driver CP2102 hoặc CH340, check trong device manager thấy nhận mới dùng được)
  • Bước 2: Tools -> Board rồi chọn Select other board and port…
  • Bước 3: Chọn DOIT ESP32 DEVKIT V1
  • Bước 4: Chọn Files -> Examples -> 01.Basics -> Blink
  • Bước 5: Ấn nút upload sẽ nạp code vào ESP32, sau khi nạp xong lúc đó trên mạch sẽ có led nhấp nháy