Bối cảnh và vấn đề nghiên cứu

Trong xu thế phát triển của khoa học và công nghệ tự động hóa, robot ngày càng đóng vai trò quan trọng trong việc thay thế con người thực hiện các tác vụ lặp đi lặp lại hoặc hoạt động trong các môi trường nguy hiểm, độc hại, không gian chật hẹp hay đáy biển. Tuy nhiên, các cánh tay robot công nghiệp truyền thống thường bị giới hạn về không gian làm việc do phụ thuộc vào số bậc tự do và vị trí cố định. Ngược lại, robot di động (Mobile Robot) sở hữu tính linh hoạt cao, có thể di chuyển và thu thập thông tin từ xa. Cùng với sự phổ cập của hạ tầng mạng không dây Wi-Fi, việc tích hợp kết nối mạng không dây vào các hệ thống nhúng điều khiển robot từ xa qua thiết bị di động hay máy tính mang lại giải pháp giám sát trực quan và chi phí thấp.

Đồ án "Robot giám sát điều khiển bằng wifi ứng dụng ngành y tế" do sinh viên Huỳnh Phú Đông thực hiện dưới sự hướng dẫn của ThS. Trần Hữu Tính tại Khoa Điện – Điện tử – Viễn thông, Trường Đại học Kỹ thuật – Công nghệ Cần Thơ (tháng 11/2023), tập trung nghiên cứu giải pháp điều khiển robot di động tích hợp camera thông qua sóng Wi-Fi nhằm phục vụ nhu cầu giám sát an ninh, hỗ trợ môi trường y tế hoặc theo dõi từ xa.

Nhiệm vụ và mục tiêu nghiên cứu của đề tài gồm các bước:

  1. Nghiên cứu phương thức truyền thông không dây qua sóng Wi-Fi nhằm kết nối giữa thiết bị điều khiển (điện thoại thông minh/máy tính) và robot.
  2. Thiết kế, lựa chọn và kết nối khối phần cứng gồm vi điều khiển ESP32-CAM, mạch điều khiển động cơ L298N, động cơ DC và hệ thống nguồn.
  3. Xây dựng giao diện web thân thiện trên nền tảng trình duyệt để hiển thị hình ảnh truyền về từ camera theo thời gian thực và gửi lệnh điều hướng di chuyển.

Đối tượng nghiên cứu của đồ án là mô hình xe robot di động 4 bánh dẫn động tích hợp camera thu nhỏ. Phạm vi nghiên cứu tập trung vào việc thử nghiệm truyền nhận tín hiệu điều khiển và truyền luồng video trong mạng không dây cục bộ.

Cơ sở lý thuyết và phương pháp thiết kế

1. Khung lý thuyết và công nghệ nền tảng

Tác giả hệ thống hóa các khái niệm và cơ sở phân loại trong lĩnh vực robot học:

  • Phân loại robot theo kết cấu: Robot tọa độ Đề-các, robot kiểu trụ, robot kiểu cầu, robot SCARA, robot kiểu tay người và các dạng đặc thù khác.
  • Phân loại theo phương pháp điều khiển:
    • Điều khiển hở: Sử dụng động cơ bước hoặc truyền động mà độ dịch chuyển tỷ lệ với số xung cấp, cấu trúc đơn giản nhưng độ chính xác thấp.
    • Điều khiển kín (Servo): Sử dụng tín hiệu phản hồi vị trí; chia thành điều khiển điểm – điểm (point-to-point) cho các ứng dụng hàn điểm, gắp đặt và điều khiển theo biên dạng (contour) cho các ứng dụng phun sơn, hàn hồ quang liên tục.
  • Nền tảng vi điều khiển IoT: Sử dụng vi điều khiển tích hợp ESP32 hỗ trợ Wi-Fi chuẩn 802.11 b/g/n, Bluetooth BLE, tích hợp hệ điều hành thời gian thực FreeRTOS và ngăn xếp mạng LwIP.

2. Phương pháp nghiên cứu thực tế

Đề tài áp dụng phương pháp thiết kế kỹ thuật kết hợp thực nghiệm:

  • Thiết kế phần cứng: Lựa chọn linh kiện dựa trên các thông số kỹ thuật điện áp, dòng tiêu thụ và khả năng tương thích logic giữa vi điều khiển ESP32-CAM và mạch công suất L298N.
  • Lập trình hệ thống nhúng: Sử dụng ngôn ngữ C/C++ trên môi trường Arduino IDE để cấu hình giao tiếp ngoại vi (UART, PWM, GPIO), khởi tạo máy chủ web bất đồng bộ (AsyncWebServer) và xử lý luồng dữ liệu hai chiều thông qua WebSocket.
  • Phương pháp đo đạc, thử nghiệm thực địa: Đánh giá độ ổn định của luồng video và tín hiệu điều khiển theo các mốc thời gian (10 đến 15 phút mỗi phiên) và kiểm tra cự ly truyền nhận tối đa.

Thiết kế và triển khai

Hệ thống được tổ chức thành các khối chức năng liên kết chặt chẽ với nhau:

[ Giao diện Web Client ] <---(Sóng Wi-Fi / WebSocket)---> [ Khối xử lý trung tâm: ESP32-CAM ]
                                                                     |
                                                          +----------+----------+
                                                          |                     |
                                                    [ Camera OV2640 ]   [ Mạch cầu H L298N ]
                                                                                |
                                                                        [ 4 Động cơ DC ]

1. Thông số kỹ thuật của các linh kiện phần cứng

Thành phần Linh kiện / Model Thông số kỹ thuật chính trong văn bản
Vi điều khiển & Camera AI-Thinker ESP32-CAM CPU 32-bit xung nhịp tối đa 160 MHz (600 DMIPS), 520 KB SRAM, 4 MB PSRAM ngoài; Dải tần Wi-Fi 2412 – 2484 MHz; Kích thước 40 x 27 x 12 mm; Dòng nghỉ 6 mA; Cảm biến Camera OV2640.
Bo nạp chương trình Arduino Uno R3 Vi điều khiển ATmega328P (8-bit, 16 MHz), Flash 32 KB, SRAM 2 KB, EEPROM 1 KB; 14 chân Digital I/O (6 chân PWM), 6 chân Analog; Điện áp khuyên dùng 7–12V DC.
Mạch công suất Driver L298N Mạch cầu H kép, điều khiển tối đa 2 động cơ độc lập hoặc 4 động cơ theo cặp; Điện áp hoạt động +5V ~ +12V (tối đa 35V); Dòng đỉnh 2A mỗi cầu; Công suất tiêu tán 20W (ở 75°C); Tích hợp IC ổn áp 78M05.
Động cơ chấp hành Động cơ DC giảm tốc (x4) Điện áp hoạt động 3 – 6V DC; Dòng điện tiêu thụ 110 – 140 mA; Tỉ số truyền 1:48; Tốc độ 125 vòng/phút (tại 3V) và 208 vòng/phút (tại 6V); Momen xoắn 0.8 kg.cm.
Nguồn cấp Pin 18650 UltraFire Dung lượng 4200 mAh, kích thước 18 x 65 mm, kết hợp khối nguồn pin bổ trợ.

2. Sơ đồ kết nối chân tín hiệu (Pinout)

Do ESP32-CAM không tích hợp sẵn cổng nạp USB, tác giả sử dụng bo mạch Arduino Uno làm cầu chuyển đổi tiếp nối UART (nối chéo chân Tx-Rx) để nạp firmware với tốc độ truyền 115200 baud. Trong quá trình nạp mã nguồn, chân GPIO0 phải được kéo xuống mức thấp (nối đất GND) và ngắt kết nối sau khi nạp xong để khởi động chế độ thực thi bình thường.

Bảng ánh xạ các chân GPIO của ESP32-CAM với các khối ngoại vi:

Tên chân ESP32-CAM Chân kết nối ngoại vi Chức năng chi tiết trong mã nguồn
GPIO12 ENA & ENB (L298N) Điều chế độ rộng xung (PWM) điều khiển tốc độ chung cho 2 kênh động cơ
GPIO13 IN1 (L298N) Điều khiển chiều quay động cơ bên phải
GPIO15 IN2 (L298N) Điều khiển chiều quay động cơ bên phải
GPIO14 IN3 (L298N) Điều khiển chiều quay động cơ bên trái
GPIO2 IN4 (L298N) Điều khiển chiều quay động cơ bên trái
GPIO4 Đèn Flash LED Điều khiển bật/tắt hoặc điều chỉnh độ sáng đèn chiếu sáng ban đêm
GPIO33 Đèn LED đỏ trên bo Báo trạng thái hoạt động (kích hoạt ở mức logic thấp - LOW)
GPIO26 / GPIO27 SDA / SCL (SIOD / SIOC) Giao tiếp SCCB cấu hình cảm biến ảnh OV2640
GPIO5, 18, 19, 21, 36, 39, 34, 35 D0 – D7 (Y2 – Y9) 8 đường dữ liệu hình ảnh song song từ cảm biến OV2640
GPIO0, 22, 25, 23, 32 XCLK, PCLK, VSYNC, HREF, PWDN Các đường xung nhịp và đồng bộ khung hình camera

3. Nguyên lý lập trình và giao thức điều khiển

Hệ thống hoạt động như một điểm truy cập không dây độc lập (Access Point) phát SSID MyWiFiCar với mật khẩu mặc định 12345678.

  • Giao thức truyền thông: Vi điều khiển khởi tạo AsyncWebServer trên cổng mạng 80. Khi người dùng truy cập địa chỉ IP của thiết bị, server phản hồi giao diện HTML/CSS/JavaScript lưu trữ trực tiếp trong bộ nhớ Flash (PROGMEM).
  • Kênh WebSocket điều khiển (/CarInput): Nhận các chuỗi ký tự dạng cặp giá trị Key,Value từ trình duyệt:
    • Lệnh di chuyển MoveCar: Giá trị 1 (Tiến), 2 (Lùi), 3 (Rẽ trái), 4 (Rẽ phải), 0 (Dừng lại).
    • Điều chỉnh tốc độ Speed: Điều khiển thanh trượt từ 0 đến 255, ánh xạ tới kênh PWM tần số 1000 Hz, độ phân giải 8-bit (PWMSpeedChannel = 2).
    • Điều chỉnh độ sáng đèn Light: Điều khiển mức sáng đèn LED flash từ 0 đến 255 (PWMLightChannel = 3).
  • Kênh WebSocket hình ảnh (/Camera): Thiết lập luồng gửi dữ liệu nhị phân (Binary Blob) định dạng JPEG với kích thước khung hình VGA (FRAMESIZE_VGA), tần số xung nhịp XCLK 20 MHz và hệ số nén ảnh jpeg_quality = 10.

Bảng logic điều khiển chiều quay động cơ qua mạch cầu H L298N:

Trạng thái robot Giá trị lệnh Động cơ phải (IN1 - IN2) Động cơ trái (IN3 - IN4) Chiều quay thực tế
Dừng (STOP) 0 LOW - LOW LOW - LOW Cả hai động cơ ngắt lực
Tiến (FORWARD) 1 HIGH - LOW HIGH - LOW Cả hai bánh quay thuận
Lùi (BACKWARD) 2 LOW - HIGH LOW - HIGH Cả hai bánh quay nghịch
Rẽ trái (LEFT) 3 HIGH - LOW LOW - HIGH Bánh phải quay thuận, bánh trái quay nghịch
Rẽ phải (RIGHT) 4 LOW - HIGH HIGH - LOW Bánh phải quay nghịch, bánh trái quay thuận

Nội dung chi tiết theo từng chương

Chương I: Tổng quan về đề tài

Chương này trình bày lịch sử hình thành, định nghĩa và vai trò của người máy trong sản xuất và đời sống. Tác giả phân loại robot dựa trên 3 tiêu chí: kết cấu hình học (Đề-các, trụ, cầu, SCARA, phỏng sinh học), phương pháp điều khiển (vòng hở và vòng kín/servo) và phạm vi ứng dụng. Đồng thời, chương 1 phân tích sự cần thiết của việc phát triển robot giám sát không dây sử dụng module tích hợp ESP32-CAM, chỉ ra các ưu điểm (sử dụng pin sạc, kích thước nhỏ gọn, giá thành thấp, vật liệu sẵn có) và nhược điểm (bị giới hạn cự ly kết nối, dễ suy hao sóng trong môi trường có nhiều vật cản).

Chương II: Phương pháp thiết kế robot giám sát điều khiển bằng wifi ứng dụng vào ngành y tế

Tập trung mô tả chi tiết thông số kỹ thuật và sơ đồ chân của từng linh kiện cấu thành:

  1. Module ESP32-CAM AI-Thinker: Cấu tạo chip ESP32-S, tập lệnh, khả năng quản lý bộ nhớ SRAM/PSRAM, các chế độ cấp nguồn 5V/3.3V, sơ đồ ghép nối chân tín hiệu máy ảnh OV2640 và giao tiếp thẻ micro SD.
  2. Arduino Uno R3: Đóng vai trò thiết bị nạp chương trình trung gian qua giao thức nối tiếp.
  3. Động cơ DC và Module Driver L298N: Cấu trúc IC cầu H L298, chức năng tản nhiệt, các chân điều khiển logic hướng quay (IN1 - IN4) và chân kích hoạt băm xung tốc độ (ENA, ENB).
  4. Môi trường phần mềm Arduino IDE: Vai trò biên dịch mã nguồn C/C++, nạp firmware và gỡ lỗi qua Serial Monitor.
  5. Cơ khí khung xe và khối nguồn: Kết cấu khung gầm 2 tầng bằng vật liệu tổng hợp, bố trí bánh dẫn động và bánh tự do, kết hợp nguồn pin sạc 18650 4200 mAh.

Chương III: Thiết kế xây dựng robot giám sát điều khiển bằng wifi ứng dụng vào ngành y tế

Chương 3 trình bày các bước ghép nối phần cứng và quy trình nạp code thực tế:

  • Kết nối ESP32-CAM với máy tính thông qua chân UART của mạch Arduino để nạp code điều khiển.
  • Cấu hình địa chỉ IP hiển thị trên màn hình Serial Monitor ở baudrate 115200.
  • Thiết lập sơ đồ khối truyền nhận tín hiệu giữa giao diện điều khiển (nút bấm điều hướng, thanh trượt tốc độ/đèn) qua sóng Wi-Fi tới module ESP32-CAM và chuyển đổi thành tín hiệu kích mức logic đưa vào driver L298N.
  • Quy trình vận hành: Kết nối Wi-Fi vào robot -> Mở trình duyệt web truy cập IP -> Nhấp các nút mũi tên hoặc thanh trượt để điều khiển robot di chuyển và giám sát video trực tiếp.
  • Đánh giá thực nghiệm: Thực hiện các bài test chức năng kéo dài 10–15 phút mỗi lần, tinh chỉnh thuật toán xử lý và kiểm tra cự ly kết nối cảm biến/sóng Wi-Fi.

Chương IV: Kết luận

Tổng hợp các kết quả kỹ thuật đạt được trong quá trình chế tạo mô hình, phân tích các điểm hạn chế còn tồn tại về phần cứng, phần mềm và đề xuất các định hướng nghiên cứu tiếp theo để nâng cấp hệ thống.

Kết quả thực nghiệm và đóng góp của đề tài

1. Kết quả kỹ thuật đạt được

  • Chế tạo thành công mô hình robot di động mini hoạt động ổn định, có khả năng di chuyển linh hoạt theo các hướng: Tiến, Lùi, Rẽ trái, Rẽ phải và Dừng lại theo đúng tín hiệu giải mã từ giao diện web.
  • Tích hợp thành công luồng video trực tiếp chuẩn JPEG kích thước VGA từ camera OV2640 lên máy chủ web nhúng mà không cần cài đặt thêm phần mềm chuyên dụng của bên thứ ba.
  • Kiểm soát tốc độ động cơ và độ sáng đèn LED flash thông qua cơ chế điều chế độ rộng xung PWM 8-bit trên nền tảng FreeRTOS của ESP32.
  • Xác định được phạm vi kết nối sóng Wi-Fi điều khiển và truyền dữ liệu chính xác, ổn định trong bán kính thực tế đạt 12 mét.
  • Thời gian vận hành và duy trì kiểm tra thực nghiệm cho mỗi phiên kiểm thử liên tục từ 10 đến 15 phút.

2. Đóng góp của đề tài

  • Hiện thực hóa một giải pháp phần cứng giám sát từ xa chi phí thấp bằng cách tối ưu hóa module ESP32-CAM đơn lẻ để đảm nhiệm đồng thời 3 vai trò: thu nhận hình ảnh, quản lý máy chủ web giao tiếp mạng không dây và điều khiển phần cứng công suất.
  • Cung cấp mã nguồn hoàn chỉnh về việc tích hợp giao tiếp WebSocket đa kênh bất đồng bộ trên ESP32 phục vụ điều khiển chuyển động và truyền hình ảnh đồng thời.

Hạn chế và hướng nghiên cứu tiếp theo

1. Hạn chế được ghi nhận

  • Hạn chế về phần cứng: Cự ly bắt sóng Wi-Fi bị giới hạn trong phạm vi ngắn (khoảng cách hiệu dụng trong thử nghiệm là 12 mét); khả năng duy trì kết nối suy giảm khi hoạt động trong môi trường có nhiều vật cản hoặc mật độ thiết bị dày đặc.
  • Hạn chế về phần mềm: Tồn tại độ trễ nhất định từ lúc người dùng thao tác trên giao diện web đến khi robot nhận và thực thi lệnh.
  • Khả năng xử lý hình ảnh: Hệ thống hiện tại mới chỉ dừng lại ở mức truyền phát luồng hình ảnh giám sát đơn mục tiêu cơ bản, chưa có thuật toán nhận diện và phân biệt tự động khi xuất hiện nhiều đối tượng/mục tiêu cùng lúc trong khung hình.

2. Hướng phát triển

  • Nâng cấp công suất phần cứng thu phát sóng vô tuyến để mở rộng cự ly nhận tín hiệu Wi-Fi.
  • Phát triển các thuật toán xử lý ảnh trên máy chủ hoặc vi xử lý nâng cao để phân biệt và bám bắt đa mục tiêu.
  • Tối ưu hóa mã nguồn điều khiển nhằm giảm thiểu độ trễ truyền dữ liệu qua giao thức mạng.

Giá trị tham khảo

Đồ án là tài liệu tham khảo thực nghiệm phù hợp cho sinh viên, học viên ngành Kỹ thuật Điện - Điện tử, Kỹ thuật Viễn thông, Công nghệ Thông tin và Tự động hóa. Báo cáo cung cấp tài liệu chi tiết ở các nội dung:

  • Phương pháp nạp code và sơ đồ ánh xạ chân GPIO cho module ESP32-CAM khi làm việc với camera OV2640 và thẻ nhớ.
  • Cách thức thiết lập Web Server và giao thức WebSocket bất đồng bộ trên vi điều khiển ESP32 bằng thư viện ESPAsyncWebServer.
  • Thiết kế mạch ghép nối công suất giữa vi điều khiển dòng điện nhỏ và driver cầu H L298N điều khiển động cơ DC.

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

1. Module ESP32-CAM được nạp mã nguồn bằng phương thức nào khi không có cổng USB tích hợp? Mã nguồn được nạp qua cổng giao tiếp nối tiếp UART (chân U0TXD - GPIO1 và U0RXD - GPIO3) bằng cách kết nối với bo mạch Arduino Uno R3 đóng vai trò là mạch chuyển đổi USB-to-UART. Trong quá trình nạp, chân GPIO0 phải được nối xuống GND để kích hoạt chế độ Flash và ngắt kết nối sau khi hoàn tất.

2. Giao thức mạng và cơ chế nào được dùng để truyền luồng hình ảnh và nhận lệnh điều khiển? Hệ thống sử dụng máy chủ web bất đồng bộ AsyncWebServer chạy trên cổng 80, kết hợp hai kênh kết nối WebSocket: đường dẫn /Camera truyền luồng dữ liệu nhị phân hình ảnh định dạng JPEG từ cảm biến OV2640 và đường dẫn /CarInput nhận chuỗi ký tự điều khiển di chuyển, tốc độ và đèn chiếu sáng từ giao diện người dùng.

3. Khả năng hoạt động thực tế của robot đạt cự ly và thời gian thử nghiệm là bao nhiêu? Trong các bài kiểm tra thực nghiệm ghi nhận trong báo cáo, robot hoạt động chính xác và ổn định với khoảng cách kết nối trong phạm vi 12 mét. Mỗi bài thử nghiệm hiệu năng kéo dài từ 10 đến 15 phút.

4. Chân GPIO nào trên ESP32-CAM được sử dụng để điều khiển tốc độ và hướng của động cơ qua mạch L298N? Chân GPIO12 được sử dụng làm tín hiệu PWM điều khiển tốc độ cấp cho chân ENA và ENB; chân GPIO13 và GPIO15 điều khiển hướng động cơ phải (IN1, IN2); chân GPIO14 và GPIO2 điều khiển hướng động cơ trái (IN3, IN4).

5. Vì sao việc sử dụng đèn Flash LED trên chân GPIO4 có thể ảnh hưởng đến giao tiếp thẻ nhớ MicroSD? Chân GPIO4 trên ESP32-CAM được thiết kế nối chung với đường dữ liệu Data1 của khe cắm thẻ MicroSD. Do đó, nếu sử dụng thẻ nhớ đồng thời, đèn flash có thể bị kích sáng ngoài ý muốn trừ khi được cấu hình không dùng GPIO4 cho đường truyền dữ liệu thẻ qua hàm SD_MMC.begin("/sdcard", true).

Kết luận

Đồ án của tác giả Huỳnh Phú Đông đã hoàn thành việc nghiên cứu, thiết kế và chế tạo thành công mô hình robot di động 4 bánh giám sát từ xa điều khiển qua mạng Wi-Fi sử dụng vi điều khiển ESP32-CAM và mạch công suất L298N. Hệ thống đã triển khai hoàn chỉnh giao diện web tương tác thời gian thực, cho phép truyền luồng hình ảnh video chất lượng VGA và điều hướng di chuyển chính xác trong bán kính 12 mét. Mặc dù còn hạn chế về cự ly kết nối và độ trễ tín hiệu, công trình đã cung cấp đầy đủ sơ sở lý thuyết, sơ đồ kết nối chân và mã nguồn hệ thống nhúng có giá trị thực tiễn cao cho các nghiên cứu ứng dụng IoT và robot di động.