Arduino điều khiển ô tô qua web
Hướng dẫn này chỉ cho bạn cách điều khiển một chiếc ô tô robot từ xa bằng Arduino từ trình duyệt web trên điện thoại thông minh hoặc máy tính của bạn qua WiFi. Việc điều khiển được quản lý thông qua một giao diện người dùng web đồ họa sử dụng công nghệ WebSocket, giúp ô tô vận hành mượt mà và linh hoạt.

Phần cứng cần chuẩn bị
| 1 | × | Arduino UNO R4 WiFi | ||
| 1 | × | Alternatively, DIYables STEM V4 IoT | ||
| 1 | × | (Tùy chọn) DIYables STEM V4 IoT | ||
| 1 | × | USB Cable Type-A to Type-C (for USB-A PC) | ||
| 1 | × | USB Cable Type-C to Type-C (for USB-C PC) | ||
| 1 | × | 2WD RC Car | ||
| 1 | × | L298N Motor Driver Module | ||
| 1 | × | IR Remote Controller Kit | ||
| 1 | × | CR2025 Battery (for IR Remote controller) | ||
| 1 | × | 1.5V AA Battery (for Arduino and Car) | ||
| 1 | × | dây jumper | ||
| 1 | × | breadboard | ||
| 1 | × | (Khuyến nghị) Screw Terminal Block Shield for Arduino UNO R4 | ||
| 1 | × | (Khuyến nghị) Breadboard Shield for Arduino UNO R4 | ||
| 1 | × | (Khuyến nghị) Enclosure for Arduino UNO R4 | ||
| 1 | × | (Khuyến nghị) Power Splitter for Arduino UNO R4 | ||
| 1 | × | (Khuyến nghị) Prototyping Base Plate & Breadboard Kit for Arduino UNO |
Or you can buy the following kits:
| 1 | × | DIYables STEM V4 IoT Starter Kit (Arduino included) | ||
| 1 | × | DIYables Sensor Kit (30 sensors/displays) | ||
| 1 | × | DIYables Sensor Kit (18 sensors/displays) |
Giới thiệu về Xe RC 2WD và WebSocket
Bây giờ, tại sao chọn WebSocket? Dưới đây là các lý do:
- Không có WebSocket, bạn sẽ phải tải lại trang mỗi khi muốn thay đổi hướng của xe. Điều này không hiệu quả!
- Với WebSocket, một kết nối đặc biệt được thiết lập giữa trang web và Arduino. Điều này cho phép bạn gửi các lệnh tới Arduino mà không cần tải lại trang. Kết quả? Xe robot phản hồi một cách mượt mà và ngay lập tức. Thật ấn tượng, phải không?
Tóm lại, WebSocket hỗ trợ điều khiển robot một cách mượt mà và theo thời gian thực.
Chúng tôi có các bài hướng dẫn cụ thể về ô tô điều khiển từ xa 2 bánh (2WD RC Car) và WebSocket. Mỗi bài hướng dẫn chứa thông tin chi tiết và hướng dẫn từng bước về sơ đồ chân phần cứng (pinout), nguyên lý hoạt động, cách kết nối dây với Arduino, mã Arduino... Tìm hiểu thêm về chúng tại các liên kết sau:
- Arduino - Ô tô hướng dẫn
- Arduino - WebSocket hướng dẫn
Cách hoạt động
Mã Arduino thiết lập cả máy chủ web và máy chủ WebSocket. Đây là cách nó hoạt động:
- Khi bạn nhập địa chỉ IP của Arduino vào trình duyệt web, nó sẽ gửi một yêu cầu cho trang web (Giao diện người dùng) từ Arduino.
- Máy chủ web của Arduino trả lời bằng cách cung cấp nội dung của trang web (HTML, CSS, JavaScript).
- Trình duyệt web của bạn sau đó hiển thị trang web này.
- Bên trong trang web, mã JavaScript khởi tạo một kết nối WebSocket với máy chủ WebSocket trên Arduino.
- Khi kết nối WebSocket này đã hoạt động, bất kỳ lần nhấn hoặc thả nút nào trên trang web sẽ khiến mã JavaScript gửi các lệnh tới Arduino qua kết nối này một cách kín đáo.
- Máy chủ WebSocket trên Arduino nhận các lệnh này và điều khiển xe robot tương ứng.
Dưới đây là một bảng hiển thị danh sách các lệnh mà trang web gửi tới Arduino dựa trên hành động của người dùng:
| User's Action | Button | Command | Car Action |
|---|---|---|---|
| PRESS | UP | 1 | MOVE FORWARD |
| PRESS | DOWN | 2 | MOVE BACKWARD |
| PRESS | LEFT | 4 | TURN LEFT |
| PRESS | RIGHT | 8 | TURN RIGHT |
| PRESS | STOP | 0 | STOP |
| RELEASE | UP | 0 | STOP |
| RELEASE | DOWN | 0 | STOP |
| RELEASE | LEFT | 0 | STOP |
| RELEASE | RIGHT | 0 | STOP |
| RELEASE | STOP | 0 | STOP |
Sơ đồ đấu dây giữa xe RC hai bánh dẫn động và Arduino

This image is created using Fritzing. Click to enlarge image
Thông thường, bạn sẽ cần hai nguồn cấp điện riêng biệt:
- Một cái dành cho động cơ.
- Cái khác dành cho cả bảng Arduino và mô-đun L298N (đóng vai trò là bộ điều khiển động cơ).
Tuy nhiên, bạn có thể đơn giản hóa thiết lập này bằng cách chỉ sử dụng một nguồn điện – bốn viên pin 1,5V để tạo tổng điện áp 6V. Đây là cách làm:
- Kết nối nguồn từ pin cho module L298N theo chỉ dẫn.
- Loại bỏ hai jumper khỏi các chân ENA và ENB để ngắt kết nối chúng với 5V trên module L298N.
- Chèn một jumper được dán nhãn 5VEN (được chỉ ra bằng vòng tròn vàng trên sơ đồ).
- Kết nối chân 12V trên module L298N với chân Vin trên Arduino. Kết nối này sẽ cấp nguồn cho Arduino trực tiếp từ bộ pin.
Xe RC hai bánh dẫn động (2WD) bao gồm một công tắc bật/tắt, cung cấp cho bạn tùy chọn kết nối pin thông qua công tắc. Thiết lập này cho phép bạn bật và tắt nguồn cho xe khi cần. Nếu bạn muốn một cách sắp xếp đơn giản hơn, bạn có thể chọn bỏ qua công tắc hoàn toàn.
Mã Arduino
Nội dung của trang web (HTML, CSS, JavaScript) được lưu riêng biệt trong một tệp index.h. Vì vậy, chúng ta sẽ có hai tệp mã trên Arduino IDE:
- Một tệp .ino chứa mã Arduino, tạo một máy chủ web và máy chủ WebSocket, và điều khiển xe ô tô
- Một tệp .h chứa nội dung của trang web
Hướng dẫn từng bước
- Nếu đây là lần đầu bạn sử dụng Arduino Uno R4, hãy xem Cách bắt đầu với Arduino UNO R4.
- Thực hiện các kết nối như hình ở trên.
- Kết nối bo mạch Arduino với máy tính của bạn bằng cáp micro USB.
- Mở Arduino IDE trên máy tính của bạn.
- Chọn bo mạch Arduino đúng (Arduino Uno R4 WiFi) và cổng COM.
- Mở Library Manager bằng cách nhấp vào biểu tượng Library Manager trên thanh điều hướng bên trái của Arduino IDE.
- Tìm kiếm Web Server for Arduino Uno R4 WiFi và xác định vị trí thư viện Web Server do DIYables tạo ra.
- Nhấn nút Install để cài đặt thư viện Web Server.

- Trên Arduino IDE, tạo một sketch mới, đặt cho nó một tên, ví dụ, ArduinoGetStarted.com.ino
- Sao chép mã dưới đây và mở bằng Arduino IDE
- Chỉnh sửa thông tin WiFi (SSID và mật khẩu) trong mã để phù hợp với thông tin mạng của bạn.
- Tạo file index.h trên Arduino IDE bằng cách:
- Nhấp vào nút ngay dưới biểu tượng Serial Monitor và chọn Tab Mới, hoặc sử dụng tổ hợp phím Ctrl+Shift+N.
- Hãy đặt tên cho tệp là index.h và nhấn nút OK
- Sao chép đoạn mã dưới đây và dán nó vào index.h.
- Bây giờ bạn có mã nguồn trong hai tệp tin: ArduinoGetStarted.com.ino và index.h
- Nhấp vào nút Tải lên trên Arduino IDE để nạp mã vào Arduino.
- Mở Serial Monitor
- Xem kết quả trên Serial Monitor.
- Ghi chú địa chỉ IP được hiển thị và nhập địa chỉ này vào thanh địa chỉ của trình duyệt trên điện thoại thông minh hoặc máy tính của bạn.
- Bạn sẽ thấy trang web như dưới đây:
- Nhấn nút CONNECT để kết nối trang web với Arduino qua WebSocket.
- Bây giờ bạn có thể điều khiển xe để rẽ trái/phải, tiến lên/lùi thông qua giao diện web.
- Nếu bạn chỉnh sửa nội dung HTML trong index.h và không động vào bất kỳ thứ gì trong tệp ArduinoGetStarted.com.ino, khi bạn biên dịch và tải mã lên Arduino, Arduino IDE sẽ không cập nhật nội dung HTML.
- Để Arduino IDE cập nhật nội dung HTML trong trường hợp này, hãy thực hiện một thay đổi trong tệp ArduinoGetStarted.com.ino (ví dụ thêm một dòng trống, thêm một chú thích....)



Để tiết kiệm bộ nhớ của Arduino, hình ảnh của các nút điều khiển KHÔNG được lưu trên Arduino. Thay vào đó, chúng được lưu trên Internet, vì vậy điện thoại hoặc máy tính của bạn cần có kết nối Internet để tải hình ảnh cho trang điều khiển trên web.
※ Lưu ý:
Giải thích mã theo từng dòng
Đoạn mã Arduino ở trên chứa lời giải thích theo từng dòng. Vui lòng đọc các chú thích trong mã.