24小時聯系電話:18217114652、13661815404
中文
行業資訊
MQTT 入門
MQTT 入門
在當今連接設備無處不在的世界中,物聯網(IoT) 一詞已成為“連接到互聯網的小部件”的事實上的描述。雖然這個美化的駱駝案例,首字母縮略詞本身就很漂亮,但“互聯網連接設備”的含義遠比人們意識到的要多。在本文中,我想深入探討 IoT 設備中使用的最流行的協議之一:MQ 遙測傳輸 (MQTT) 協議。我們將簡要介紹它是什么,它是如何工作的,以及它與其他使用的技術相比有何新穎之處。
MQTT 是什么以及為什么
在典型的客戶端-服務器設置中,我們有一個將傳感器數據發布到服務器的提供者(即設備本身)和一個請求從服務器查看傳感器數據的消費者。MQTT 也不例外。它是一種用于設備之間通信的輕量級協議。設備通常會將數據“發布”(即發送)到 MQTT“代理”(或服務器),然后將其保留以提供給其他設備或 Web 應用程序。另一個設備或 Web 應用程序將從 MQTT 代理“訂閱”該數據集(即請求數據),然后 MQTT 代理將該數據傳送給它們。把它想象成一個美化的 Web 服務器,有兩個主要的例外:
數據包非常輕量級(提高了速度、效率和成本)
MQTT 可以使用互聯網以外的其他通信模式(例如藍牙)
圖 1:帶有設備的 MQTT 代理
由于上述兩個原因,MQTT 已成為物聯網設備非常流行的協議。從歷史上看,人們會使用 HTTP POST/GET 請求來實現這種形式的設備-服務器通信,但這會限制他們使用其他通信設備(如藍牙或 ZigBee)的能力。由于 MQTT 在這方面是不可知的,我們現在可以使用 MQTT在基于網格的網絡中擁有消息傳遞功能,而無需連接到互聯網
MQTT 入門
有很多方法可以開始使用 MQTT,包括設計完整的端到端解決方案。為了簡單起見,我們將在本示例中使用 Adafruit 提供的免費 MQTT 代理服務。這將使我們能夠專注于開發過程的客戶端。要開始使用,您需要具備以下條件:
Arduino 設備(此示例使用Arduino Uno)
支持互聯網連接的 Arduino擴展板(即Arduino 以太網擴展板)或基于 Wifi 的 Arduino 兼容設備,例如ESP8266。
Arduino IDE軟件
使用Adafruit IO 的帳戶。
為了設置我們的環境,我們需要先做一些事情。讓我們首先設置我們的硬件。我將使用連接到本地網絡的 Arduino Uno 和 Arduino Ethernet Shield。
圖 2:并排放置 Arduino Uno 和 Arduino Ethernet Shield
我們需要在 Arduino 頂部堆疊以太網擴展板并將其插入網絡,如下所示:
圖 3:Arduino Uno 和 Arduino Ethernet Shield 連接在一起并插入
配置好硬件后,讓我們打開 Arduino IDE 并安裝必要的庫。打開 Arduino IDE 并導航到工具 > 管理庫...
圖 4:管理庫菜單選項
搜索 Adafruit MQTT 庫并單擊安裝:
圖 5:庫管理器
系統還會提示您安裝庫依賴項。繼續并單擊“全部安裝”。
圖 6:庫依賴項對話框
安裝支持庫后,您可以通過導航到文件 > 示例 > Adafruit MQTT 庫 > mqtt_ethernet 打開示例。
圖 7:mqtt_ethernet 示例的菜單導航
在這一點上,我們需要暫停并從我們的 Adafruit IO 帳戶中獲取我們的憑據。登錄Adafruit IO并單擊頂部的“我的密鑰”:
圖 8:My Key 菜單選項
現在回到您的 Arduino mqtt_ethernet草圖示例,并使用位于您的 Adafruit IO 帳戶中的“用戶名”和“活動密鑰”字段填寫 AIO_USERNAME 和 AIO_KEY 字段。確保您的設備已連接,然后單擊上傳:
圖 9:準備好上傳的 Arduino Sketch
要查看設備的狀態(并確保它已連接到 MQTT 代理),請導航到工具 > 串行監視器。您應該會看到如下所示的輸出:
圖 10:Arduino mqtt_ethernet 示例的串行監視器輸出
此時我們已經確認數據已成功發送到 MQTT 代理。要查看服務器上的實際數據,讓我們返回我們的 Adafruit IO 帳戶并單擊“Feeds”,然后單擊“photocell”
圖 11:Adafruit IO 饋送
我們現在可以實時捕獲 Arduino 發送到 MQTT 代理的數據。我們也可以下載歷史數據。
圖 12:從 Arduino 發送到 MQTT 代理的實時和歷史數據
恭喜!您現在已經設置了啟用 MQTT 的設備并將您的數據發布到 MQTT 代理?,F在進行下一步,構建您自己的自定義傳感器并將數據發布到您的 MQTT 代理。
結論
我們了解了 MQTT 是什么、使用它的原因以及如何在微控制器上實現它。我們還演示了如何開始使用免費的 MQTT 代理服務并查看其服務器上的數據。您現在應該可以根據我們用來將您自己的傳感器數據發布到 MQTT 代理并在云上查看的示例開始您自己的 Arduino 草圖。