ESP8266 Điều khiển động cơ servo qua web
Các hướng dẫn chi tiết, mã nguồn, sơ đồ mạch, video hướng dẫn và lời giải thích mã theo từng dòng được cung cấp để giúp bạn nhanh chóng bắt đầu với ESP8266.
Tìm bài viết này và các bài hướng dẫn ESP8266 khác tại newbiely.com.
Hướng dẫn này chỉ cho bạn cách sử dụng ESP8266 để điều khiển động cơ servo qua web từ trình duyệt trên điện thoại thông minh hoặc máy tính của bạn. Chúng ta sẽ sử dụng một thứ được gọi là WebSocket để điều khiển động cơ servo một cách mượt mà và linh hoạt thông qua một giao diện người dùng web đồ họa.

Vậy tại sao lại dùng WebSocket? Đây là ý tưởng:
- Nếu không có WebSocket, mỗi lần bạn muốn thay đổi góc của servo, bạn phải tải lại trang. Không hay lắm!
- Nhưng 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 có nghĩa là chúng ta có thể gửi giá trị góc đến ESP8266 ở nền mà không cần tải lại trang. Điều này làm cho servo di chuyển mượt mà và theo thời gian thực. Thật là ngầu, đúng không?
Hãy bắt đầu!
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 | × | động cơ servo | ||
| 1 | × | breadboard | ||
| 1 | × | dây jumper | ||
| 1 | × | (Tùy chọn) DC Power Jack | ||
| 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ề động cơ servo và WebSocket
Chúng tôi có các bài hướng dẫn riêng về động cơ servo và WebSocket. Mỗi bài hướng dẫn chứa thông tin chi tiết và các chỉ dẫn từng bước về sơ đồ chân phần cứng, nguyên lý hoạt động, kết nối dây với ESP8266, mã ESP8266... Tìm hiểu thêm về chúng tại các liên kết sau:
- ESP8266 - Động cơ servo hướng dẫn
- ESP8266 - WebSocket hướng dẫn
Cách hoạt động
Mã ESP8266 tạo ra cả máy chủ web và 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ó yêu cầu trang web (Giao diện người dùng) từ ESP8266.
- Máy chủ web của ESP8266 phản hồi bằng cách gửi 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 trong trang web thiết lập một kết nối WebSocket tới máy chủ WebSocket trên ESP8266.
- Khi kết nối WebSocket này được thiết lập, nếu bạn xoay cần điều khiển trên trang web, mã JavaScript sẽ âm thầm gửi giá trị góc 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 giá trị góc sẽ điều khiển động cơ servo tương ứng.
Tóm lại, kết nối WebSocket cho phép điều khiển mượt mà và theo thời gian thực góc quay của động cơ servo.
Sơ đồ đấu dây giữa động cơ servo 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.
Để đơn giản hóa, sơ đồ nối ở trên được sử dụng cho mục đích thử nghiệm hoặc học tập và dành cho động cơ servo có mô-men xoắn nhỏ. Trong thực tế, chúng tôi đặc biệt khuyến nghị sử dụng nguồn cấp ngoài cho động cơ servo. Sơ đồ nối bên dưới cho thấy cách kết nối động cơ servo với nguồn điện bên ngoài.

This image is created using Fritzing. Click to enlarge image
Mã 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ã nguồn trong Arduino IDE:
- Một tệp .ino chứa mã ESP8266, tạo máy chủ web và máy chủ WebSocket, và điều khiển động cơ servo
- 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:
- Xem 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 linh kiện như được mô tả trong sơ đồ.
- Kết nối bảng 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 của nó.
- Nhấp vào biểu tượng Trình quản lý thư viện ở thanh điều hướng bên trái của Arduino IDE.
- Tìm kiếm “WebSockets”, rồi tìm thư viện WebSockets được tạo bởi Markus Sattler.
- Nhấn nút Cài đặt để cài đặt thư viện WebSockets.

- Trên Arduino IDE, tạo một sketch mới, đặt cho nó một tên, ví dụ, newbiely.com.ino
- Sao chép đoạn mã bên dưới và mở bằng Arduino IDE
- Tạo tệp index.h trên Arduino IDE bằng cách:
- Hoặc nhấp vào nút ngay bên dưới biểu tượng Serial Monitor và chọn Tab Mới, hoặc dùng phím Ctrl+Shift+N.
- Đặt tên cho tệp tin index.h và nhấn nút OK
- Sao chép đoạn mã dưới đây và dán vào tập tin index.h.
- Bây giờ bạn có mã trong hai tệp: newbiely.com.ino và index.h
- Nhấn nút Tải lên trên Arduino IDE để tải mã lên ESP8266
- Mở Serial Monitor
- Xem kết quả trên Serial Monitor.
- Ghi nhận đị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á nhân 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 góc của động cơ servo 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 chạm vào bất cứ thứ gì trong newbiely.com.ino file, 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 newbiely.com.ino file (ví dụ: thêm một dòng trống, thêm một chú thích....)



Để tiết kiệm bộ nhớ cho ESP8266, hình ảnh của động cơ servo không được lưu trữ 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 trên web.
※ Lưu ý:
Giải thích mã nguồn theo từng dòng
Đoạn mã ESP8266 ở 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ã.