一张图了解物联网,如何应用 mavlink 通信协议
MultiMCU EDU 2022-09-28

背景介绍:
在9012年,即便不知道什么是“物联网通信技术”肯定也听说过物联网三个字。
本文用浅显易懂的表达说一说:“物联”是怎么回事儿?
重点说一说:物与物之间的联系是依靠怎样的硬件和软件建立起来的,并介绍 mavlink 通信协议的用法。

一张图了解物联网

2018 年 02 月 27 日我看到了这张图片,觉得很形象,还保存下来发了朋友圈。
图片左侧是“物联”的基础,也是本文要说的部分。



想实现物与物的通信,并不需要多强的技术水平,只要概念清晰就可以一步一步做出来。

物与物的通信(硬件篇)

1、物与物通信常见硬件

(1) 有线连接的硬件:
串口、CAN、网线等。

(2) 无线连接的硬件:
nRF24L01、ESP8266(一种 wifi 模块)等。

与“打电话”类比,“有线硬件”就如同“固话”,“无线硬件”就如同“手机”。

不同的硬件之间有不同的物理连接(接线方式不一样),用“拨号按键”来类比不同的“物理连接方式”,就是:
固话拨号按的是实物按键。
智能手机拨号按是的屏幕(用软件实现的按键)。


2、底层通信协议(硬件驱动)

仍然与“打电话”类比,想要拨通电话就要知道对方的“电话号码”。
电话号码只是一串数字,不是硬件,正好可以用来类比不同硬件的底层通信协议

【问】通信协议不是软件吗?为什么放到硬件篇介绍呢?
【答】有以下两个原因,分别是:

第 1 个原因:
这里说的是“底层通信协议”,比如:SPI、I2C等。这些协议的作用是:
让硬件能够正确的收发数据,而不指定数据的内容
就如同电话号码,拨号的作用只是接通电话,建立通话双方的语音联系。并不限定双方交流的语言和内容。
硬件离开这些协议不能发挥作用,因此将“底层通信协议”划分在硬件篇介绍。

第 2 个原因:
现在很多单片机已经在“硬件层面”固化了这些协议,不需要再单独写这种底层通信协议的软件。比如:I2C就分为“硬件 I2C”和“软件模拟 I2C”。stm32 用 CubeMX 配置好“硬件 I2C”直接调用库内封装好的通信函数就行了,相当于硬件直接支持,所以这部分放在硬件篇。

物与物的通信(软件篇)

终于到本文重中之重的大亮点了。

1、软件通信协议是什么?

依然拿“打电话”类比,通过上文,我们已经有了电话、拨通了号码,下面就该交流了。

交流的基础:双方要用对方能听懂的语言,说对方能听懂的内容。放到物与物通信上,这就是软件通信协议干的事。

也就是说:软件通信协议规定了数据的排列方式。

按照指定规律排列的一串数据内容,我们称之为“通信报文”。

一个完整的软件通信协议包括:
(1) 规定通信报文的格式;
(2) 规定报文的编解码方法;
(3) 规定报文的校验方法(校验用于保证报文传输正确性)。


2、怎样得到软件通信代码?

在我没有接触到 mavlink 之前,一直是手写通信代码,自己设计报文。
现在想来,从前真是既烧脑又没效率。

mavlink 告诉我:代码是可以生成的,不用手写,省时省力。
mavlink 告诉我:通信协议是很多飞机上都验证过的,稳定可靠。

下面我就来说说 mavlink。

mavlink

这里,Sugar 本想写一篇《三平台(MDK5 IAR GCC)通用 mavlink 生成器出现了》的文章。
但 Sugar 觉得单写这个内容太骨感,还是把 mavlink 做为本文的一个重要组成部分来写更合适。

介绍 mavlink 的文章,百度一搜一大把。这里 Sugar 就不多说重复内容了,下面就干捞实用的说一说。

Sugar 的中使用 mavlink 做遥控信息传送,就以这个遥控的 mavlink 报文为例来讲解。

1、怎样使用三平台通用 mavlink 生成器


2、对于想研究 mavlink 通信协议的读者,Sugar 做了个 QGC 插件

3、mavlink 1.0 与 mavlink 2.0

mavlink 1.0 升级到 mavlink 2.0,Sugar 关注过的几个变化是:
(1) 扩展了 msgid,1.0 最多有 256 条 message,而 2.0 最多可达 16777216 条 message;
(2) 报文长度可动态申缩(按一定规律省去 0 值传输);
(3) 增加了 signature 签名,可进行报文加密;


在遥控车制作上,Sugar 选了 mavlink 1.0,原因是:
(1) 遥控车使用 nRF24L01 无线通信模块,硬件限制报文长度不能超过 32 个 Byte。而 mavlink 2.0 报文有效载荷(payload)之外的字节比 mavlink 1.0 多,用 mavlink 1.0 在此更合适。
(2) 就算再怎么玩,遥控车用到的 message 数量也不会超过 256,mavlink 1.0 足足够用。

4、怎样定制自己想要的 mavlink

(1) 确定要传输的数据有哪些;
(2) 明确各个数据的数据类型(uint8_t、uint16_t、float 等);
(3) 将数据写入 xml 文件,以遥控车为例,看下 xml 的内容:

(4) 按上面视频,生成目标代码即可。

5、怎样发送 mavlink 报文

6、接收 mavlink 报文后怎样处理

PS

本篇推文的目标读者是完全 0 基础的小白。

本篇区分讲述了“底层通信协议”和“通信报文协议”的差别,当读者跟人讨论“通信协议”时,一定要知道说的是哪个协议。

跟硬件工程师或写偏硬件驱动类软件的工程师谈“通信协议”,多半对方会理解为“底层通信协议”,如:SPI、I2C 等。

跟纯软件工程师谈“通信协议”,多半对方会理解为“通信报文协议”。

同样叫“通信协议”的东西,可能不是一样的东西,这是汉语多意词难以避免的问题,学习时心里要清楚。

对 Sugar 的 QGC 插件有兴趣的读者,可以按中所述方法联系 Sugar 获取源代码。




本文源自微信公众号:MultiMCU EDU,不代表用户或本站观点,如有侵权,请联系nick.zong@aspencore.com 删除!

声明: 本文转载自其它媒体或授权刊载,目的在于信息传递,并不代表本站赞同其观点和对其真实性负责,如有新闻稿件和图片作品的内容、版权以及其它问题的,请联系我们及时删除。(联系我们,邮箱:evan.li@aspencore.com )
0
评论
  • 相关技术文库
  • 工业
  • 安防
  • 航空
  • CAN
  • 基于PXI总线为的SAR天线平台测试模块设计

    PXI总线技术简介  PXI总线技术是NI发布的一种全新的开放性、模块化的仪器总线规范,是PCI总线在仪器领域的扩展。它将CompactPCI规范定义的PCI总线技术发展成适合于试验、测量与数据采集场合应用的机械、电气和软件规范。PXI总线与台式PCI规范具有完全相同的性能,是在PCI总线内核技术上增加了成熟的技术规范和要求形成的。它通过增加用于多板同步的触发总线和参考时钟、用于进行精确定时的星形...

    12小时前
  • 并联电容器的故障处理

    1、并联电容器的故障判断及原因分析(1)渗漏油。并联电容器渗漏油是一种常见的现象,主要是由于产品质量不良,运行维护不当,以及长期运行缺乏维修导致外皮生锈腐蚀而造

    昨天
  • 变压器的日常检修

    一、电力变压器常见故障及原因1)短路损坏事故变压器在运行中遭受的各种短路事故,如单相对地、两相间或两相对地、三相之间的短路,其中以出口处短路最为严重。日常巡视检

    昨天
  • 高压试验变压器如何看质量好坏?

    试验变压器是发供电局部门及科研单位等广大用户的用来做交流耐压试验的基本试验设备,通过了国家质量监督局的标准,用于对各种电气产品、电器元件、绝缘材料等进行规定电压

    昨天
  • SPI、I2C、UART三种串行总线协议的区别和SPI接口介绍,以及SPI接口详解

      SPI、I2C、UART三种串行总线协议的区别  第一个区别当然是名字:  SPI(SerialPeripheralInterface:串行外设接口);  

    11-24
  • 史上最全:主板上常见的接口信号定义与分类详解

      cpu与外部设备、存储器的连接和数据交换都需要通过接口设备来实现,前者被称为I/O接口,而后者则被称为存储器接口。存储器通常在cpu的同步控制下工作,接口电

    11-24
  • 容量相同质量不同,关于SSD这些接口你要懂

    怎样去DIY一台主机呢?它可以满足自己的工作、游戏需求,还要颜值高、噪音小、最重要的是价格要便宜,质量要好。本文为让装机零基础的朋友可以轻松了解,所以尽量避免专

    11-24
  • ESD原理保护及典型接口选型应用方案解析

      ESD保护对高密度、小型化和具有复杂功能的电子设备而言具有重要意义。本文探讨了采用TVS二极管防止ESD时,最小击穿电压和击穿电流、最大反向漏电流和额定反向

    11-24
  • 长时间CAN数据记录的解决方案

      经常有人问到:“我想长时间记录CAN数据,有什么办法可以实现?”这里说一说几种长时间记录CAN数据的方法。  一、简单快捷——USBCAN卡  但凡使用过C

    11-24
  • 220V交流单相电机启动方式以及接线图

      220V交流单相电机起动方式第一种,分相起动式,如图1所示,系由辅助起动绕组来辅助启动,其起动转矩不大。运转速率大致保持定值。主要应用于电风扇,空调风扇电动

    11-24
  • 电气触头的分类、结构和应用

      (1)电气触头的分类  电气触头按其接触方式可分为以下三种类型  1)固定连接触头。指被接触连接的导体之间不能相对移动的电气触头。如母线接头、电气设备的引线

    11-24
  • ADXL345采用I2C模式与tms320vc5509A接口

      VC5509A包含I2C外设接口,可以方便的与ADXL345通信。在调试中,使用了实验室自制的DSP主板SDUSTVC5509AV1.1。该板的JP2扩展接

    11-24
下载排行榜
更多
广告