作為一名電子工程師,去理解網絡工程、軟件工程這些范疇的技術,有時候時非常困難的,尤其是做硬件,很多東西感覺很抽象,又很空洞。
日常工作中,電子工程師面對更多的是UART、SPI、IIC、USB,對于觸手可及的這些外設接口協議,我們一般更多關注的是他們的信號時序、電氣特性、傳輸速率等參數。并且在開發時,這些外設接口能夠看得見摸得著,知道是哪兩個或者哪幾個設備之間進行連接。
MQTT基于TCP連接進行的網絡通信。
都說“基于TCP連接”的通信,那到底啥是“TCP連接”呢?(官網http://www.tcpipguide.com/)這個需要了解到TCP/IP參考模型中的4層的定義:
TCP/IP參考模型圖
MQTT是在TCP連接后的基礎上進行通信的,那么在此可以簡單認為,TCP就是個“外設接口”,就像UART、SPI這樣,作為傳輸層,就負責把數據收發。
而在實際在使用過程中,MQTT數據是帶了各種“格式”的條條框框進行封裝,這些條條框框的封裝就是在應用層定義和實現的。
應用層的協議利用TCP這種“接口”進行收發數據時,為了區別于不同應用程序,而定義了應用協議,類似于MQTT、HTTP、FTP等。
利用工具模擬和對比,串口連接后收發和TCP連接后收發的情況。
這里使用的是單片機開發的時候最常用到的一個串口助手SSCOM V5.10a(http://www.daxia.com/sscom/sscom5.13.1.rar),帶有TCP連接功能。首先看看電子工程師非常熟悉的串口通信界面:
串口通信時的數據交互截圖
同樣的,切換到TCP連接的方式,根據如下截圖配置TCP服務器和TCP客戶端:
TCP連接后通信時的數據交互截圖
可見TCP和串口類似,在連接后就可以對數據進行傳輸了。并且和串口一樣,在傳輸時,數據是被完全透傳出去的,而沒有被封裝成任何格式(只看TCP層),可見平時在底層開發時使用串口通信都沒有上升到應用層協議,基本都是裸數據傳輸的,即使說有協議那基本都是私有協議,且是自定義的。
可是怎樣能夠實現連接?
MQTT協議是基于TCP連接進行通信的,TCP可謂是比嵌入式外設要復雜些,不是簡單一個硬件實現就可以了的。
串口連接,最少需要的3根數據線(TxD,RxD,GND),然后設置兩端設備的波特率、數據位、校驗位、停止位,即可完成連接。
而TCP連接,需要往下的多個層協議來實現,然后就是配置IP地址、端口。實現方式有很多,有線方式可以用集成了網卡芯片的單片機或者以太網轉串口、SPI模塊等,無線的方式可以用集成了wifi的單片機或者wifi轉串口、SPI模塊等。
TCP連接實現方式很簡單,就是芯片搭模塊,而實現過程卻是很復雜,對于應用開發的電子工程師,需要做的是能夠利用低價格高效益的解決方案來實現MQTT協議,實現物聯網。
★★★★★推薦文章
《【嵌入式編程】平臺大小端存儲差異解決辦法》
《嵌入式硬件通信接口-使用RingBuffer處理數據(二)詳細設計過程》
《嵌入式硬件通信接口-使用RingBuffer處理數據(一)》
《快速開發MQTT(一)電子工程師眼中的MQTT》
《快速開發MQTT(二)初識MQTT》
《MQTT客戶端搭建-最清晰的MQTT協議架構》
《MQTT服務端搭建-最快方式驗證自己開發的客戶端》
★★★★★相似文章
《嵌入式硬件通信接口協議-UART(五)數據包設計與解析》
《嵌入式硬件通信接口協議-UART(四)設計起止式的應用層協議》
《嵌入式硬件通信接口協議-UART(三)快速使用串口及應用》
《嵌入式硬件通信接口協議-UART(二)不同電氣規范下的標準》
《嵌入式硬件通信接口協議-UART(一)協議基礎》
《嵌入式硬件通信接口協議-SPI(二)分層架構設計模擬接口》
《嵌入式硬件通信接口協議-SPI(一)協議基礎》
★★★★★擴展閱讀
《【硬件電路】AltiumDesigner18規則檢查含義》
《【硬件電路】N溝道、P溝道MOS管基本原理與應用案例》
文章首發于同名微信公眾號:DigCore
歡迎關注同名微信公眾號:DigCore,及時獲取最新技術博文。
原文鏈接:https://mp.weixin.qq.com/s/hY3y0EpWLeya3YkWwvU1lQ
(說明:此處的文章從微信公眾號拷貝而來,圖片或者排版上可能存在一定的瑕疵,歡迎點擊原文鏈接閱讀)
-
物聯網
+關注
關注
2909文章
44704瀏覽量
374147 -
電子工程
+關注
關注
1文章
62瀏覽量
17192 -
MQTT協議
+關注
關注
0文章
97瀏覽量
5428
發布評論請先 登錄
相關推薦
評論