Trong thế giới ngày nay, khi các thiết bị kết nối đã trở nên phổ biến, thuật ngữ Internet of Things (IoT) đã trở thành mô tả mặc định cho “thiết bị được kết nối với internet.” Mặc dù thuật ngữ này, với cách viết hoa chữ cái đầu và được viết liền, đẹp đẽ theo cách riêng của nó nhưng thực tế có nhiều hơn thế nữa về “thiết bị kết nối internet” mà mọi người nhận ra. Trong bài viết này, tôi muốn đi sâu hơn vào một trong những giao thức phổ biến nhất được sử dụng trong các thiết bị IoT: giao thức MQ Telemetry Transport (MQTT). Chúng ta sẽ tóm tắt về nó là gì, cách hoạt động và điều gì làm cho nó nổi bật so với các công nghệ khác được sử dụng ngoài kia. Chúng ta cũng sẽ đi qua một ví dụ chi tiết sử dụng thiết bị Arduino.
Trong một cài đặt máy chủ - khách hàng điển hình, chúng ta có một nhà cung cấp (tức là chính các thiết bị) đăng tải dữ liệu cảm biến lên máy chủ và một người tiêu dùng yêu cầu xem dữ liệu cảm biến từ máy chủ. MQTT cũng không khác biệt. Đây là một giao thức nhẹ được sử dụng để giao tiếp giữa các thiết bị. Các thiết bị thường "phát hành" (tức là gửi) dữ liệu đến một "môi giới" MQTT (hoặc máy chủ) sau đó dữ liệu được giữ lại để phục vụ cho các thiết bị khác hoặc ứng dụng web. Một thiết bị khác hoặc ứng dụng web sẽ "đăng ký" dữ liệu đó (tức là yêu cầu dữ liệu) từ môi giới MQTT và sau đó môi giới MQTT giao dữ liệu đó cho họ. Hãy nghĩ về điều này thực sự chỉ như một máy chủ web được tôn vinh với hai ngoại lệ lớn:
Vì hai lý do được đề cập ở trên, MQTT đã trở nên rất phổ biến với các thiết bị IoT. Trước đây, mọi người thường sử dụng các yêu cầu HTTP POST/GET để thực hiện hình thức giao tiếp thiết bị-máy chủ này nhưng nó hạn chế khả năng sử dụng các thiết bị giao tiếp khác như Bluetooth hoặc ZigBee. Vì MQTT không phụ thuộc vào điều đó, chúng ta giờ đây có thể có khả năng truyền thông điệp trong một mạng dựa trên mesh sử dụng MQTT mà không cần kết nối internet
Có nhiều cách để bắt đầu với MQTT bao gồm thiết kế một giải pháp toàn diện từ đầu đến cuối. Để làm cho mọi thứ đơn giản, chúng tôi sẽ sử dụng dịch vụ broker MQTT miễn phí được cung cấp bởi Adafruit trong ví dụ này. Điều này sẽ giúp chúng tôi tập trung chỉ vào phần phát triển phía khách hàng. Để bắt đầu, bạn sẽ cần những thứ sau:
Có một số việc chúng ta cần làm trước để thiết lập môi trường của mình. Hãy bắt đầu với việc thiết lập phần cứng của chúng ta. Tôi sẽ sử dụng Arduino Uno và Arduino Ethernet Shield kết nối với mạng địa phương của mình.
Chúng ta cần xếp Ethernet Shield lên trên Arduino và cắm nó vào mạng như sau:
Sau khi chúng ta đã cấu hình phần cứng, hãy mở Arduino IDE và cài đặt các thư viện cần thiết. Mở Arduino IDE và điều hướng đến Tools > Manage Libraries…
Tìm kiếm thư viện Adafruit MQTT và nhấn cài đặt:
Bạn sẽ được yêu cầu cài đặt các phụ thuộc thư viện nữa. Hãy tiếp tục nhấn vào “Install all.”
Sau khi bạn đã cài đặt các thư viện hỗ trợ, bạn có thể mở một ví dụ bằng cách điều hướng đến File > Examples > Adafruit MQTT Library > mqtt_ethernet.
Tại điểm này, chúng ta cần tạm dừng và lấy thông tin xác thực từ tài khoản Adafruit IO của mình. Đăng nhập vào Adafruit IO và nhấp vào “My Key” ở phía trên:
Giờ quay lại ví dụ sketch mqtt_ethernet của bạn và điền vào các trường AIO_USERNAME và AIO_KEY với các trường “Username” và “Active Key” nằm trong tài khoản Adafruit IO của bạn. Đảm bảo thiết bị của bạn đã được kết nối và sau đó nhấp vào Upload:
Để xem trạng thái của thiết bị (và để đảm bảo nó đã được kết nối với máy chủ MQTT) điều hướng đến Tools > Serial Monitor. Bạn sẽ thấy một đầu ra trông như thế này:
Tại điểm này, chúng ta đã xác nhận rằng dữ liệu đang được gửi thành công đến máy chủ MQTT. Để xem dữ liệu thực tế trên máy chủ, hãy quay lại tài khoản Adafruit IO của chúng ta và nhấp vào “Feeds” sau đó nhấp vào “photocell”
Chúng ta bây giờ có được một bức ảnh trực tiếp của dữ liệu mà Arduino của chúng ta đang gửi đến máy chủ MQTT. Chúng ta cũng có thể tải xuống dữ liệu lịch sử nữa.
Chúc mừng! Bạn đã thiết lập thành công một thiết bị hỗ trợ MQTT và đã xuất bản dữ liệu của mình lên một MQTT broker. Bây giờ, hãy tiến thêm một bước nữa bằng cách tự xây dựng cảm biến tùy chỉnh của bạn và xuất bản dữ liệu lên MQTT broker của bạn.
Trong bài viết này, chúng ta đã tìm hiểu MQTT là gì, tại sao nó được sử dụng, và cách triển khai nó trên một vi điều khiển. Chúng ta cũng đã thực hiện cách bắt đầu với một dịch vụ MQTT broker miễn phí và xem dữ liệu trên máy chủ của họ. Bây giờ, bạn nên cảm thấy thoải mái khi bắt đầu với bản vẽ Arduino của riêng mình dựa trên ví dụ mà chúng tôi đã sử dụng để xuất bản dữ liệu cảm biến của bạn lên MQTT broker và xem nó trên đám mây.