zoukankan      html  css  js  c++  java
  • 快速开发MQTT(一)电子工程师眼中的MQTT

    转载:https://zhuanlan.zhihu.com/p/54669124

    文章首发于同名微信公众号:DigCore

    欢迎关注同名微信公众号:DigCore,及时获取最新技术博文。

    原文链接:

    对于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协议,实现物联网。

    更多原创技术干货,点击阅读原文。

    原文链接:


    ★★★★★推荐文章

    《【嵌入式编程】平台大小端存储差异解决办法》

    《嵌入式硬件通信接口-使用RingBuffer处理数据(二)详细设计过程》

    《嵌入式硬件通信接口-使用RingBuffer处理数据(一)》

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

    《快速开发MQTT(二)初识MQTT》

    《MQTT客户端搭建-最清晰的MQTT协议架构》

    《MQTT服务端搭建-最快方式验证自己开发的客户端》

    ★★★★★相似文章

    《嵌入式硬件通信接口协议-UART(五)数据包设计与解析》

    《嵌入式硬件通信接口协议-UART(四)设计起止式的应用层协议》

    《嵌入式硬件通信接口协议-UART(三)快速使用串口及应用》

    《嵌入式硬件通信接口协议-UART(二)不同电气规范下的标准》

    《嵌入式硬件通信接口协议-UART(一)协议基础》

    《嵌入式硬件通信接口协议-SPI(二)分层架构设计模拟接口》

    《嵌入式硬件通信接口协议-SPI(一)协议基础》

    ★★★★★扩展阅读

    《【硬件电路】AltiumDesigner18规则检查含义》

    《【硬件电路】N沟道、P沟道MOS管基本原理与应用案例》

  • 相关阅读:
    软件工程结课作业
    十三次作业
    十二次作业
    十一次作业
    十次作业
    找回感觉的练习
    CSS背景样式和列表样式
    盒子模型案例应用
    display属性
    margin外边距属性
  • 原文地址:https://www.cnblogs.com/CodeWorkerLiMing/p/11246853.html
Copyright © 2011-2022 走看看