luck_horse
前言MQTT是IBM開發(fā)的一個即時通訊協(xié)議,面向M2M和物聯(lián)網(wǎng)的連接,采用輕量級發(fā)布和訂閱消息傳輸機制,并且有可能成為物聯(lián)網(wǎng)的重要組成部分。 ESP8266是一款物美價廉的Wi-Fi芯片,集成Tensilica L106 鉆石系列的32 位處理器和片上SRAM,多達17 個GPIO口,并擁有IIC、IIS、UART、PWM、IR遙控等片上資源。 ESP8266還提供官方的軟件開發(fā)開發(fā)包(SDK),目前最新版本是「ESP8266 NONOS SDK V2.0.0」。 這篇文章主要講解如何使用ESP8266(基于NONS_SDK_v2.0)作為MQTT客戶端,并連上在本地電腦搭建的MQTT服務(wù)器。 開發(fā)環(huán)境首先簡單說明一下博主的開發(fā)環(huán)境: - ESP8266開發(fā)環(huán)境:ESP8266 IDE 2.0
- ESP8266 SDK版本:esp8266_nonos_sdk_v2.0.0_16_08_10_0
- MQTT服務(wù)器:Apollo 1.7.1(本地搭建)
- 操作系統(tǒng):64位 Win10系統(tǒng)
- ESP8266開發(fā)板:NodeMCU(4MB Flash)
提醒閱讀本教程時,如果有使用esp8266_nonos_sdk_v2.0.0的開發(fā)經(jīng)驗,會更輕松的使用本教程。如果遇到代碼編譯出錯、燒寫下載不行以及下載后出現(xiàn)異常的問題,請先參考其他資料再繼續(xù)本文。 導(dǎo)入工程本教程基于ESP8266 IDE 2.0,如果讀者使用一樣的環(huán)境,那么步驟1~4就好理解 - 在這個文件中,有幾個宏定義可能需要修改的:
MQTT_HOST:MQTT服務(wù)器地址MQTT_PORT:MQTT服務(wù)器端口MQTT_USER:MQTT服務(wù)器用戶名MQTT_PASS:MQTT服務(wù)器密碼STA_SSID:WI-FI帳號STA_PASS:WI-FI密碼注意 還有一個最重要的宏定義——CFG_HOLDER,因為這個MQTT示例在ESP8266運行過一次后會把這些信息保存到FLASH中,如果要繼續(xù)修改這些信息,記得要修改CFG_HOLDER這個宏定義,改成另一個數(shù)值即可。
CFG_HOLDER作的用是:在CFG_Load函數(shù)中,如果發(fā)現(xiàn)從FLASH讀取出來的CFG_HOLDER數(shù)值和宏定義的不一樣,則會更新這些信息,并保存到FLASH中。不修改CFG_HOLDER的話可能會發(fā)覺明明用戶名和密碼都正確但是就是連接不上去。
在這個文件中,有幾個宏定義可能需要修改的:
MQTT_HOST:MQTT服務(wù)器地址 MQTT_PORT:MQTT服務(wù)器端口 MQTT_USER:MQTT服務(wù)器用戶名 MQTT_PASS:MQTT服務(wù)器密碼 STA_SSID:WI-FI帳號 STA_PASS:WI-FI密碼 注意 還有一個最重要的宏定義——CFG_HOLDER,因為這個MQTT示例在ESP8266運行過一次后會把這些信息保存到FLASH中,如果要繼續(xù)修改這些信息,記得要修改CFG_HOLDER這個宏定義,改成另一個數(shù)值即可。
CFG_HOLDER作的用是:在CFG_Load函數(shù)中,如果發(fā)現(xiàn)從FLASH讀取出來的CFG_HOLDER數(shù)值和宏定義的不一樣,則會更新這些信息,并保存到FLASH中。不修改CFG_HOLDER的話可能會發(fā)覺明明用戶名和密碼都正確但是就是連接不上去。
修改代碼根據(jù)上面分析,下面我們就可以修改示例代碼: - 把STA_SSID和STA_PASS修改為自己的WiFI名和密碼;
- 修改MQTT_USER和MQTT_PASS為對應(yīng)的MQTT服務(wù)器的用戶名和密碼,Apollo服務(wù)器默認(rèn)是admin和password;
- 修改MQTT_HOST和MQTT_PORT為MQTT服務(wù)器IP和PORT,目前是使用本地的MQTT服務(wù)器,所以是修改為自己電腦的IP和61613端口,PORT是整型值;
- 根據(jù)MQTT服務(wù)器的協(xié)議不同,可能需要使用MQTT v3.1.1版本,所以把PROTOCOL_NAMEv31注釋掉,使用PROTOCOL_NAMEv311。源碼的PROTOCOL_NAMEv311前面沒有#define,自己加上就行。
- 最后,修改CFG_HOLDER,以讓這些配置生效,直接給原來CFG_HOLDER定義的數(shù)值加1即可。
編譯下載編譯,查看Console窗口,如果輸出 那說明代碼已經(jīng)編譯成功。另外要注意,ESP8266 SDK v2.0版本生成的eagle.irom0text.bin燒寫起始地址是0x10000,而之前的版本燒寫地址是0x40000;eagle.flash.bin還是0x00000。由于博主使用的是4MB Flash的ESP8266,所以也建議讀者先確定手頭的ESP8266是不是4MB Flash(即32Mbit Flash,注意單位!4MB=32Mbit,F(xiàn)lash一般是以bit計算!) 另外如果Problems窗口報Errors的,只要Console窗口編譯通過,就可以不用管。 下載配置,僅供參考:
其他全部資料51hei下載地址:
ESP8266_MQTT.7z
(6.09 MB, 下載次數(shù): 105)
2019-7-23 04:02 上傳
點擊文件名下載附件
mqtt 下載積分: 黑幣 -5
|