Hướng dẫn này sẽ chỉ cho bạn cách sử dụng ESP32 để điều khiển không dây một chiếc xe robot từ trình duyệt Web trên smartphone hoặc PC của bạn bằng WiFi. Việc điều khiển được thực hiện thông qua giao diện web đồ họa người dùng sử dụng một công nghệ gọi là WebSocket, cho phép điều khiển xe một cách mượt mà và động.
Tiết lộ: Một số liên kết trong bài viết này là liên kết tiếp thị Amazon và có thể nhận hoa hồng theo chính sách của chương trình.
Về Xe RC 2WD và WebSocket
Bây giờ, tại sao lại chọn WebSocket? Đây là lý do:
Không có WebSocket, việc thay đổi hướng của xe sẽ yêu cầu tải lại trang web mỗi lần. Không lý tưởng lắm!
Tuy nhiên, với WebSocket, chúng ta thiết lập một kết nối đặc biệt giữa trang web và ESP32. Điều này cho phép gửi lệnh đến ESP32 ở chế độ nền, mà không cần tải lại trang. Kết quả? Xe robot di chuyển mượt mà và theo thời gian thực. Khá tuyệt phải không?
Tóm lại, kết nối WebSocket cho phép điều khiển xe robot một cách mượt mà và thời gian thực.
Chúng tôi có các hướng dẫn riêng về Xe RC 2WD và WebSocket. Mỗi hướng dẫn chứa thông tin chi tiết và hướng dẫn từng bước về pinout phần cứng, nguyên lý hoạt động, kết nối dây với ESP32, code ESP32... Tìm hiểu thêm về chúng tại các liên kết sau:
Code ESP32 tạo cả web server và WebSocket Server. Đây là cách nó hoạt động:
Khi bạn nhập địa chỉ IP của ESP32 vào trình duyệt web, nó yêu cầu trang web (Giao diện Người dùng) từ ESP32.
Web server của ESP32 phản hồi bằng cách gửi nội dung trang web (HTML, CSS, JavaScript).
Trình duyệt web của bạn sau đó hiển thị trang web.
Code JavaScript trong trang web thiết lập kết nối WebSocket đến WebSocket server trên ESP32.
Một khi kết nối WebSocket này được thiết lập, nếu bạn nhấn/nhả các nút trên trang web, code JavaScript sẽ âm thầm gửi lệnh đến ESP32 thông qua kết nối WebSocket này ở chế độ nền.
WebSocket server trên ESP32, khi nhận được lệnh, điều khiển xe robot tương ứng.
Bảng dưới đây hiển thị danh sách lệnh mà trang web gửi đến ESP32 dựa trên hành động của người dùng:
Hành Động Người Dùng
Nút
Lệnh
Hành Động Xe
NHẤN
LÊN
1
DI CHUYỂN TIẾN
NHẤN
XUỐNG
2
DI CHUYỂN LÙI
NHẤN
TRÁI
4
RẼ TRÁI
NHẤN
PHẢI
8
RẼ PHẢI
NHẤN
DỪNG
0
DỪNG
NHẢ
LÊN
0
DỪNG
NHẢ
XUỐNG
0
DỪNG
NHẢ
TRÁI
0
DỪNG
NHẢ
PHẢI
0
DỪNG
NHẢ
DỪNG
0
DỪNG
Sơ Đồ Kết Nối giữa Xe RC 2WD và ESP32
This image is created using Fritzing. Click to enlarge image
Một khác cho bo mạch ESP32, module L298N (Motor driver).
Nhưng, bạn có thể đơn giản hóa việc này bằng cách chỉ sử dụng một nguồn điện cho mọi thứ – bốn pin 1.5V (tổng cộng 6V). Đây là cách:
Kết nối pin với module L298N như hình.
Tháo hai jumper từ chân ENA và ENB đến 5 volt trên module L298N.
Thêm một jumper được gán nhãn 5VEN (vòng tròn màu vàng trên sơ đồ).
Kết nối chân 12V trên module L298N với chân Vin trên ESP32 để cấp điện trực tiếp từ pin.
Vì xe RC 2WD có công tắc bật/tắt, bạn có thể tùy chọn kết nối pin qua công tắc để có thể bật/tắt nguồn điện cho xe. Nếu bạn muốn đơn giản, chỉ cần bỏ qua công tắc.
Code ESP32
Nội dung trang web (HTML, CSS, JavaScript) được lưu trữ riêng biệt trong file index.h. Vậy, chúng ta sẽ có hai file code trên Arduino IDE:
Một file .ino là code ESP32, tạo web server và WebSocket Server, và điều khiển xe
Bây giờ bạn có code trong hai file: newbiely.com.ino và index.h
Nhấp nút Upload trên Arduino IDE để tải code lên ESP32
Mở Serial Monitor
Kiểm tra kết quả trên Serial Monitor.
Newbiely | Arduino IDE 2.3.8
──
☐
✕
File
Edit
Sketch
Tools
Help
ESP32 Dev Module
Newbiely.ino
···
8Serial.println("Hello World!");
Output
Serial Monitor
Message (Enter to send message to 'ESP32 Dev Module' on 'COM15')
New Line
9600 baud
Connecting to WiFi...
Connected to WiFi
ESP32 Web Server's IP address IP address: 192.168.0.2
Ln 11, Col 1
ESP32 Dev Module on COM15
2
Ghi lại đị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 web trên smartphone hoặc PC của bạn.
Bạn sẽ thấy trang web như dưới đây:
Code JavaScript của trang web tự động tạo kết nối WebSocket đến ESP32.
Bây giờ bạn có thể điều khiển xe rẽ trái/phải, di chuyển tiến/lùi qua giao diện web.
Để tiết kiệm bộ nhớ của ESP32, hình ảnh của các nút điều khiển KHÔNG được lưu trữ trên ESP32. Thay vào đó, chúng được lưu trữ trên internet, vì vậy điện thoại hoặc PC của bạn cần có kết nối internet để tải hình ảnh cho trang điều khiển web.
※ Lưu ý:
Nếu bạn sửa đổi nội dung HTML trong file index.h và không chạm vào gì trong file newbiely.com.ino, khi bạn compile và tải code lên ESP32, Arduino IDE sẽ không cập nhật nội dung HTML.
Để làm cho 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 file newbiely.com.ino (ví dụ: thêm dòng trống, thêm comment....)
Giải Thích Code Từng Dòng
Code ESP32 ở trên chứa giải thích từng dòng. Vui lòng đọc các comment trong code!