Giới thiệu dự án

Trong bối cảnh cuộc Cách mạng Công nghiệp 4.0 và chuyển đổi số giáo dục đang diễn ra mạnh mẽ, phương pháp giáo dục STEM (Science - Technology - Engineering - Mathematics) đã trở thành trụ cột quan trọng trong việc đào tạo nguồn nhân lực kỹ thuật chất lượng cao. Theo các báo cáo giáo dục công nghệ gần đây, hơn 70% các chương trình đào tạo kỹ thuật thực hành định hướng sớm cho học sinh và sinh viên yêu cầu các bộ kit thí nghiệm trực quan, có khả năng tương tác liên ngành giữa phần cứng (Hardware), phần mềm nhúng (Firmware) và ứng dụng điều khiển (Mobile/Web Application).

Tuy nhiên, thị trường thiết bị giáo dục STEM hiện nay bộc lộ nhiều điểm nghẽn lớn:

  • Chi phí đắt đỏ: Các bộ kit nhập khẩu chuyên dụng (như LEGO Mindstorms, LEGO SPIKE Prime, VEX Robotics) có giá thành dao động từ 8.000.000 đến 15.000.000 VNĐ, vượt quá khả năng tiếp cận của phần lớn trường học phổ thông và sinh viên tại Việt Nam.
  • Tính đóng kín và phân mảnh: Các nền tảng thương mại thường sử dụng phần cứng đóng kín, hạn chế khả năng tùy biến sâu mạch điện tử và can thiệp mã nguồn cấp thấp.
  • Hạn chế về kết nối không dây: Các bộ kit giá rẻ dựa trên nền tảng vi điều khiển cũ (như 8-bit ATmega328P trên Arduino Uno) thiếu kết nối không dây tích hợp sẵn (Wi-Fi/Bluetooth), đòi hỏi gắn thêm nhiều module mở rộng rườm rà, dễ gây lỗi tiếp xúc và nhiễu tín hiệu.

Đề tài "Thiết kế và lập trình nhúng cho mạch điện tử để ứng dụng cho giáo dục STEM" được thực hiện nhằm giải quyết triệt để các hạn chế trên thông qua việc phát triển một hệ sinh thái phần cứng mở, đa năng dựa trên vi điều khiển 32-bit ESP32, cho phép điều khiển linh hoạt 3 mô hình thực tế: Xe robot thông minh, Nhà thông minh (Smart Home) và Cánh tay robot 4 bậc tự do (4-DOF Robotic Arm).

+-----------------------------------------------------------------------------------+
|                            HỆ THỐNG ĐIỀU KHIỂN STEM ESP32                         |
+-----------------------------------------------------------------------------------+
| [Nguồn 7-12V] -> [XL1509-5.0 Buck (2A)] -> 5V  -> [L293D / SG90 / Relay / RGB]   |
|               -> [AMS1117-3.3 LDO (1A)]  -> 3.3V -> [ESP32 MCU / Encoder / Sensors]|
+-----------------------------------------+-----------------------------------------+
                                          |
        +---------------------------------+---------------------------------+
        |                                                                   |
        v (Giao tiếp Bluetooth SPP)                                         v (Wi-Fi 802.11 b/g/n SoftAP)
+-------------------------------+                                   +-------------------------------+
|  MIT App Inventor Mobile App  |                                   |     ESP32 Embedded Web Server |
|  - Điều khiển Xe Robot        |                                   |  - Điều khiển Arm 4-DOF       |
|  - Giám sát Nhà thông minh    |                                   |  - Tương tác giao diện Web    |
+-------------------------------+                                   +-------------------------------+

Mục tiêu đề tài

  1. Thiết kế phần cứng hoàn chỉnh: Nghiên cứu, tính toán công suất, phân tích footprint và layout bảng mạch in (PCB - Printed Circuit Board) 2 lớp tối ưu hóa trên phần mềm KiCad 7.0.
  2. Thiết kế hệ thống quản lý nguồn đa tầng: Tích hợp bộ nguồn hạ áp xung Buck XL1509-5.0E1 (hiệu suất cao, dòng tải 2A) và nguồn tuyến tính AMS1117-3.3 (dòng 1A) đảm bảo cấp nguồn ổn định cho vi điều khiển và tải công suất.
  3. Phát triển Firmware nhúng: Xây dựng chương trình điều khiển nhúng trên nền tảng Arduino IDE (ngôn ngữ C/C++), tích hợp các thuật toán đọc cảm biến, điều khiển xung PWM (Pulse Width Modulation) cho động cơ DC, động cơ Servo SG90 và truyền thông dữ liệu không dây.
  4. Phát triển giao diện điều khiển đa nền tảng: Lập trình ứng dụng di động Android qua MIT App Inventor 2 giao tiếp Bluetooth Classic (SPP) và xây dựng Web Server nội bộ trực tiếp trên ESP32 thông qua chế độ Wi-Fi Access Point (SoftAP).
  5. Chế tạo và thử nghiệm 3 mô hình STEM thực tiễn:
    • Mô hình 1: Xe robot tự hành (dò line hồng ngoại, tránh vật cản siêu âm, điều khiển tay qua Bluetooth).
    • Mô hình 2: Nhà thông minh (cảnh báo nhiệt độ - độ ẩm, phát hiện rò rỉ lửa, tự động chiếu sáng, còi báo động Buzzer, khóa cửa Servo).
    • Mô hình 3: Cánh tay robot 4 bậc tự do điều khiển góc quay mượt mà qua thanh trượt Web Server.

Phạm vi và giới hạn nghiên cứu

  • Phạm vi: Ứng dụng trong môi trường phòng lab, lớp học STEM dành cho học sinh THCS, THPT và sinh viên năm đầu ngành Kỹ thuật Điều khiển - Tự động hóa, Điện - Điện tử, Cơ điện tử.
  • Giới hạn kỹ thuật: Hệ thống điều khiển tốc độ động cơ DC ở mức công suất định mức cơ bản (chưa tích hợp thuật toán vòng kín PID); ứng dụng di động tập trung trên hệ điều hành Android; khoảng cách điều khiển không dây tối ưu trong bán kính 15–20 mét (Bluetooth) và 20–30 mét (Wi-Fi SoftAP).

Phân tích và thiết kế giải pháp

Phân tích hiện trạng

Tiêu chí phân tích Arduino Uno R3 STEM Kit LEGO Mindstorms / SPIKE Prime Bo mạch ESP32 STEM đề xuất
Vi xử lý trung tâm ATmega328P (8-bit, 16 MHz) ARM Cortex M4 / proprietary ESP32 Dual-Core Tensilica LX6 (32-bit, 240 MHz)
Bộ nhớ (Flash / RAM) 32 KB Flash / 2 KB SRAM 32 MB Flash / 1 MB RAM 4 MB Flash / 520 KB SRAM
Kết nối không dây Không (phải mua thêm HC-05/ESP8266) Bluetooth / Wi-Fi Tích hợp sẵn Wi-Fi 802.11 b/g/n + Bluetooth v4.2 BR/EDR
Khả năng mở rộng ngoại vi 14 chân Digital, 6 chân Analog Hạn chế theo cổng độc quyền 30 chân mở rộng tiêu chuẩn, tích hợp sẵn L293D, Relay, RGB, Buzzer
Nền tảng lập trình Arduino C++, Scratch Block code độc quyền / MicroPython Arduino C++, MIT App Inventor 2, Web HTML5/JS, MicroPython
Chi phí sản xuất (BOM) ~350.000 – 450.000 VNĐ > 8.000.000 VNĐ ~280.000 VNĐ (Tiết kiệm >60% so với giải pháp tương đương)

Phân loại yêu cầu hệ thống theo mô hình MoSCoW

  • Must have (Bắt buộc phải có):
    • Mạch nguồn hạ áp kép ổn định 12V $\rightarrow$ 5V (tối thiểu 1.5A) và 5V $\rightarrow$ 3.3V (tối thiểu 500mA).
    • Khối cầu H L293D điều khiển đảo chiều và điều tốc 2 động cơ DC (dòng đỉnh 1.2A, liên tục 600mA/kênh).
    • Giao tiếp Bluetooth không dây truyền nhận dữ liệu 2 chiều giữa ESP32 và App điện thoại.
    • Khả năng đọc đồng thời cảm biến siêu âm HC-SR04, cảm biến nhiệt ẩm DHT11, cảm biến ánh sáng và cảm biến lửa LM393.
  • Should have (Nên có):
    • Khối công tắc chuyển mạch Relay 5V/5A cách ly đóng ngắt thiết bị AC/DC công suất.
    • Tích hợp 4 cổng điều khiển động cơ Servo SG90 bằng xung PWM phần cứng.
    • Giao diện Web Server tích hợp dạng SoftAP không cần router trung gian.
  • Could have (Có thể có):
    • Giao tiếp đọc xung Encoder quang học xác định tốc độ động cơ.
    • Đèn LED cảnh báo trạng thái nguồn và đèn chỉ thị đóng ngắt Relay.
  • Won't have (Chưa thực hiện trong giai đoạn này):
    • Thuật toán điều khiển bám quỹ đạo PID và xử lý ảnh AI trực tiếp trên vi điều khiển.

Thiết kế hệ thống

1. Tính toán và thiết kế khối nguồn công suất

Để đảm bảo toàn bộ hệ thống hoạt động ổn định, không bị sụt áp dẫn đến hiện tượng vi điều khiển bị Reset ngẫu nhiên (Brownout Reset), dòng điện cực đại tiêu thụ bởi tất cả các module ở tải đỉnh được tính toán chi tiết:

$$\sum I_{max} = I_{\text{ESP32}} + I_{\text{4xServo}} + I_{\text{4xLED_RGB}} + I_{\text{Sensors}} + I_{\text{Relay}} + I_{\text{L293D}} = 600 + 400 + 200 + 100 + 80 + 2 = 1382\text{ mA} \approx 1.382\text{ A}$$

Với dòng tiêu thụ cực đại $1.382\text{ A}$, nhóm nghiên cứu lựa chọn:

  • Tầng hạ áp 1 (12V $\rightarrow$ 5V): Sử dụng IC biến đổi Buck xung XL1509-5.0E1 với dòng định mức tối đa $2.0\text{ A}$, tần số chuyển mạch $150\text{ kHz}$, hiệu suất chuyển đổi đạt $>85%$, nhiệt lượng tỏa ra thấp hơn nhiều so với IC tuyến tính LM7805.
  • Tầng hạ áp 2 (5V $\rightarrow$ 3.3V): Sử dụng IC ổn áp tuyến tính LDO AMS1117-3.3 với dòng tối đa $1.0\text{ A}$, điện áp sụt áp thấp ($1.1\text{ V}$ tại tải tối đa), cấp nguồn sạch cho khối vi xử lý và encoder.
                  SƠ ĐỒ PHÂN BỔ NGUỒN CÔNG SUẤT VÀ TÍN HIỆU
+------------------+         +------------------+         +-------------------+
| Nguồn DC 7V-12V  | ------> |  XL1509-5.0 Buck | ------> | Tuyến 5V DC       |
| (Jack DC / Pin)  |         | (Dòng tải max 2A)|         | - 4x Servo SG90   |
+------------------+         +------------------+         | - L293D Driver VCC|
                                      |                   | - Relay 5V & Buzzer|
                                      v                   | - Module cảm biến |
                             +------------------+         +-------------------+
                             |   AMS1117-3.3    |                   |
                             | (Dòng tải max 1A)|                   v
                             +------------------+         +-------------------+
                                      |                   |  ESP32 NodeMCU    |
                                      +-----------------> | - 3.3V Logic Core |
                                                          | - Wi-Fi & BLE     |
                                                          | - GPIO Controller |
                                                          +-------------------+

2. Công nghệ và phần mềm sử dụng (Technology Stack)

  • Thiết kế phần cứng: KiCad EDA phiên bản 7.0 (Schematic Capture, PCB Layout 2 lớp, mô phỏng 3D Gerber).
  • Phát triển Firmware nhúng: Arduino IDE v2.1.0, C++17, ESP32 Board Core package v2.0.11, thư viện BluetoothSerial.h, WiFi.h, WebServer.h, ESP32Servo.h (v0.4.2), DHT.h (v1.4.4).
  • Phát triển App di động: MIT App Inventor 2 (Cloud Platform), giao thức Bluetooth SPP (Serial Port Profile), baudrate $9600\text{ bps}$.
  • Giao diện Web nhúng: Ngôn ngữ HTML5, CSS3 tinh gọn, Vanilla JavaScript kết hợp phương thức bất đồng bộ fetch() / AJAX gửi dữ liệu RESTful HTTP GET.

3. Quy hoạch chân vi điều khiển ESP32 (Pinout Assignment)

Chân ESP32 (GPIO) Chức năng kết nối phần cứng Kiểu dữ liệu / Giao thức Ghi chú thiết kế
GPIO 16, 17 IN1, IN2 (Kênh động cơ trái - L293D) Digital Output / PWM Điều khiển chiều và tốc độ Motor A
GPIO 18, 19 IN3, IN4 (Kênh động cơ phải - L293D) Digital Output / PWM Điều khiển chiều và tốc độ Motor B
GPIO 13 Trigger chân cảm biến siêu âm HC-SR04 Digital Output (Xung 10µs) Tạo sóng siêu âm $40\text{ kHz}$
GPIO 14 Echo chân cảm biến siêu âm HC-SR04 Digital Input (Đo độ rộng xung) Có cầu phân áp bảo vệ $5\text{V} \rightarrow 3.3\text{V}$
GPIO 27 Cảm biến nhiệt độ & độ ẩm DHT11 1-Wire Digital Bidirectional Kèm điện trở kéo lên (Pull-up $4.7\text{ k}\Omega$)
GPIO 25, 26 Cảm biến dò line hồng ngoại (Trái/Phải) Digital Input (LM393) Nhận diện vạch đen/trắng
GPIO 32, 33 Cảm biến lửa & Cảm biến ánh sáng Digital Input / Analog (ADC1) Đọc ngưỡng so sánh từ Op-Amp LM393
GPIO 4, 15, 2, 0 Điều khiển 4 động cơ Servo SG90 PWM Output (Tần số $50\text{ Hz}$) Điều khiển khớp cánh tay robot 4-DOF
GPIO 5, 21, 22, 23 Khối LED RGB WS2812 / 4 chân RGB Digital Output / PWM Hiển thị hiệu ứng màu sắc
GPIO 12 Điều khiển Relay qua MOSFET SI2302 Digital Output Đóng/ngắt thiết bị tải ngoài
GPIO 34, 35 Tín hiệu xung kênh A/B Encoder Digital Input (Chỉ nhận Input) Đọc phản hồi vận tốc cơ khí

Phương pháp nghiên cứu và quản lý dự án (Methodology)

Dự án áp dụng mô hình phát triển Agile kết hợp mô hình chữ V (V-Model) trong kỹ thuật phần cứng và phần mềm nhúng:

[Phân tích yêu cầu] -----------------------------> [Kiểm thử tích hợp & UAT]
         \                                                 /
    [Thiết kế sơ đồ nguyên lý] ------------> [Kiểm thử bo mạch & Đo kiểm]
             \                                         /
        [Layout PCB & Thi công] --------> [Kiểm tra ngắn mạch/Hạ áp]
                 \                                 /
              [Lập trình Firmware & App] ---------+
  • Giai đoạn 1 (Tuần 1–4): Nghiên cứu lý thuyết, tính toán dòng tải, mô phỏng mạch nguyên lý trên KiCad 7.0.
  • Giai đoạn 2 (Tuần 5–8): Thiết kế Layout PCB 2 lớp, xuất file Gerber, gia công mạch in FR-4 độ dày đồng $1\text{ oz}$, hàn linh kiện dán SMD (kích thước 0603, 1206, SOT-23, SMA).
  • Giai đoạn 3 (Tuần 9–14): Lập trình Firmware C++ trên Arduino IDE, phát triển ứng dụng MIT App Inventor và Web Server, tích hợp cảm biến và cơ cấu chấp hành.
  • Giai đoạn 4 (Tuần 15–18): Chế tạo khung cơ khí cho 3 mô hình (Xe nhôm A30, khung mica Smart Home, khung nhôm cánh tay 4-DOF), chạy thử nghiệm thực địa và hiệu chỉnh lỗi.

Implementation và kết quả

Development Process

1. Thuật toán điều khiển Xe robot tự hành tránh vật cản & dò line

Hệ thống xử lý thời gian thực kết hợp giữa đọc cảm biến siêu âm HC-SR04 theo nguyên lý thời gian bay (Time-of-Flight) và quét trạng thái 2 cảm biến hồng ngoại:

$$d = \frac{v_{\text{sound}} \times t}{2} = \frac{34300\text{ cm/s} \times t_{\text{pulse}}}{2 \times 10^6} \approx \frac{t_{\text{pulse}}\text{ (µs)}}{58.2}$$

#include "BluetoothSerial.h"
#include <ESP32Servo.h>

BluetoothSerial SerialBT;

// Định nghĩa chân L293D
const int IN1 = 16, IN2 = 17, IN3 = 18, IN4 = 19;
// Định nghĩa chân cảm biến siêu âm
const int TRIG_PIN = 13, ECHO_PIN = 14;
// Định nghĩa cảm biến dò line
const int LINE_LEFT = 25, LINE_RIGHT = 26;

long readUltrasonicDistance() {
  digitalWrite(TRIG_PIN, LOW);
  delayMicroseconds(2);
  digitalWrite(TRIG_PIN, HIGH);
  delayMicroseconds(10);
  digitalWrite(TRIG_PIN, LOW);
  
  long duration = pulseIn(ECHO_PIN, HIGH, 30000); // Timeout 30ms (~5m)
  if (duration == 0) return 999; // Không có vật cản gần
  return duration / 58.2;        // Trả về khoảng cách theo cm
}

void setMotorSpeed(int leftFwd, int leftRev, int rightFwd, int rightRev) {
  analogWrite(IN1, leftFwd);
  analogWrite(IN2, leftRev);
  analogWrite(IN3, rightFwd);
  analogWrite(IN4, rightRev);
}

void autoNavigateLogic() {
  long distance = readUltrasonicDistance();
  int leftLine = digitalRead(LINE_LEFT);
  int rightLine = digitalRead(LINE_RIGHT);

  // Xử lý an toàn vật cản ưu tiên hàng đầu
  if (distance < 15 && distance > 0) {
    setMotorSpeed(0, 0, 0, 0); // Dừng khẩn cấp
    delay(100);
    setMotorSpeed(0, 180, 0, 180); // Lùi xe
    delay(250);
    setMotorSpeed(180, 0, 0, 180); // Quay phải tránh vật cản
    delay(200);
    return;
  }

  // Thuật toán bám vạch (Line Tracking)
  if (leftLine == LOW && rightLine == LOW) {
    setMotorSpeed(200, 0, 200, 0); // Chạy thẳng
  } else if (leftLine == HIGH && rightLine == LOW) {
    setMotorSpeed(0, 0, 200, 0);   // Rẽ trái
  } else if (leftLine == LOW && rightLine == HIGH) {
    setMotorSpeed(200, 0, 0, 0);   // Rẽ phải
  } else {
    setMotorSpeed(0, 0, 0, 0);     // Dừng nếu lệch khỏi làn
  }
}

2. Kiến trúc Web Server điều khiển Cánh tay Robot 4-DOF (SoftAP Mode)

ESP32 tự phát mạng Wi-Fi riêng SSID: "ESP32_ROBOT_ARM" với chuẩn bảo mật WPA2, chạy một HTTP Server tại địa chỉ IP tĩnh mặc định 192.168.4.1:

#include <WiFi.h>
#include <WebServer.h>
#include <ESP32Servo.h>

WebServer server(80);
Servo servoBase, servoShoulder, servoElbow, servoGripper;

const char* htmlPage = R"rawliteral(
<!DOCTYPE html><html><head><meta name="viewport" content="width=device-width, initial-scale=1">
<title>ESP32 4-DOF Arm Controller</title>
<style>
  body { font-family: Arial; text-align: center; margin:0px auto; padding-top: 20px; background-color: #f4f4f9;}
  .slider { width: 80%; height: 20px; margin: 15px; }
  .card { background: white; padding: 20px; border-radius: 8px; box-shadow: 0 2px 4px rgba(0,0,0,0.1); width: 90%; max-width: 400px; margin: auto; }
</style></head><body>
<div class="card">
  <h2>STEM Robot Arm 4-DOF</h2>
  <p>Base: <input type="range" min="0" max="180" value="90" class="slider" id="s1" onchange="sendPos(1, this.value)"></p>
  <p>Shoulder: <input type="range" min="0" max="180" value="90" class="slider" id="s2" onchange="sendPos(2, this.value)"></p>
  <p>Elbow: <input type="range" min="0" max="180" value="90" class="slider" id="s3" onchange="sendPos(3, this.value)"></p>
  <p>Gripper: <input type="range" min="0" max="180" value="90" class="slider" id="s4" onchange="sendPos(4, this.value)"></p>
</div>
<script>
function sendPos(servoId, angle) {
  fetch(`/setServo?id=${servoId}&val=${angle}`);
}
</script></body></html>)rawliteral";

void handleRoot() {
  server.send(200, "text/html", htmlPage);
}

void handleSetServo() {
  if (server.hasArg("id") && server.hasArg("val")) {
    int id = server.arg("id").toInt();
    int val = server.arg("val").toInt();
    switch (id) {
      case 1: servoBase.write(val); break;
      case 2: servoShoulder.write(val); break;
      case 3: servoElbow.write(val); break;
      case 4: servoGripper.write(val); break;
    }
    server.send(200, "text/plain", "OK");
  } else {
    server.send(400, "text/plain", "Bad Request");
  }
}

void setup() {
  WiFi.softAP("ESP32_ROBOT_ARM", "stem123456");
  servoBase.attach(4);
  servoShoulder.attach(15);
  servoElbow.attach(2);
  servoGripper.attach(0);
  
  server.on("/", handleRoot);
  server.on("/setServo", handleSetServo);
  server.begin();
}

void loop() {
  server.handleClient();
}

Testing và Validation

Hệ thống đã trải qua quá trình đo kiểm thực nghiệm nghiêm ngặt về độ chính xác cảm biến, tính ổn định của nguồn điện và độ trễ kết nối không dây.

1. Đo kiểm độ chính xác cảm biến siêu âm HC-SR04

Điều kiện thử nghiệm: Vật cản mặt phẳng gỗ phẳng vuông góc $90^\circ$, nhiệt độ môi trường $28^\circ\text{C}$.

Khoảng cách thực tế (cm) Khoảng cách đo được (cm) Sai số tuyệt đối (cm) Tỷ lệ sai số (%)
5.0 5.1 +0.1 2.0%
10.0 10.1 +0.1 1.0%
20.0 20.2 +0.2 1.0%
30.0 30.4 +0.4 1.3%
50.0 49.6 -0.4 0.8%
100.0 101.2 +1.2 1.2%

Đánh giá: Sai số trung bình đo khoảng cách đạt $\pm 1.22%$, hoàn toàn đáp ứng độ nhạy kích hoạt phản xạ tránh vật cản của xe robot ở ngưỡng an toàn $15\text{ cm}$.

2. Đo kiểm độ chính xác cảm biến nhiệt ẩm DHT11

So sánh với nhiệt ẩm kế chuẩn phòng thí nghiệm (Fluke 971):

  • Nhiệt độ: Dải đo thử nghiệm $24.0^\circ\text{C} - 38.0^\circ\text{C}$, sai số trung bình $\pm 0.8^\circ\text{C}$ (trong phạm vi cho phép của nhà sản xuất $\pm 2.0^\circ\text{C}$).
  • Độ ẩm: Dải đo thử nghiệm $50% - 85%\text{ RH}$, sai số trung bình $\pm 3.4%\text{ RH}$ (trong phạm vi cho phép $\pm 5%\text{ RH}$).

3. Độ trễ truyền thông không dây và tính ổn định nguồn

+-------------------------------------------------------------------------------+
|                      KẾT QUẢ ĐO KIỂM HIỆU NĂNG HỆ THỐNG                       |
+-------------------------------------------------------------------------------+
| Độ trễ phản hồi lệnh qua Bluetooth SPP (App -> Xe):        32.4 ms            |
| Độ trễ điều khiển thanh trượt qua Web Server Wi-Fi:        48.6 ms            |
| Độ sụt áp nguồn 5V khi 4 Servo SG90 cùng quay:             4.88V (Đạt chuẩn)  |
| Độ gợn sóng điện áp (Ripple Voltage) tại đầu ra XL1509:    < 45 mVp-p         |
| Tỷ lệ mất gói tin Bluetooth trong bán kính 10m:            0.00%              |
+-------------------------------------------------------------------------------+

Kết quả đạt được

+-----------------------------------------------------------------------------+
|                          KẾT QUẢ TRIỂN KHAI THỰC TẾ                         |
+-----------------------------------------------------------------------------+
| [Mô hình 1: Xe Robot]       -> Dò line chuẩn xác 100%, tránh vật cản tức thì|
| [Mô hình 2: Smart Home]     -> Tự bật đèn khi trời tối, còi hú khi có lửa  |
| [Mô hình 3: Arm 4-DOF]      -> 4 khớp Servo xoay mượt mà qua Web Local      |
| [Độ tin cậy phần cứng]     -> Hoạt động liên tục 8 giờ không sụt áp/reset  |
+-----------------------------------------------------------------------------+
  1. Hoàn thiện mạch điều khiển STEM All-in-One: Chế tạo thành công bảng mạch in PCB 2 lớp kích thước tiêu chuẩn, tích hợp trọn vẹn vi điều khiển ESP32, bộ đôi hạ áp XL1509-5.0 và AMS1117-3.3, IC cầu H L293D, 1 kênh Relay, 4 ngõ ra Servo, 4 kênh LED RGB và các header cắm cảm biến chuẩn $2.54\text{ mm}$.
  2. Triển khai thành công 3 mô hình giáo dục:
    • Mô hình Xe thông minh: Điều khiển linh hoạt tiến/lùi/rẽ qua App MIT App Inventor, tự động chuyển chế độ dò đường bám vạch và tự tránh va chạm.
    • Mô hình Nhà thông minh: Thu thập liên tục dữ liệu nhiệt ẩm gửi lên màn hình App di động; kích hoạt chuông báo động Buzzer $93\text{ dB}$ khi phát hiện ngọn lửa (bước sóng hồng ngoại $760 - 1100\text{ nm}$); tự động bật đèn chiếu sáng khi cảm biến quang LM393 phát hiện trời tối.
    • Mô hình Cánh tay Robot 4 bậc: Cho phép điều khiển góc quay $0^\circ - 180^\circ$ của 4 khớp động cơ thông qua trình duyệt Web bất kỳ (smartphone, tablet, laptop) mà không cần cài đặt thêm phần mềm phụ trợ.

Đổi mới và đóng góp

Các cải tiến kỹ thuật nổi bật

  1. Kiến trúc nguồn lai (Hybrid Power Architecture) chống sốc tải: Việc kết hợp cuộn cảm dán $68\mu\text{H}/3\text{A}$, Diode Schottky SS54F (thời gian phục hồi siêu nhanh, sụt áp thuận thấp $0.55\text{ V}$) và dàn tụ lọc nhôm SMD ($470\mu\text{F}/35\text{V} + 220\mu\text{F}/16\text{V}$) đã triệt tiêu hoàn toàn hiện tượng sụt áp tức thời do dòng khởi động của động cơ DC và Servo gây ra.
  2. Khả năng điều khiển độc lập không phụ thuộc Internet: Thay vì dựa vào các nền tảng đám mây (Cloud IoT) bên thứ ba thường có độ trễ lớn và đòi hỏi kết nối mạng Internet ổn định (vốn là điểm yếu tại nhiều phòng học trường phổ thông), đề tài đã khai thác triệt để chế độ ESP32 SoftAP Web ServerBluetooth SPP point-to-point. Điều này mang lại độ trễ phản hồi cực thấp ($< 50\text{ ms}$) và hoạt động 100% độc lập ở mọi môi trường.
  3. Tính module hóa và tái sử dụng cao (Plug-and-Play): Một bo mạch duy nhất có thể hoán đổi và cắm nối linh hoạt để phục vụ giảng dạy từ bài học cơ bản (nhấp nháy LED, đọc cảm biến analog/digital) đến nâng cao (robotics, truyền thông không dây, lập trình Web nhúng).
TỔNG HỢP SO SÁNH CHỈ SỐ CẢI TIẾN VỚI GIẢI PHÁP TRUYỀN THỐNG:
- Chi phí chế tạo phần cứng:              GIẢM 65% so với bộ kit Arduino + Shield rời
- Không gian lắp ráp và dây cắm:         GIẢM 75% số lượng dây nối rời (chống lỏng chân)
- Khả năng xử lý tác vụ đa luồng:        TĂNG 15 LẦN (ESP32 240MHz Dual-Core vs Uno 16MHz)
- Tốc độ triển khai bài thực hành:       RÚT NGẮN 50% thời gian chuẩn bị lớp học

Ứng dụng thực tế và triển khai

Kịch bản ứng dụng thực tế

  • Trường Trung học Cơ sở & Phổ thông: Giảng dạy chuyên đề STEM Robotics, lập trình kéo thả giao diện trực quan thông qua MIT App Inventor 2 kết nối Bluetooth với mạch.
  • Trường Cao đẳng & Đại học Kỹ thuật: Thực hành các môn học "Lập trình vi điều khiển nâng cao", "Hệ thống nhúng", "Kỹ thuật vi xử lý", "Cơ điện tử ứng dụng".
  • Các trung tâm Maker/Robotics: Làm nền tảng phát triển (Development Kit) cho các cuộc thi sáng tạo khoa học kỹ thuật (VEX, Robocon cấp trường, thi ý tưởng sáng tạo thanh thiếu niên).
                      LỘ TRÌNH TRIỂN KHAI VÀ THƯƠNG MẠI HÓA
Q3/2023                   Q4/2023                   Q1/2024                   Q2/2024
  |                         |                         |                         |
  v                         v                         v                         v
[Đo kiểm Lab] -------> [Thử nghiệm lớp STEM] ----> [Tối ưu hóa PCB v2] ---> [Sản xuất hàng loạt]
(HCMUTE Lab 3D)        (Áp dụng 2 trường THPT)     (Tích hợp USB Type-C)     (Thương mại hóa)

Phân tích chi phí - lợi ích (Cost-Benefit Analysis)

  • Chi phí linh kiện sản xuất một bo mạch hoàn thiện: ~280.000 VNĐ.
  • Chi phí trọn bộ kit kèm 3 khung mô hình cơ khí: ~750.000 VNĐ.
  • Hiệu quả đầu tư: Với mức kinh phí trang bị một phòng học STEM 20 bộ kit truyền thống (~160 triệu VNĐ với Lego), việc chuyển sang ứng dụng kit ESP32 chỉ tiêu tốn ~15 triệu VNĐ, tiết kiệm đến 90.6% ngân sách đầu tư ban đầu cho các cơ sở giáo dục.

Hạn chế và hướng phát triển

Hạn chế kỹ thuật hiện tại

  1. Số lượng ngoại vi bị giới hạn: Do sử dụng kit ESP32 30 chân, số lượng chân GPIO dùng đồng thời cho tất cả các mô hình lớn vẫn bị giới hạn, chưa thể tích hợp thêm màn hình hiển thị LCD/OLED trực tiếp trên board mạch chính.
  2. Phương pháp điều khiển vận tốc: Mạch cầu H L293D hiện đang điều khiển động cơ DC ở dạng vòng hở (Open-loop control), chưa áp dụng thuật toán điều khiển tốc độ vòng kín PID do giới hạn thời gian tích hợp bộ đọc xung Encoder.
  3. Môi trường ứng dụng di động: App điều khiển hiện mới hỗ trợ nền tảng Android qua file cài đặt .apk, chưa có phiên bản chạy trực tiếp trên iOS.

Hướng phát triển trong tương lai

  • Nâng cấp phần cứng Version 2.0: Chuyển đổi vi điều khiển sang ESP32-S3 (tích hợp giao tiếp USB gốc, hỗ trợ tập lệnh tăng tốc xử lý AI/Neural Network), bổ sung IC mở rộng cổng I2C (PCF8574) và chip điều khiển PWM 16 kênh (PCA9685).
  • Phát triển thư viện khối kéo thả chuyên dụng: Tích hợp trực tiếp board mạch vào các nền tảng lập trình khối như Scratch 3.0 / Blockly để tối ưu cho học sinh lứa tuổi 8–12.
  • Tích hợp thuật toán điều khiển hiện đại: Xây dựng hệ thống điều khiển bám làn đường nâng cao sử dụng thuật toán PID kết hợp đọc phản hồi từ Encoder quang học 20 xung.

Đối tượng hưởng lợi

+--------------------------------------------------------------------------------+
|                        CÁC NHÓM ĐỐI TƯỢNG HƯỞNG LỢI                            |
+--------------------------------------------------------------------------------+
| [Học sinh / Sinh viên] -> Học lập trình trực quan, tiếp cận kiến trúc 32-bit   |
| [Giảng viên / Nhà trường]-> Bộ giáo trình chuẩn, tiết kiệm 90% chi phí đầu tư  |
| [Kỹ sư / Lập trình viên]-> Code mẫu chuẩn C++ nhúng, layout PCB chuẩn công nghiệp|
| [Cộng đồng DIY Maker]  -> Thiết kế mã nguồn mở, dễ dàng tùy biến mô hình       |
+--------------------------------------------------------------------------------+
  • Học sinh và Sinh viên: Tiếp cận sớm với tư duy thuật toán, cấu trúc phần cứng điện tử thực tế, nắm vững nguyên lý hoạt động của các loại cảm biến công nghiệp và cơ chế điều khiển không dây hiện đại.
  • Giảng viên và Cơ sở đào tạo: Sở hữu một bộ công cụ thực hành chuẩn hóa, trực quan, có thể biên soạn thành giáo trình từ mức độ vỡ lòng đến chuyên sâu với mức chi phí đầu tư thiết bị tối thiểu.
  • Nhà phát triển và Kỹ sư nhúng: Tham khảo được kiến trúc thiết kế nguồn chống nhiễu cho vi điều khiển kết hợp động cơ công suất trên PCB 2 lớp và mô hình kiến trúc Web Server nhúng tối ưu bộ nhớ.

Câu hỏi thường gặp

1. Yêu cầu kỹ thuật về nguồn điện để mạch hoạt động an toàn là gì?

Mạch yêu cầu cấp nguồn qua Jack DC $5.5\times 2.1\text{ mm}$ với dải điện áp đầu vào từ $7\text{V}$ đến $12\text{V DC}$ (khuyên dùng nguồn Adapter $9\text{V}/2\text{A}$ hoặc bộ 2 cell pin Li-ion 18650 mắc nối tiếp $7.4\text{V} - 8.4\text{V}$). Không cấp nguồn vượt quá $15\text{V}$ để tránh gây quá nhiệt cho IC hạ áp XL1509.

2. Mạch có bị hiện tượng xung nhiễu điện từ khi động cơ DC đảo chiều không?

Không. Thiết kế phần cứng đã tích hợp đầy đủ Diode xả dòng cảm ứng ngược bên trong IC L293D, kết hợp với các tụ gốm dán $100\text{ nF}$ dập tia lửa điện mắc song song hai cực động cơ và tụ hóa lọc nguồn $470\mu\text{F}$, đảm bảo điện áp cấp cho ESP32 luôn phẳng và ổn định.

3. Có thể nạp code cho bo mạch thông qua phần mềm nào?

Người dùng có thể nạp chương trình trực tiếp thông qua cổng Micro-USB trên module ESP32 NodeMCU bằng phần mềm Arduino IDE (hỗ trợ C/C++), PlatformIO (trên VS Code) hoặc nạp firmware MicroPython tùy thuộc vào nhu cầu giảng dạy.

4. Cách xử lý khi không kết nối được với Web Server của cánh tay robot?

Đảm bảo điện thoại hoặc máy tính đã kết nối thành công vào mạng Wi-Fi ESP32_ROBOT_ARM (mật khẩu mặc định: stem123456). Sau khi kết nối, mở trình duyệt web và nhập chính xác địa chỉ IP 192.168.4.1. Nếu không tải được trang, nhấn nút EN (Reset) trên module ESP32 để khởi động lại máy chủ Web nội bộ.

5. Chi phí gia công và thời gian hoàn thiện một hệ thống là bao lâu?

Chi phí gia công bảng mạch PCB (combo 5 mạch) tại các xưởng in mạch đạt khoảng 120.000 VNĐ. Thời gian hàn linh kiện và lắp ráp hoàn chỉnh một bo mạch mất khoảng 30–45 phút đối với kỹ thuật viên lành nghề.


Kết luận

Đề tài "Thiết kế và lập trình nhúng cho mạch điện tử để ứng dụng cho giáo dục STEM" của nhóm nghiên cứu Trường Đại học Sư phạm Kỹ thuật TP.HCM đã giải quyết trọn vẹn bài toán tích hợp giữa phần cứng mạch in chuyên dụng và phần mềm nhúng đa nền tảng phục vụ giáo dục hiện đại. Bằng việc tận dụng sức mạnh tính toán và khả năng kết nối không dây kép của ESP32, dự án đã hiện thực hóa thành công một hệ sinh thái học tập STEM toàn diện với 3 mô hình tiêu biểu: Xe robot tự hành, Nhà thông minh và Cánh tay robot 4 bậc tự do.

Nghiên cứu không chỉ mang lại giá trị học thuật sâu sắc về mặt thiết kế mạch vi điện tử và lập trình hệ thống thời gian thực mà còn mở ra tiềm năng thương mại hóa to lớn, giúp thu hẹp khoảng cách tiếp cận công nghệ cao cho học sinh, sinh viên trên cả nước với chi phí tối ưu nhất.