21. Bài 18: Điều khiển và giám sát robot qua IoT
Mục tiêu:
Làm quen với khái niệm Internet vạn vật (IoT), WiFi và MQTT
Thực hành lập trình có thể điều khiển và giám sát các hoạt động và trạng thái của robot qua Internet
Giới thiệu về công nghệ IoT, WiFi và MQTT
Công nghệ IoT: IoT (Internet vạn vật) là mạng kết nối hàng tỷ thiết bị trên khắp thế giới qua Internet
Kết nối WiFi trong IoT: Có vai trò cực kỳ quan trọng trong IoT, là công nghệ chính để truyền dữ liệu trong hệ thống IoT
Giao thức MQTT: Là giao thức truyền thông tin nhẹ và nhanh giữa các thiết bị, phù hợp cho các thiết bị IoT
Giới thiệu khối lệnh
Tải thư viện lập trình MQTT trên OhStem App:
Trong danh mục khối lệnh, chọn vào khối MỞ RỘNG để mở các thư viện mở rộng, như minh họa ở hình dưới:
Nhập từ khóa MQTT vào ô tìm kiếm, sau đó nhấn Enter. Kết quả của việc tìm kiếm sẽ xuất hiện như hình:
Nhấn vào MQTT để thêm thư viện. Khi thông báo sau đây xuất hiện, bạn chọn OK.
Phần mềm sẽ yêu cầu bạn kết nối với mạch Yolo:Bit, tuy nhiên, bạn có thể bỏ qua bước này. Sau đó, chúng ta sẽ có một nhóm khối lệnh mới như hình:
Các khối lệnh trong MQTT:
Tạo bảng điều khiển IoT (Dashboard)
Tại giao diện chính của OhStem App, chọn Bảng điều khiển IoT
Chọn Tạo mới
Kéo thả và sắp xếp các công cụ điều khiển (widget) theo ý muốn
Giao diện cấu hình bảng điều khiển IoT
Điều khiển đổi màu Rover từ Internet
Yêu cầu: Cấu hình Color Picker để bật tắt đèn LED trên Rover
Cấu hình bảng điều khiển IoT
Lập trình và nạp vào robot Rover:
Kết nối vào mạng WiFi. Đây là bước đầu mà chúng ta cần làm để thiết bị có thể kết nối với Internet. Cũng giống như máy tính, việc kết nối với mạng WiFi bất kỳ chỉ cần được thực hiện một lần. Do đó, chúng ta sẽ lập trình tính năng này trong phần bắt đầu của chương trình.
![]()
Lưu ý: Trong câu lệnh này, bạn cần cung cấp đúng 2 thông tin là tên và mật khẩu của WiFi cho Yolo:Bit.
Sau khi kết nối với mạng WiFi, chúng ta sẽ lập trình để Yolo:Bit kết nối với server OhStem mà chúng ta đã tạo trước đó, thông qua 2 thông tin là Username và key sẽ bỏ trống.
Với Username lấy trong bảng điều khiển IoT
![]()
Cuối cùng cần đăng ký nhận thông tin gửi vào chủ đề - topic đã cấu hình trước đó. Ở đây cấu hình đã chọn cho Color Picker trước đó là V1.
Lưu ý: Cần ghi đúng chính xác tên của chủ đề.
![]()
Mỗi khi nút nhấn trên Dashboard được nhấn, dữ liệu sẽ được tự động lưu lại trong biến thông tin. Phần hướng dẫn này sẽ được trình bày ở các phần sau.
Liên kết định kỳ đến Server.
Sau các bước cấu hình ở trên, chúng ta cần phải tạo một liên kết định kì với Server. Việc này được thực hiện lặp đi lặp lại liên tục, nên chúng ta cần phải hiện thực nó trong khối lặp lại mãi, như sau:
![]()
Chu kì kiểm tra kết nối với Server mà chúng tôi đề xuất ở đây là 1 giây, tức là 1000ms (sử dụng câu lệnh tạm dừng trong mục CƠ BẢN). Thời gian dừng càng lớn thì việc nhận tín hiệu điều khiển khi nhấn nút sẽ chậm. Tuy nhiên, nếu thời gian dừng nhỏ thì chúng sẽ làm tốn tài nguyên của mạng Internet (do mạch Yolo:Bit phải thường xuyên truy cập và gửi dữ liệu lên Server Adafruit IO).
Trong các ứng dụng hiện tại, chúng ta nên sử dụng độ trễ 1 giây.
Xử ký dữ liệu nhận được từ Server OhStem. Để xử lý dữ liệu nhận được (lưu trong biến thông tin), chúng ta cần phải lập trình trong phần bắt đầu.
Chương trình hoàn chỉnh như sau:
![]()
Định kỳ cập nhập thông tin lên Server IoT
Yêu cầu: Định kỳ cập nhật thông tin nhiệt độ, ánh sáng từ Rover lên Server IoT (bảng điều khiển)
Cấu hình bảng điều khiển IoT
Thư viện sự kiện
Lập trình cho Rover như sau:
Điều khiển robot qua Internet
Yêu cầu: Điều khiển bật / tắt đèn pha 2 bên của robot Rover thông qua bảng điều khiển IoT
Cấu hình bảng điều khiển IoT
Lập trình cho Rover như sau:
Điều khiển di chuyển qua Internet
Yêu cầu: Điều khiển robot di chuyển theo các hướng thông qua bảng điều khiển IoT
Cấu hình bảng điều khiển IoT
Lập trình cho Rover như sau: