STM32 基础系列教程 40 - Lwip_mqtt
前言
MQTT(Message Queuing Telemetry Transport,消息隊列遙測傳輸協議),是一種基于發布/訂閱(publish/subscribe)模式的"輕量級"通訊協議,該協議構建于TCP/IP協議上,由IBM在1999年發布。MQTT最大優點在于,可以以極少的代碼和有限的帶寬,為連接遠程設備提供實時可靠的消息服務。作為一種低開銷、低帶寬占用的即時通訊協議,使其在物聯網、小型設備、移動應用等方面有較廣泛的應用。
MQTT是一個基于客戶端-服務器的消息發布/訂閱傳輸協議。MQTT協議是輕量、簡單、開放和易于實現的,這些特點使它適用范圍非常廣泛。在很多情況下,包括受限的環境中,如:機器與機器(M2M)通信和物聯網(IoT)。其在,通過衛星鏈路通信傳感器、偶爾撥號的醫療設備、智能家居、及一些小型化設備中已廣泛使用。
物聯網這么火,不會點MQTT怎么行。本節我們將學習stm32 + LWIP構建一下MQTT客端,學會使用MQTT給云/服務器(本節為了演示用本地服務器來演示),本節的示例修改目標地址有相關主題后可直接連接阿里云,但要實現與阿里云服務器真實的通信還需用戶注冊阿里云平臺開發者賬號,以使用阿里去提供的SDK(后期有教程推出)。
?
示例詳解
基于硬件平臺: 正點源子的stm32f4 探索者開發板,主要使用了SDIO文件系統以及以太網接口, MCU 的型號是?STM32F4ZET6, 使用stm32cubemx 工具自動產生的配置工程,使用KEIL5編譯代碼。本示例所用的開發板及部分原理圖:
?
?
?
?
?
高級參數項默認是LAN8742,開發板使用的是LAN8720,它兩寄存器基本一樣,所以本實驗對高級參數不作修改。
?
?
?
IO腳按原理圖來配置即可,但這時要注意一點是網口芯片有個復位引腳PD3在程序運行時要配邁高,可參考如下:
?
安裝好后就可以加入到我們的工程中:
加好之后工程樹下增加IoT Utility目錄:
?
同樣為了實樣調試信息的打印輸出,我們也要實現putc函數
?
(注:在使用探索者F4調試時,下載或仿真調試時先不要PC串口工具連接上開發板的USB_232接口,有可能導致程序運行不了--boot0引腳電平不對,可以先跑起來再在PC串口工具上連接相應端口!!)
在mqtt_client.h文件中定義了本地MQtt服務器的IP地址為192.168.1.100(PC IP)如下:
燒錄程序打開本地MQTT測試服務器軟件,然后按下開發板上復位鍵,可以看到服務器軟件上接收MQTT連接信處:
邊接后,會每5秒上發一些數據到服務器:
在服務器發窗口輸入發送內容(如上圖),打開串口工具,接上開發板的USB_232接口,然點Send,可以在串口工具中看到服務器發給客戶端的數據:
到此stm32+lwip的mqtt服務構建實驗就算完成了,本節只演示了簡單的數據收發,真正的MQTT通信內容一般是JSON數據,關于JSON數據的使用(組包與解析)我們后面再講。
OK,本期實驗完成!下期見!同時如果大家有什么疑問或是有想了解的其它內容,也歡迎大家留言!!最后喜歡這個公眾號的同學們記得加關注了,會有不定期技術干貨推出!!
文中源碼資料下載,在公眾號里給十三發消息:
下載|STM32基礎系列教程40
?
關注十三公眾號
?
總結
以上是生活随笔為你收集整理的STM32 基础系列教程 40 - Lwip_mqtt的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: STM32 基础系列教程 39 - Lw
- 下一篇: STM32 基础系列教程 41 – SD