快速开发MQTT(一)电子工程师眼中的MQTT
对于MQTT的介绍,官方文档是直接进入主题,讨论其架构模型,对于未曾接触网络技术的电子工程师来说,这第一章都已经是略微难懂的章节,更别提继续往下看了。因此,此文是站在电子工程师的角度介绍MQTT协议,为方便理解和描述,肯定没有计算机网络方面专业术语那么准确。
作为一名电子工程师,去理解网络工程、软件工程这些范畴的技术,有时候时非常困难的,尤其是做硬件,很多东西感觉很抽象,又很空洞。
日常工作中,电子工程师面对更多的是UART、SPI、IIC、USB,对于触手可及的这些外设接口协议,我们一般更多关注的是他们的信号时序、电气特性、传输速率等参数。并且在开发时,这些外设接口能够看得见摸得着,知道是哪两个或者哪几个设备之间进行连接。
MQTT基于TCP连接进行的网络通信。
都说“基于TCP连接”的通信,那到底啥是“TCP连接”呢?这个需要了解到TCP/IP参考模型中的4层的定义:
TCP/IP参考模型图
MQTT是在TCP连接后的基础上进行通信的,那么在此可以简单认为,TCP就是个“外设接口”,就像UART、SPI这样,作为传输层,就负责把数据收发。
而在实际在使用过程中,MQTT数据是带了各种“格式”的条条框框进行封装,这些条条框框的封装就是在应用层定义和实现的。
应用层的协议利用TCP这种“接口”进行收发数据时,为了区别于不同应用程序,而定义了应用协议,类似于MQTT、HTTP、FTP等。
利用工具模拟和对比,串口连接后收发和TCP连接后收发的情况。
这里使用的是单片机开发的时候最常用到的一个串口助手SSCOM V5.10a,带有TCP连接功能。首先看看电子工程师非常熟悉的串口通信界面:
串口通信时的数据交互截图
同样的,切换到TCP连接的方式,根据如下截图配置TCP服务器和TCP客户端:
TCP连接后通信时的数据交互截图
可见TCP和串口类似,在连接后就可以对数据进行传输了。并且和串口一样,在传输时,数据是被完全透传出去的,而没有被封装成任何格式(只看TCP层),可见平时在底层开发时使用串口通信都没有上升到应用层协议,基本都是裸数据传输的,即使说有协议那基本都是私有协议,且是自定义的。
可是怎样能够实现连接?
MQTT协议是基于TCP连接进行通信的,TCP可谓是比嵌入式外设要复杂些,不是简单一个硬件实现就可以了的。
串口连接,最少需要的3根数据线(TxD,RxD,GND),然后设置两端设备的波特率、数据位、校验位、停止位,即可完成连接。
而TCP连接,需要往下的多个层协议来实现,然后就是配置IP地址、端口。实现方式有很多,有线方式可以用集成了网卡芯片的单片机或者以太网转串口、SPI模块等,无线的方式可以用集成了wifi的单片机或者wifi转串口、SPI模块等。
TCP连接实现方式很简单,就是芯片搭模块,而实现过程却是很复杂,对于应用开发的电子工程师,需要做的是能够利用低价格高效益的解决方案来实现MQTT协议,实现物联网。
图片新闻
技术文库
最新活动更多
-
即日-1.16立即报名>>> 【在线会议】ImSym 开启全流程成像仿真时代
-
即日-1.20限时下载>>> 爱德克(IDEC)设备及工业现场安全解决方案
-
即日-1.24立即参与>>> 【限时免费】安森美:Treo 平台带来出色的精密模拟
-
即日-1.31立即参与>>> 【限时免费下载】村田白皮书
-
即日--2.7了解详情>> 【森海塞尔】TeamConnect系列产品——提升视听之体验,塑造音频之未来
-
限时免费立即试用>> 燧石技术,赋光智慧,超越感知
推荐专题
发表评论
请输入评论内容...
请输入评论/评论长度6~500个字
暂无评论
暂无评论