如何將ESP32連接到MQTT代理
物聯(lián)網(wǎng)是一個與可通過互聯(lián)網(wǎng)訪問的設(shè)備連接的系統(tǒng)。有許多云平臺和協(xié)議,MQTT是物聯(lián)網(wǎng)項(xiàng)目中使用最多的物聯(lián)網(wǎng)協(xié)議之一。在之前的教程中,我們已經(jīng)將MQTT與樹莓派和ESP8266連接起來?,F(xiàn)在,我們正在MQTT服務(wù)器和ESP32之間建立連接。
ESP32是流行的ESP8266 Wi-Fi模塊的繼承者,具有許多先進(jìn)的功能,例如該模塊是一個雙核32位CPU,內(nèi)置Wi-Fi和雙模藍(lán)牙,具有足夠數(shù)量的30個I/O引腳。
雖然MQTT代表消息隊(duì)列遙測傳輸,但它是一個我們可以作為客戶機(jī)發(fā)布和訂閱消息的系統(tǒng)。通過使用MQTT,您可以發(fā)送命令來控制輸出、讀取和發(fā)布來自傳感器的數(shù)據(jù)等等。MQTT中有兩個主要術(shù)語,即客戶端和代理。
什么是MQTT客戶機(jī)和代理?
MQTT客戶機(jī):MQTT客戶機(jī)運(yùn)行MQTT庫并通過網(wǎng)絡(luò)連接到MQTT代理。發(fā)布者和訂閱者都是MQTT客戶機(jī)。發(fā)布者和訂閱者指的是客戶端是發(fā)布消息還是訂閱消息。
MQTT Broker:代理接收所有消息,過濾消息,確定誰訂閱了每條消息,并將消息發(fā)送給這些訂閱的客戶機(jī)。
現(xiàn)在,在本教程中,我們將解釋如何使用ESP32和Arduino IDE庫連接到MQTT代理并訂閱主題。
組件的要求
?ESP32
?云MQTT
云MQTT帳戶設(shè)置
要在Cloud MQTT上建立一個帳戶,請瀏覽其官方網(wǎng)站(www.cloudmqtt.com)并使用您的電子郵件進(jìn)行注冊。
登錄后,點(diǎn)擊“+ Create New Instance”創(chuàng)建一個新實(shí)例。
現(xiàn)在輸入您的實(shí)例名稱,并在計劃選項(xiàng)中選擇“Cute Cat”。
在新選項(xiàng)卡中選擇區(qū)域并單擊“審查”。
您的實(shí)例已經(jīng)創(chuàng)建,您可以查看您的詳細(xì)信息,如用戶和密碼。
ESP32 MQTT代理代碼說明
最后給出了將ESP32與MQTT代理連接的完整代碼。這里,我們使用Arduino IDE對ESP32進(jìn)行編程。首先,安裝WiFi.h庫和PubSubClient庫。
PubSubClient庫允許我們在主題中發(fā)布/訂閱消息。
現(xiàn)在為我們的WiFi和MQTT連接聲明一些全局變量。在以下變量中輸入您的WiFi和MQTT詳細(xì)信息:
在setup_wifi函數(shù)中,它會檢查WiFi是否聯(lián)網(wǎng),并給出IP地址并打印在串口監(jiān)視器上。
在下面的while循環(huán)函數(shù)中,它將連接到MQTT服務(wù)器并將其打印到串行監(jiān)視器上。這個進(jìn)程將在一個循環(huán)中運(yùn)行,直到它被連接。
現(xiàn)在我們將指定一個回調(diào)函數(shù),在這個函數(shù)中,我們將首先打印主題名稱,然后打印接收到的消息。
使用ESP32測試MQTT
現(xiàn)在要測試代碼,使用Arduino IDE將此代碼上載到ESP32并打開串行監(jiān)視器。
要訂閱和發(fā)布MQTT主題,將使用b谷歌Chrome應(yīng)用程序MQTTlens。你可以從這里下載應(yīng)用程序。
啟動此應(yīng)用程序并設(shè)置與MQTT代理的連接。要設(shè)置連接,單擊“連接”,并在下一個窗口中輸入您的連接詳細(xì)信息從云MQTT帳戶。
保存此連接,現(xiàn)在可以使用ESP8266在MQTT代理上訂閱和發(fā)布消息。
若要訂閱或發(fā)布消息,請?jiān)谟嗛喓桶l(fā)布選項(xiàng)中輸入主題名稱,并輸入默認(rèn)消息。
您的信息將顯示在串行監(jiān)視器上,如上圖所示。
因此,我們已經(jīng)成功地將MQTT代理與ESP32連接起來。請繼續(xù)關(guān)注我們更多令人驚嘆的物聯(lián)網(wǎng)項(xiàng)目。
本文編譯自iotdesignpro