Arduino WebSocket
Trong hướng dẫn này, chúng ta sẽ khám phá WebSocket là gì, tại sao nó hữu ích cho việc điều khiển Arduino một cách hiệu quả, và cách triển khai WebSocket với Arduino. Thông qua một ví dụ thực hành, chúng ta sẽ trình diễn cách xây dựng một ứng dụng chat kết nối trình duyệt web với Arduino, giúp bạn có thể:
- Nhập và gửi tin nhắn từ cửa sổ trò chuyện trong trình duyệt web của bạn đến Arduino. Phương pháp này có thể được chỉnh sửa để điều khiển Arduino.
- Nhận tin nhắn từ Arduino ngay lập tức. Cài đặt này có thể được chỉnh sửa để giám sát Arduino theo thời gian thực.

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 | × | (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) |
Arduino Websocket là gì?
Bạn có thể đang tự hỏi, 'WebSocket là gì?' Nó khá đơn giản: WebSocket là một công nghệ cho phép trình duyệt web giao tiếp trực tiếp với máy chủ web theo thời gian thực.
- Nếu không có WebSocket, bạn sẽ phải làm mới trang web để xem các cập nhật mới. Điều này không thực tế lắm.
- Với WebSocket, trang web vẫn được kết nối liên tục với máy chủ. Điều này cho phép họ trao đổi thông tin ngay lập tức mà không cần làm mới trang.
Bạn có thể thường xuyên gặp công nghệ WebSocket trong các ứng dụng web hàng ngày, chẳng hạn như trò chơi trực tuyến, nhắn tin tức thời và cập nhật thị trường chứng khoán.
Tại sao chúng ta cần WebSocket để điều khiển Arduino một cách mượt mà?
Hãy tưởng tượng bạn muốn điều khiển chiếc xe điều khiển từ xa bằng giao diện web trên điện thoại hoặc máy tính của mình. Nếu không có WebSocket, mỗi lần bạn muốn thay đổi hướng hoặc tốc độ của xe, bạn sẽ phải làm mới trang web. Điều này giống như phải nhấn nút 'tải lại' mỗi khi bạn đưa ra lệnh cho xe.
Với WebSocket, tuy nhiên, nó như thể có một kết nối liên tục và trực tiếp giữa điện thoại hoặc máy tính của bạn với ô tô. Bạn không cần làm mới trang để điều khiển ô tô hoặc thay đổi tốc độ của nó. Nó như thể ô tô liên tục lắng nghe các lệnh của bạn trong thời gian thực, mà không gặp bất kỳ độ trễ nào do phải làm mới trang.
Nhìn chung, WebSocket tạo điều kiện cho:
- Gửi dữ liệu từ trình duyệt web đến Arduino mà không cần tải lại trang web.
- Gửi dữ liệu từ Arduino trở lại trình duyệt web mà không làm mới trang web.
Điều này cho phép giao tiếp hai chiều mượt mà trong thời gian thực.
Lợi ích của WebSocket với Arduino:
- Kiểm soát thời gian thực: WebSocket cho phép giao tiếp tức thì với Arduino, đảm bảo phản hồi nhanh cho các lệnh để mang lại trải nghiệm người dùng liền mạch.
- Kết nối duy trì: Duy trì một liên kết liên tục mà không làm mới trang điều khiển, tạo ra một kênh liên lạc luôn sẵn sàng cho các lệnh ngay tức thì.
- Hiệu quả: Trải nghiệm phản hồi nhanh mà không cần tải lại trang liên tục, nâng cao sự hài lòng và hiệu quả của người dùng.
Trò chuyện Web với Arduino qua WebSocket
Nội dung của trang web (HTML, CSS, JavaScript) được lưu riêng trong một tập tin index.h. Vì vậy, chúng ta sẽ có hai tập tin mã trên Arduino IDE:
- Một tệp .ino chứa mã Arduino, tạo ra một máy chủ web và máy chủ WebSocket
- 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.
- Kết nối bảng 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 bảng Arduino phù hợp (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à xác định thư viện Web Server do DIYables tạo.
- Nhấp nút Install để cài đặt thư viện Web Server.

- Trong Arduino IDE, tạo một sketch mới, đặt tên cho nó, ví dụ, ArduinoGetStarted.com.ino
- Sao chép mã dưới đây và mở bằng Arduino IDE
- Chỉnh sửa thông tin WiFi (SSID và mật khẩu) trong mã nguồn để khớp với thông tin đăng nhập của mạng bạn.
- Tạo tệp index.h trong Arduino IDE bằng cách:
- Nhấn vào nút ngay dưới biểu tượng Serial Monitor và chọn New Tab, hoặc sử dụng các phím Ctrl+Shift+N.
- Hãy nhập tên tệp index.h và nhấn nút OK
- Sao chép đoạn mã dưới đây và dán vào index.h.
- Bây giờ bạn có mã trong hai tập tin: ArduinoGetStarted.com.ino và index.h
- Nhấn vào nút Tải lên trên Arduino IDE để tải mã lên Arduino.
- Mở Serial Monitor
- Xem kết quả trên Serial Monitor.
- Ghi chú đị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ư hình dưới đây:
- Nhấn nút KẾT NỐI để kết nối trang web với Arduino qua WebSocket.
- Gõ một vài từ và gửi chúng đến Arduino.
- Bạn sẽ thấy phản hồi từ Arduino.
- Nếu bạn chỉnh sửa nội dung HTML trong index.h và không chạm vào bất kỳ nội dung nào 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...).




※ Lưu ý:
Giải thích mã theo từng dòng
Đoạn mã Arduino ở trên có lời giải thích theo từng dòng. Vui lòng đọc các chú thích trong mã.
Cách hệ thống hoạt động
Mã Arduino hoạt động bằng cách thiết lập đồng thời cả một máy chủ web và một máy chủ WebSocket. Đây là cách nó hoạt động:
- Khi bạn nhập địa chỉ IP của Arduino vào trình duyệt web, nó yêu cầu trang web (Giao diện người dùng) từ Arduino.
- Máy chủ web của Arduino sau đó gửi nội dung của trang web (HTML, CSS, JavaScript) tới trình duyệt của bạn.
- Trình duyệt web của bạn hiển thị trang web.
- Khi nhấp vào nút Kết nối trên trang web, mã JavaScript bên trong trang sẽ thiết lập một kết nối WebSocket với máy chủ WebSocket trên Arduino.
- Khi kết nối WebSocket đã hoạt động, nếu bạn gõ gì đó và nhấn nút Gửi, mã JavaScript sẽ gửi nội dung bạn nhập đến Arduino thông qua kết nối WebSocket ở chế độ nền.
- Sau khi nhận được đầu vào của bạn, máy chủ WebSocket trên Arduino gửi phản hồi trở lại cho trang web của bạn.
Bạn có thể tìm hiểu thêm các ví dụ Arduino WebSocket khác ở phía dưới.