Tutorial này hướng dẫn bạn cách sử dụng ESP8266 để điều khiển xe robot từ xa bằng trình duyệt web trên điện thoại thông minh hoặc máy tính của bạn thông qua WiFi. Việc điều khiển được thực hiện thông qua một giao diện người dùng web đồ họa, được gọi là WebSocket, cho phép điều khiển xe một cách mượt mà và linh hoạt.
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.
Giới thiệu về Ô tô điều khiển từ xa 2 bánh dẫn động và WebSocket
Vậy tại sao lại chọn WebSocket? Đây là những thông tin chi tiết.
Không có WebSocket, việc thay đổi hướng của xe sẽ yêu cầu tải lại trang mỗi lần. Không tối ưu!
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à ESP8266. Điều này cho phép gửi lệnh tới ESP8266 ở 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. Thật tuyệt phải không?
Tóm lại, kết nối WebSocket cho phép điều khiển 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 cụ thể 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ề sơ đồ chân phần cứng, nguyên lý hoạt động, cách kết nối dây với ESP8266, mã cho ESP8266... Tìm hiểu thêm về chúng tại các liên kết sau:
Mã ESP8266 tạo cả một máy chủ web và một máy chủ WebSocket. Dưới đây là cách nó hoạt động:
Khi bạn nhập địa chỉ IP của ESP8266 vào trình duyệt web, nó sẽ yêu cầu trang web (Giao diện người dùng) từ ESP8266.
Máy chủ web của ESP8266 trả về 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.
Mã JavaScript bên trong trang web thiết lập kết nối WebSocket tới máy chủ WebSocket trên ESP8266.
Ngay khi kết nối WebSocket này được thiết lập, nếu bạn nhấn/thả các nút trên trang web, mã JavaScript sẽ âm thầm gửi các lệnh tới ESP8266 thông qua kết nối WebSocket này ở chế độ nền.
Máy chủ WebSocket trên ESP8266, khi nhận được các lệnh, sẽ điều khiển xe robot theo các lệnh đó.
Bảng dưới đây cho thấy danh sách các lệnh mà trang web gửi đến ESP8266 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ơ đồ nối dây giữa xe RC 2WD và ESP8266
This image is created using Fritzing. Click to enlarge image
Một cái khác cho bảng ESP8266, module L298N (bộ điều khiển động cơ).
Nhưng bạn có thể đơn giản hóa mọi thứ bằng chỉ một nguồn cấp điện duy nhất cho mọi thứ – bốn pin 1,5V (tổng cộng 6V). Đây là cách làm:
Kết nối nguồn pin cho module L298N như hình.
Đặt hai jumper từ các chân ENA và ENB tới nguồn 5V trên module L298N.
Gỡ một jumper có nhãn 5VEN (vòng màu vàng trên sơ đồ).
Thực hiện phần dây còn lại theo sơ đồ ở trên.
Vì xe RC hai bánh dẫn động có công tắc bật/tắt, bạn có thể tùy ý kết nối pin qua công tắc để bật/tắt nguồn cho xe. Nếu bạn muốn đơn giản hóa, hãy bỏ qua công tắc.
Mã nguồn ESP8266
Nội dung của trang web (HTML, CSS, JavaScript) được lưu riêng 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ã ESP8266, tạo ra 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
Để bắt đầu với ESP8266 trên Arduino IDE, hãy làm theo các bước sau:
Bây giờ bạn có mã trong hai tệp tin: newbiely.com.ino và index.h
Nhấn nút Upload trên Arduino IDE để tải mã lên ESP8266
Mở Serial Monitor
Xem kết quả trên Serial Monitor.
Newbiely | Arduino IDE 2.3.8
──
☐
✕
File
Edit
Sketch
Tools
Help
Nodemcu 1.0 (ESP-12E Module)
Newbiely.ino
···
8Serial.println("Hello World!");
Output
Serial Monitor
Message (Enter to send message to 'Nodemcu 1.0 (ESP-12E Module)' on 'COM15')
New Line
9600 baud
Connecting to WiFi...
Connected to WiFi
ESP8266 Web Server's IP address IP address: 192.168.0.5
Ln 11, Col 1
Nodemcu 1.0 (ESP-12E 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 đ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:
Mã JavaScript của trang web tự động thiết lập kết nối WebSocket với ESP8266.
Bây giờ bạn có thể điều khiển xe quay trái/quay phải và di chuyển tiến lên/lùi thông qua giao diện web.
Để tiết kiệm bộ nhớ của ESP8266, hình ảnh của các nút điều khiển KHÔNG được lưu trên ESP8266. Thay vào đó, chúng được lưu trên Internet, nên đ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 web.
※ Lưu ý:
Nếu bạn chỉnh sửa nội dung HTML trong index.h và không sửa đổi bất cứ điều gì trong tệp newbiely.com.ino, khi bạn biên dịch và tải mã lên ESP8266, 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 newbiely.com.ino (ví dụ thêm một dòng trống, thêm một chú thích....)
Giải thích mã theo từng dòng
Đoạn mã ESP8266 ở trên đi kèm với lời giải thích cho từng dòng. Xin hãy đọc các chú thích trong mã.