快速开发MQTT(一)电子工程师眼中的MQTT

描述

对于MQTT的介绍,官方文档是直接进入主题,讨论其架构模型,对于未曾接触网络技术的电子工程师来说,这第一章都已经是略微难懂的章节,更别提继续往下看了。因此,此文是站在电子工程师的角度介绍MQTT协议,为方便理解和描述,肯定没有计算机网络方面专业术语那么准确。

作为一名电子工程师,去理解网络工程、软件工程这些范畴的技术,有时候时非常困难的,尤其是做硬件,很多东西感觉很抽象,又很空洞。

日常工作中,电子工程师面对更多的是UART、SPI、IIC、USB,对于触手可及的这些外设接口协议,我们一般更多关注的是他们的信号时序、电气特性、传输速率等参数。并且在开发时,这些外设接口能够看得见摸得着,知道是哪两个或者哪几个设备之间进行连接。

MQTT基于TCP连接进行的网络通信。

都说“基于TCP连接”的通信,那到底啥是“TCP连接”呢?(官网http://www.tcpipguide.com/)这个需要了解到TCP/IP参考模型中的4层的定义:

MQTT协议

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连接功能。首先看看电子工程师非常熟悉的串口通信界面:

MQTT协议

串口通信时的数据交互截图

同样的,切换到TCP连接的方式,根据如下截图配置TCP服务器和TCP客户端:

MQTT协议

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

(说明:此处的文章从微信公众号拷贝而来,图片或者排版上可能存在一定的瑕疵,欢迎点击原文链接阅读)

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
评论(0)
发评论
DigCore 2019-01-08
0 回复 举报
文章首发于同名微信公众号:DigCore欢迎关注同名微信公众号:DigCore,及时获取最新技术博文。原文链接:https://mp.weixin.qq.com/s/hY3y0EpWLeya3YkWwvU1lQ(说明:此处的文章从微信公众号拷贝而来,图片或者排版上可能存在一定的瑕疵,欢迎点击原文链接阅读) 收起回复

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分