Arduino / ESP32

ESP32 và Arduino khác nhau thế nào?

8 phút đọc05/05/2024Trần Anh Thư
ESP32 và Arduino khác nhau thế nào?

So sánh chi tiết về phần cứng, hiệu năng và ứng dụng của hai nền tảng phổ biến. Trong bài viết này, chúng ta sẽ cùng tìm hiểu chi tiết và ứng dụng thực tế trong robot.

ESP32 và Arduino khác nhau thế nào?

Bảng so sánh chi tiết

Thông sốArduino UnoESP32 DevKit
CPUATmega328P 8-bit 16MHzXtensa LX6 32-bit 240MHz dual-core
RAM2 KB SRAM520 KB SRAM
Flash32 KB4 MB
GPIO14 digital + 6 analog36 GPIO đa năng
ADC10-bit12-bit
WiFiKhông802.11 b/g/n
BluetoothKhôngBT 4.2 + BLE
Giá~80.000 VNĐ~85.000 VNĐ
Điện áp GPIO5V3.3V

Khi nào nên dùng Arduino Uno?

  1. Học lập trình cơ bản — đơn giản, dễ hiểu, tài liệu nhiều
  2. Dự án không cần kết nối — không WiFi, không Bluetooth
  3. 5V sensor — nhiều cảm biến cũ dùng 5V logic
  4. Thư viện AVR — một số thư viện chỉ hỗ trợ AVR
  5. Budget thấp — Arduino clone (CH340) giá ~30.000 VNĐ

Khi nào nên dùng ESP32?

  1. IoT — kết nối WiFi cần thiết
  2. Bluetooth control từ điện thoại
  3. Xử lý phức tạp — FFT, machine learning, image processing
  4. Web server trên board mà không cần Raspberry Pi
  5. Nhiều GPIO và ADC 12-bit chính xác hơn

Cùng task, code khác nhau thế nào?

Blink LED:

cpp
// Arduino Uno
void loop() {
  digitalWrite(LED_BUILTIN, HIGH); delay(500);
  digitalWrite(LED_BUILTIN, LOW);  delay(500);
}

// ESP32 — y hệt, chỉ khác LED_BUILTIN = GPIO2
void loop() {
  digitalWrite(2, HIGH); delay(500);
  digitalWrite(2, LOW);  delay(500);
}

Analog read:

cpp
// Arduino Uno — 10-bit (0–1023)
int raw = analogRead(A0);
float v = raw * 5.0f / 1023.0f;

// ESP32 — 12-bit (0–4095), 3.3V reference
int raw = analogRead(34);
float v = raw * 3.3f / 4095.0f;

WiFi (chỉ ESP32):

cpp
#include <WiFi.h>
WiFi.begin("SSID", "password");
while (WiFi.status() != WL_CONNECTED) delay(500);
Serial.println(WiFi.localIP());

Tips migration Arduino → ESP32

  1. Đổi analogWrite()ledcWrite() (ESP32 dùng LEDC)
  2. Tránh GPIO 6–11 (kết nối SPI Flash nội)
  3. GPIO 34, 35, 36, 39: input only — không dùng OUTPUT
  4. Giảm điện áp sensor xuống 3.3V hoặc dùng voltage divider

Gợi ý dùng bài viết trong lớp học

Câu hỏi khởi động

  • Linh kiện/kỹ thuật trong bài giải quyết vấn đề gì trong robot thật?
  • Nếu nối sai nguồn hoặc đọc sai tín hiệu, robot sẽ biểu hiện như thế nào?
  • Có cách nào đo hoặc quan sát hiện tượng thay vì đoán lỗi không?

Hoạt động thực hành nhanh

  1. Giáo viên cho học viên xem linh kiện hoặc sơ đồ liên quan đến chủ đề ESP32 và Arduino khác nhau thế nào?.
  2. Học viên dự đoán chân nguồn, chân tín hiệu và dữ liệu đầu ra.
  3. Chạy code mẫu ở cấu hình an toàn, sau đó thay đổi một tham số.
  4. Mỗi nhóm ghi nhận lỗi gặp phải và cách kiểm tra theo thứ tự nguồn, GND, tín hiệu, code.

Checklist kỹ thuật

  • Luôn kiểm tra điện áp hoạt động trước khi nối với board điều khiển.
  • In dữ liệu ra Serial Monitor khi làm việc với cảm biến hoặc thuật toán.
  • Với motor/servo, cấp nguồn tải riêng và nối chung GND với board.
  • Ghi lại thông số đã calibration để lần sau không phải chỉnh lại từ đầu.

Câu hỏi ôn tập

  • Thông số nào quan trọng nhất khi chọn linh kiện này cho robot?
  • Lỗi nào dễ xảy ra nhất trong lớp học và cách phát hiện nhanh nhất là gì?
  • Có thể mở rộng kiến thức này thành dự án robot nào?

Tài nguyên tải về

Tải bản PDF của bài viết để in giáo án hoặc gửi trước cho học viên.

Tải PDF
Chia sẻ bài viết

Mục lục bài viết

Tác giả

T

Trần Anh Thư

Kỹ sư điện tử & Lập trình viên

Thực hành với bộ kit robot

Tự tay lắp ráp và lập trình robot với bộ kit từ Học Lập Trình Robot!

Xem bộ kit