0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

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

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

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

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

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

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

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 物联网
    +关注

    关注

    2900

    文章

    44032

    浏览量

    370047
  • 电子工程
    +关注

    关注

    1

    文章

    60

    浏览量

    17157
  • MQTT协议
    +关注

    关注

    0

    文章

    96

    浏览量

    5334
收藏 人收藏

    评论

    相关推荐

    如何快速搭建MQTT协议的测试环境

    大家好,我是麦叔,之前有小伙伴建议出期如何快速搭建MQTT协议的测试环境,因为自己写的mqtt测试工具总是有这样那样的问题。
    的头像 发表于 12-26 09:28 1913次阅读
    如何<b class='flag-5'>快速</b>搭建<b class='flag-5'>一</b>个<b class='flag-5'>MQTT</b>协议的测试环境

    MQTT启动太慢的原因?

    我发现MQTT启动太慢:从调用esp_mqtt_client_start()函数,到返回连接成功,这个过程耗时7秒钟左右。我让服务器端工程师翻查下登录日志,结果发现从登录连接开始到登
    发表于 06-14 07:46

    【直播预热】Harmony MQTT/CoAP应用指南——火热报名中

    软件工程师,企业内训讲师。 擅长Linux系统、微控制器、Android系统、Web后端领域的系统设计和软件开发。 课程介绍:本课程由浅入深,以HarmonyOS物联网应用开发为主线,为大家详细讲解
    发表于 12-09 17:18

    工程师眼中的“嵌入式系统”是什么样的?

    工程师眼中的“嵌入式系统”是什么样的?
    发表于 12-24 06:45

    OpenHarmony开发MQTT讲解

    ;#125;小熊派开发MQTT客户端代码直循环发送主题为pubtopic的信息,信息内容为("message number %d", count),每次信息count++;同时
    发表于 11-16 12:05

    MQTT启动太慢的原因?

    我发现MQTT启动太慢:从调用esp_mqtt_client_start()函数,到返回连接成功,这个过程耗时7秒钟左右。我让服务器端工程师翻查下登录日志,结果发现从登录连接开始到登
    发表于 02-13 06:01

    如何使用Nodemcu的Mqtt开关?

    我是此类编程的初学者,也是名试图熟悉物联网系统的机械工程师。首先,我想为我的 nodemcu V2 编写代码,以在打开和关闭开关时发布 mqtt 有效载荷它连接在 GPIO 引脚 2 和地之间。我
    发表于 02-24 08:58

    MQTT启动太慢的原因?怎么解决?

    我发现MQTT启动太慢:从调用esp_mqtt_client_start()函数,到返回连接成功,这个过程耗时7秒钟左右。我让服务器端工程师翻查下登录日志,结果发现从登录连接开始到登
    发表于 03-06 08:55

    快速开发MQTT(二)初识MQTT

    基本介绍 在上篇文章《快速开发MQTT电子工程师眼中
    的头像 发表于 01-10 11:15 5278次阅读

    文教你快速读懂MQTT网关

    MQTT种发布(publish)/订阅(subscribe)协议,MQTT协议采用发布/订阅模式,所有的物联网终端都通过TCP连接到云端,云端通过主题的方式管理各个设备关注的通讯内容,负责将设
    发表于 03-24 16:09 1753次阅读

    MQTT网关让西门子S7-300快速接入MQTT平台

    MQTT网关让西门子S7-300快速接入MQTT平台
    发表于 11-10 16:47 1426次阅读

    OpenHarmony开发MQTT讲解

    MQTT这个名称大家都不陌生,物联网的开发必然会遇到MQTT相关知识的应用。那么什么是MQTT?它有什么特点?它能解决什么问题?它是如何工作的?OpenAtom OpenHarmony
    的头像 发表于 11-15 22:50 1021次阅读

    MQTT客户端快速入门指南 按键按下

    MQTT客户端快速入门指南 按键按下
    发表于 07-03 18:34 0次下载
    <b class='flag-5'>MQTT</b>客户端<b class='flag-5'>快速</b>入门指南 按键按下

    如何使用OneNET平台的MQTT功能?

    ;设备进行模拟实际使用情况。推荐阅读《设备如何使用华为云接入MQTT上报数据》《MQTT设备连接与通讯+LoRaWAN网关产品快速入门教程》OneNET平台
    的头像 发表于 10-20 08:21 1095次阅读
    如何使用OneNET平台的<b class='flag-5'>MQTT</b>功能?

    MQTT是什么 MQTT特点

    MQTT 是 Message Queuing Telemetry Transport 的缩写,是种轻量级的、基于发布/订阅模式的物联网通信协议。 它具有以下特点: •简单易用:MQTT 的协议规范
    的头像 发表于 11-09 15:20 2333次阅读