日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

STM32 基础系列教程 40 - Lwip_mqtt

發布時間:2025/4/5 编程问答 22 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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編譯代碼。本示例所用的開發板及部分原理圖:

?

?

?

  • 關于CUBEMX工具及KEIL工具的操作將不再細講,如果還有不熟悉的可以查看之前的教程文檔。下面直接介紹工程配置:
  • ?

  • 系統時鐘樹
  • ?

  • 網口配置
  • 高級參數項默認是LAN8742,開發板使用的是LAN8720,它兩寄存器基本一樣,所以本實驗對高級參數不作修改。

    ?

  • RCC配置
  • SYS配置
  • ?

  • Lwip配置
  • ?

  • 引腳配置
  • IO腳按原理圖來配置即可,但這時要注意一點是網口芯片有個復位引腳PD3在程序運行時要配邁高,可參考如下:

  • 堆棧配置,本工程較大,可以適當加大堆棧大小:
  • ?

  • 工程代碼
  • 在工程中加入Mqtt協議棧,如果沒有需先安裝:
  • 安裝好后就可以加入到我們的工程中:

    加好之后工程樹下增加IoT Utility目錄:

    ?

  • 在工程樹下新建“myMqttClient”文件夾,并加入我們事先準備好的mqtt_client.c及transport.c文件,其中transport.c是實現Mqtt協議數據收發的具體實現,mqtt_client.c文件實現TCP連接與Mqtt工作狀態機。
  • 做好上述操作后,就可以在main.c中加入以下代碼來實現本實現的測試功能:
  • 同樣為了實樣調試信息的打印輸出,我們也要實現putc函數

  • 最后為了我們的Mqtt能成功跑起來,我們在Lwipopts.h中手動設置MEMP_NUM_SYS_TIMEOUT的數為6:
  • ?

  • 編譯工程,下載代碼, ip為路由器自動分配,如果設備網口及LWIP成功運行,在路由器列表中同樣也應該可以看到我們的設備,同時應該是可以PING通的:
  • (注:在使用探索者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的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。