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