《電子技術(shù)應(yīng)用》
您所在的位置:首頁(yè) > 模擬設(shè)計(jì) > 業(yè)界動(dòng)態(tài) > 快速開(kāi)發(fā)MQTT(一)電子工程師眼中的MQTT

快速開(kāi)發(fā)MQTT(一)電子工程師眼中的MQTT

2018-12-18
關(guān)鍵詞: MQTT UART TCPIP

對(duì)于MQTT的介紹,官方文檔是直接進(jìn)入主題,討論其架構(gòu)模型,對(duì)于未曾接觸網(wǎng)絡(luò)技術(shù)的電子工程師來(lái)說(shuō),這第一章都已經(jīng)是略微難懂的章節(jié),更別提繼續(xù)往下看了。因此,此文是站在電子工程師的角度介紹MQTT協(xié)議,為方便理解和描述,肯定沒(méi)有計(jì)算機(jī)網(wǎng)絡(luò)方面專業(yè)術(shù)語(yǔ)那么準(zhǔn)確。

wx_article_20181215122536_zsJVj6.jpg

作為一名電子工程師,去理解網(wǎng)絡(luò)工程、軟件工程這些范疇的技術(shù),有時(shí)候時(shí)非常困難的,尤其是做硬件,很多東西感覺(jué)很抽象,又很空洞。

日常工作中,電子工程師面對(duì)更多的是UART、SPI、IIC、USB,對(duì)于觸手可及的這些外設(shè)接口協(xié)議,我們一般更多關(guān)注的是他們的信號(hào)時(shí)序、電氣特性、傳輸速率等參數(shù)。并且在開(kāi)發(fā)時(shí),這些外設(shè)接口能夠看得見(jiàn)摸得著,知道是哪兩個(gè)或者哪幾個(gè)設(shè)備之間進(jìn)行連接。

MQTT基于TCP連接進(jìn)行的網(wǎng)絡(luò)通信。

都說(shuō)“基于TCP連接”的通信,那到底啥是“TCP連接”呢?這個(gè)需要了解到TCP/IP參考模型中的4層的定義:

wx_article_20181215122536_0w5Ic7.jpg

TCP/IP參考模型圖

MQTT是在TCP連接后的基礎(chǔ)上進(jìn)行通信的,那么在此可以簡(jiǎn)單認(rèn)為,TCP就是個(gè)“外設(shè)接口”,就像UART、SPI這樣,作為傳輸層,就負(fù)責(zé)把數(shù)據(jù)收發(fā)。

而在實(shí)際在使用過(guò)程中,MQTT數(shù)據(jù)是帶了各種“格式”的條條框框進(jìn)行封裝,這些條條框框的封裝就是在應(yīng)用層定義和實(shí)現(xiàn)的。

應(yīng)用層的協(xié)議利用TCP這種“接口”進(jìn)行收發(fā)數(shù)據(jù)時(shí),為了區(qū)別于不同應(yīng)用程序,而定義了應(yīng)用協(xié)議,類似于MQTT、HTTP、FTP等。

利用工具模擬和對(duì)比,串口連接后收發(fā)和TCP連接后收發(fā)的情況。

這里使用的是單片機(jī)開(kāi)發(fā)的時(shí)候最常用到的一個(gè)串口助手SSCOM V5.10a,帶有TCP連接功能。首先看看電子工程師非常熟悉的串口通信界面:

wx_article_20181215122536_sCBqfQ.jpg

串口通信時(shí)的數(shù)據(jù)交互截圖

同樣的,切換到TCP連接的方式,根據(jù)如下截圖配置TCP服務(wù)器和TCP客戶端:

wx_article_20181215122536_U9KwZe.jpg

TCP連接后通信時(shí)的數(shù)據(jù)交互截圖

可見(jiàn)TCP和串口類似,在連接后就可以對(duì)數(shù)據(jù)進(jìn)行傳輸了。并且和串口一樣,在傳輸時(shí),數(shù)據(jù)是被完全透?jìng)鞒鋈サ?,而沒(méi)有被封裝成任何格式(只看TCP層),可見(jiàn)平時(shí)在底層開(kāi)發(fā)時(shí)使用串口通信都沒(méi)有上升到應(yīng)用層協(xié)議,基本都是裸數(shù)據(jù)傳輸?shù)模词拐f(shuō)有協(xié)議那基本都是私有協(xié)議,且是自定義的。

可是怎樣能夠?qū)崿F(xiàn)連接?

MQTT協(xié)議是基于TCP連接進(jìn)行通信的,TCP可謂是比嵌入式外設(shè)要復(fù)雜些,不是簡(jiǎn)單一個(gè)硬件實(shí)現(xiàn)就可以了的。

串口連接,最少需要的3根數(shù)據(jù)線(TxD,RxD,GND),然后設(shè)置兩端設(shè)備的波特率、數(shù)據(jù)位、校驗(yàn)位、停止位,即可完成連接。

而TCP連接,需要往下的多個(gè)層協(xié)議來(lái)實(shí)現(xiàn),然后就是配置IP地址、端口。實(shí)現(xiàn)方式有很多,有線方式可以用集成了網(wǎng)卡芯片的單片機(jī)或者以太網(wǎng)轉(zhuǎn)串口、SPI模塊等,無(wú)線的方式可以用集成了wifi的單片機(jī)或者wifi轉(zhuǎn)串口、SPI模塊等。

TCP連接實(shí)現(xiàn)方式很簡(jiǎn)單,就是芯片搭模塊,而實(shí)現(xiàn)過(guò)程卻是很復(fù)雜,對(duì)于應(yīng)用開(kāi)發(fā)的電子工程師,需要做的是能夠利用低價(jià)格高效益的解決方案來(lái)實(shí)現(xiàn)MQTT協(xié)議,實(shí)現(xiàn)物聯(lián)網(wǎng)。


本站內(nèi)容除特別聲明的原創(chuàng)文章之外,轉(zhuǎn)載內(nèi)容只為傳遞更多信息,并不代表本網(wǎng)站贊同其觀點(diǎn)。轉(zhuǎn)載的所有的文章、圖片、音/視頻文件等資料的版權(quán)歸版權(quán)所有權(quán)人所有。本站采用的非本站原創(chuàng)文章及圖片等內(nèi)容無(wú)法一一聯(lián)系確認(rèn)版權(quán)者。如涉及作品內(nèi)容、版權(quán)和其它問(wèn)題,請(qǐng)及時(shí)通過(guò)電子郵件或電話通知我們,以便迅速采取適當(dāng)措施,避免給雙方造成不必要的經(jīng)濟(jì)損失。聯(lián)系電話:010-82306118;郵箱:aet@chinaaet.com。