Arduino Điều khiển động cơ servo thông qua web
Hướng dẫn này sẽ cho bạn biết cách sử dụng Arduino để điều khiển một động cơ servo 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. Chúng ta sẽ sử dụng công nghệ WebSocket để cho phép điều khiển mượt mà và linh hoạt của động cơ servo thông qua một giao diện người dùng web đồ họa.

Bây giờ, tại sao chúng ta nên sử dụng WebSocket? Đây là lý do:
- Không có WebSocket, mỗi lần bạn cần điều chỉnh góc của servo, bạn sẽ phải tải lại trang web. Điều này không lý tưởng.
- Tuy nhiên, với WebSocket, chúng ta thiết lập một kết nối riêng giữa trang web và Arduino. Thiết lập này cho phép chúng ta truyền giá trị góc tới Arduino một cách liên tục mà không cần tải lại trang. Do đó, servo hoạt động mượt mà và phản hồi theo thời gian thực. Khá ấn tượng, đúng không?
Chúng ta hãy bắt đầu!
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 | × | động cơ servo | ||
| 1 | × | breadboard | ||
| 1 | × | dây jumper | ||
| 1 | × | (Tùy chọn) DC Power Jack | ||
| 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) |
Về Động cơ Servo và WebSocket
Chúng tôi có các bài hướng dẫn cụ thể về động cơ servo 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 của phần cứng, 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 - Động cơ servo 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. Dưới đây là quy trình theo từng bước:
- Khi bạn gõ địa chỉ IP của Arduino vào trình duyệt web, nó gửi một yêu cầu cho trang web (Giao diện người dùng) được lưu trữ trên Arduino.
- Máy chủ web của Arduino phản hồi bằng cách gửi lạ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 được nhúng vào trang web bắt đầu một kết nối WebSocket với máy chủ WebSocket trên Arduino.
- Khi kết nối WebSocket được thiết lập, nếu bạn điều chỉnh thanh điều khiển trên trang web, mã JavaScript sẽ âm thầm truyền giá trị góc tới Arduino thông qua kết nối WebSocket này ở chế độ nền.
- Máy chủ WebSocket trên Arduino, khi nhận được giá trị góc này, sẽ điều chỉnh động cơ servo tương ứng.
Về bản chất, kết nối WebSocket tạo điều kiện cho việc điều khiển góc của động cơ servo một cách mượt mà và theo thời gian thực.
Sơ đồ nối dây giữa động cơ servo và Arduino

This image is created using Fritzing. Click to enlarge image
Vì sự đơn giản, sơ đồ kết nối ở trên được sử dụng cho mục đích thử nghiệm hoặc học tập và cho động cơ servo có mô-men xoắn nhỏ. Trong thực tế, chúng tôi khuyến nghị mạnh mẽ sử dụng nguồn cấp ngoài cho động cơ servo. Sơ đồ kết nối dưới đây cho thấy cách kết nối động cơ servo với nguồn cấp ngoài.

Mã Arduino
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ã trong Arduino IDE:
- Một tệp .ino chứa mã Arduino, dùng để 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
- 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 nối dây theo 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 (ví dụ 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à tìm thư viện Web Server do DIYables phát triển.
- Nhấp nút Install để cài đặt thư viện Web Server.

- Trong Arduino IDE, tạo một sketch mới, đặt cho nó một tên, ví dụ, ArduinoGetStarted.com.ino
- Sao chép đoạn mã bên dưới và mở bằng Arduino IDE
- Chỉnh sửa thông tin WiFi (SSID và mật khẩu) trong mã để khớp với thông tin mạng của bạn.
- Tạo tệp index.h bằng Arduino IDE:
- 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 tổ hợp phím Ctrl+Shift+N.
- Hãy đặ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 nó vào index.h.
- Bây giờ bạn có mã nguồn ở hai tệp: ArduinoGetStarted.com.ino và index.h
- Nhấp vào Tải lên nút trên IDE Arduino để tải mã lên Arduino.
- Mở Serial Monitor
- Xem kết quả trên Serial Monitor.
- Ghi nhớ đị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 tới Arduino.
- Bây giờ bạn có thể điều khiển góc của động cơ servo bằng cách xoay tay cầm của động cơ trên giao diện web.
- Hãy kiểm tra kết quả trên Serial Monitor; bạn cũng sẽ thấy các giá trị góc từ trang web.
- Nếu bạn chỉnh sửa nội dung HTML trong index.h và không chỉnh sửa 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 động cơ servo KHÔNG được lưu trữ trên Arduino. Thay vào đó, chúng được lưu trữ 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 web.
※ Lưu ý:
Giải thích mã nguồn 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ã.