ESP8266 Điều khiển Xe qua Web
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.

Phần cứng cần chuẩn bị
| 1 | × | ESP8266 NodeMCU ESP-12E | ||
| 1 | × | Recommended: ESP8266 NodeMCU ESP-12E (Uno-form) | ||
| 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 ESP8266 and Car) | ||
| 1 | × | dây jumper | ||
| 1 | × | breadboard | ||
| 1 | × | (Khuyến nghị) Screw Terminal Expansion Board for ESP8266 | ||
| 1 | × | (Khuyến nghị) Power Splitter for ESP8266 Type-C |
Or you can buy the following kits:
| 1 | × | DIYables Sensor Kit (30 sensors/displays) | ||
| 1 | × | DIYables Sensor Kit (18 sensors/displays) |
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:
- ESP8266 - Xe ô tô hướng dẫn
- ESP8266 - WebSocket hướng dẫn
Cách thức hoạt động
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
Xem thêm Sơ đồ chân ESP8266 và Cách cấp nguồn cho ESP8266.
Thông thường, bạn cần hai nguồn cấp điện:
- Một cái dành cho động cơ thông qua module L298N.
- 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:
- Hãy tham khảo bài hướng dẫn ESP8266 - Cài đặt phần mềm nếu đây là lần đầu bạn sử dụng ESP8266.
- Nối các thành phần như được trình bày trong sơ đồ.
- Kết nối bo mạch ESP8266 với máy tính của bạn bằng cáp USB.
- Mở Arduino IDE trên máy tính của bạn.
- Chọn bo mạch ESP8266 phù hợp, ví dụ NodeMCU 1.0 (ESP-12E Module), và cổng COM tương ứng.
- Mở Library Manager bằng cách nhấp vào biểu tượng Library Manager ở thanh điều hướng bên trái của Arduino IDE.
- Tìm “WebSockets”, sau đó tìm WebSockets do Markus Sattler phát triển.
- Nhấp nút Install để cài đặt thư viện WebSockets.

- Trên Arduino IDE, tạo một sketch mới, đặt cho nó một cái tên, ví dụ, newbiely.com.ino
- Sao chép mã dưới đây và mở bằng Arduino IDE
- Tạo tập tin index.h trên Arduino IDE bằng cách:
- Hoặc nhấp vào nút ngay dưới biểu tượng Serial Monitor và chọn Tab mới, hoặc dùng phím Ctrl+Shift+N
- Hãy đặt tên cho file 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ã 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.
- 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.
- 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....)



Để 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 ý:
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ã.