无人机遥测数传通信链路
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
无人机数传模块简介
在多旋翼无人机上常常会用到的433MHZ/915MHZ数传模块,也常被叫做“数传电台”、“无线数传模块”、“无线电遥测”等。
它是利用数字信号处理技术(Digital Signal Processing,简称DSP)和无线电技术(Radio Engineering)来实现稳定可靠的数据传输功能。
由于采用了DSP技术,使得数传这种通讯媒介具有很优异的性能以及备广泛应用于各个行业。
数传抗干扰能力强,受噪声影响小且可以通过校验等方式滤除干扰信息,对器件和电路的差异不敏感,最大的特点是可以多次再
生恢复而不降低质量,还具有易于处理、调度灵活、高质量、高可靠性、维护方便等特点。
数传作为和飞控的无线数据交互工具,可以把无人机的实时状态信息传回到地面接收装置,如电机转速、电池电压、实时高度、GPS位置、姿态角度等,这些信息可以供爱好者或开发者更好的对无人机进行各方面的优化工作。
数传在其他领域也有很广泛的应用:如电力电气SCADA(Supervisory Control And Data Acquisition)系统,点多而分散的配变站十分适宜数传的使用;油田、煤矿、水文、气象等地理环境复杂数据采集工作;城市水处理、集中供热等市政工程无人值守化的推进数传也在大展身手等等。
调制方式的划分
数字信号的调制方式有MSK (Minimum Shift Keying)、GFSK(Gaussian Frequency Shift Keying)、QPSK(Quadrature Phase Shift Keyin)、QAM (Quadrature Amplitude Modulation)、CPFSK(Continuous-phase frequency-shift keying)、GMSK(Gaussian Filtered Minimum Shift Keying)等等,它们都是根据ASK、FSK和PSK(调幅、调频和调相)的组合或改进而得来的。
下面对常见的数字调制方法ASK、FSK、MSK、GFSK、GMSK进行原理的简单介绍:
传输距离及其影响因素
市面上常见的航模数传都是采用3DR方案的数传模块,分为100MW和
500MW两个版本,100MW的传输距离为500-1000米左右,500MW的传输距离为3000-5000米左右,(此为实际传输距离,非理论值)。
对于数传来讲,传输距离的影响因素很多,如发射机功率,接收机灵敏度,天线的增益,有无遮挡等等。
除了常用的以外也有基于3G或4G网络的图传数传一体设备,这样基本不受距离的限制。
但是由于多轴的续航大部分在20分钟左右,使得超远距离的数传对于飞行的实际意义不大,通常采用1KM-5KM左右的数传基本可以达到使用要求。
数传接收机的灵敏度一般都在-100dbm到-120dBm左右,一般也就只有改变发射机的功率来增加传输距离;也可以通过天线来增加通信距离,一般来讲,天线的增益越高,可以提供的通信距离越远,大的多轴可以采用定向天线来获得更远的传输距离;遮挡也会对传输信号的产生影响,所以尽量在空旷的地方飞行;此外还有传播衰耗,此种衰耗可以理解为是由于辐射能量的扩散引起的衰耗等。
ST微控制器的串口通讯
任何 UART 双向通信均需要至少两个引脚:接收数据输入引脚(RX)和发送数据输出引脚(TX)。
•RX:接收数据输入引脚就是串行数据输入引脚。
过采样技术可区分有效
输入数据和噪声,从而用于恢复数据。
•TX:发送数据输出引脚。
如果关闭发送器,该输出引脚模式由其 I/O 端口配置决定。
如果使能了发送器但没有待发送的数据,则 TX 引脚处于
高电平。
在单线和智能卡模式下,该 I/O 用于发送和接收数据(USART 电平下,随后在 SW_RX 上接收数据)。
在同步模式下连接时需要以下引脚:
•SCLK:发送器时钟输出。
该引脚用于输出发送器数据时钟,以便按照SPI 主模式进行同步发送(起始位和结束位上无时钟脉冲,可通过软件
向最后一个数据位发送时钟脉冲)。
RX 上可同步接收并行数据。
这一点
可用于控制带移位寄存器的外设(如 LCD 驱动器)。
时钟相位和极性可
通过软件编程。
在智能卡模式下,SCLK 可向智能卡提供时钟。
•在硬件流控制模式下需要以下引脚:
•nCTS:“清除以发送”用于在当前传输结束时阻止数据发送(高电平时)。
•nRTS:“请求以发送”用于指示 USART 已准备好接收数据(低电平时)。
数传模块的硬件接口
我们通常用到的数传接口有USB接口,mini USB接口以及4˜6Pin的1.27MM 小白座等。
USB接口:
USB接口是英文Universal Serial Bus的缩写,中文含义是“通用串行总线”。
它是一种应用在PC端的接口技术。
早在1995年,就已经有了PC机带了USB接口,但由于缺乏软件和硬件设备的支持,这些PC机的接口都闲置未用。
1998年后,随着微软在Windows98中内置了对USB的支持模块,加上USB设备日益增多,USB接口才逐步走进了实际应用阶段。
USB设备之所以会被大量应用,主要具有以下优点:
•可以热插拔。
也就是用户在外接设备时不用开关机这样的动作,而是直接在PC机开机状态下插上USB就可以用了。
•携带方便。
USB设备大多小而轻,方便用户在任意场合随时使用。
•标准统一。
早年,大家常见的是IDE接口的硬盘,串口的鼠标键盘,并口的打印机等,但是在有了USB之后,这些外用设备统统可以用同样的
标准与PC机进行连接。
•可以连接多个设备。
USB在PC机上往往具有多个接口,可以同时连接多个设备。
Mini USB接口:
MiniUSB,又称迷你USB,是一种USB接口标准,MiniUSB体积小,适用于移动设备等小型电子设备。
Mini USB分为A型,B型和AB型。
MiniB型5Pin这种接口可以说是最常见的一种接口了,这种接口由于防误插性能出众,体积也比较小巧,所以正在赢得很多的厂商青睐,这种接口广泛出现在读卡器、MP3、数码相机以及移动硬盘上。
信源编码
信源编码是一种以提高通信有效性为目的而对信源符号进行的变换。
具体说,就是针对信源输出符号序列的统计特性来寻找某种方法,把信源输出符号序列变换为最短的码字序列,使后者的各码元所载荷的平均信息量最大,同时又能保证无失真地恢复原来的符号序列。
信源编码的作用之一是设法减少码元数目和降低码元速率,即通常所说的数据压缩;码元速率将直接影响传输所占的带宽,而传输带宽又直接反映了通信的有效性。
作用之二是当信息源给出的是模拟语音信号时,信源编码器将其转换成数字信号,以实现模拟信号的数字化传输。
信源编码是对输入信息进行编码,优化信息和压缩信息并且打成符合标准的数据包。
串口通信协议
所谓通信协议是指通信双方的一种约定。
约定包括对数据格式、同步方式、传送速度、传送步骤、检纠错方式以及控制字符定义等问题做出统一规定,通信双方必须共同遵守。
串口的配置参数有波特率、数据位、停止位和奇偶校验。
在飞控程序中对使用到的串口进行相应的配置,就能发送数据,在接收端进行相应的设置,就可以接收飞控发出的数据。
简单的串口通信协议的数据包的格式可以自行规定,例如55 AA XX XX AA 55这样的数据包,其中55 AA作为协议的开始标志,AA 55作为协议的结束标志,其中 XX XX 作为发送的数据,在主机端数据以这样的格式进行打包发送,PC端或者是其他接收端则接收到数据包按数据格式进行数据的解析就能获取相应的数据。
MAVLINK协议简介
MAVLink是一种轻量,只包含头文件信息调度库的通信协议,遵从GNU 的LGPL许可协议。
主要用于地面站(GCS)和微型无人运载工具间的通信。
可以传输微型无人运载工具的方向、GPS信息和速度等信息。
MAVLink协议可以工作在2.4G、900M、433M波段,兼容传统无线发射设备,能够全双工工作。
该协议比较简单,可完全满足一般微型无人机的通信需求,是一种极具应用价值的开源通信协议。
MAVLink完全面向两个特性而设计:速度与安全。
它允许检查丢失的数据包,但是每个消息只需要6字节的开销。
MAVLink的体系结构,MAVLink分为地面站和载具两部分。
两者可以通过串行通信、无线调制解调器、UDP(用户数据报协议)、WIFI802.11bgn链接。
地面站部分分为三层:MAVLink层、MAV抽象层、用户接口层。
MAVLink层是硬件层,产生与载具通信的数据帧,保证报文格式的稳定,负责直接与载具通信。
在MAV抽象层中包括各种MAV目标函数,这一层允许MAVLink适用于不同的自驾仪系统。
最上层是用户界面层,包括2D 地图界面、平显。
载具部分有两层,底层为与地面直接通信的数据格式层,上层是包括自驾仪数据结构和任务库(包括参数、航点等)。
任务库是载具快速执行参数和航线协议的保证。
MAVLINK数据包结构
MAVLINK传输时的基本单位是消息帧,每一帧的消息结构如下:
其中除了灰色外,其他的格子都代表了一个字节的数据。
红色的是起始标志位(stx),在v1.0版本中以“FE”作为起始标志。
这个标志位在mavlink消息帧接收端进行消息解码时有用处。
第二个格子代表的是灰色部分(payload,称作有效载荷,要用的数据在有效载荷里面)的字节长度(len),范围从0到255之间。
在mavlink消息帧接收端可以用它和实际收到的有效载荷的长度比较,以验证有效载荷的长度是否正确。
第三个格子代表的是本次消息帧的序号(seq),每次发完一个消息,这个字节的内容会加1,加到255后会从0重新开始。
这个序号用于mavlink消息帧接收端计算消息丢失比例用的,相当于是信号强度。
第四个格子代表了发送本条消息帧的设备的系统编号(sys),用于mavlink消息帧接收端识别是哪个设备发来的消息。
第五个格子代表了发送本条消息帧的设备的单元编号(comp),用于mavlink消息帧接收端识别是设备的哪个单元发来的消息(暂时没什么用)。
第六个格子代表了有效载荷中消息包的编号(msg),注意它和序号是不同的,这个字节很重要,mavlink消息帧接收端要根据这个编号来确定有效载荷里到底放了什么消息包并根据编号选择对应的方式来处理有效载荷里的信息包。
最后两个字节是16位校验位,ckb是高八位,cka是低八位。
校验码由crc16算法得到,算法将整个消息(从起始位开始到有效载荷结束,还要额外加上个MAVLINK_CRC_EXTRA字节)进行crc16计算,得出一个16位的校验码。
之前提到的每种有效载荷里信息包(由消息包编号来表明是哪种消息包)会对应一个MAVLINK_CRC_EXTRA,这个MAVLIN_CRC_EXTRA是由生成mavlink代码的xml文件生成的,加入这个额外的东西是为了当飞行器和地面站使用不同版本的mavlink协议时,双方计算得到的校验码会不同,这样不同版本间的
mavlink协议就不会在一起正常工作,避免了由于不同版本间通讯时带来的重大潜在问题。
MAVLINK消息帧讲解
在mavlink消息帧里最重要的两个东西,一个是msgid;一个是payload,前者是payload中内容的编号,后者则存放了消息。
消息有许多种类型,在官网的网页中中以蓝色的“#”加数字的方式来表示消息的编号如“#0”(这样的表示方法应该是为了方便在网页中查找相应编号消息的定义)。
在官网介绍网页里往下拉,大概拉到二分之一的位置处,开始出现“MAVLink Messages”的介绍,往下看是各种消息的数据组成说明。
下面将以heartbeat消息为例,讲解mavlink消息。
以#0 消息为例,这个消息叫心跳包(heartbeat)。
它一般用来表明发出该消息的设备是活跃的,飞行器和地面站都会发出这个信号(一般以1Hz发送),地面站和飞行器会根据是否及时收到了心跳包来判断是否和飞行器或地面站失去了联系。
在表中可以看出,心跳包由6个数据组成,第一个是占一个字节的飞行器
类型数据(type),这个数据表示了当前发消息的是什么飞行器,比如四旋翼,固定翼等等。
type的取值如何与飞行器类型对应,这在官方的mavlink消息介绍网页可以找到,位于网页开始出的数据枚举中。
MAVLINK数据包结构
其中,第一个是通用飞行器,对应的type数值是0;第二个是固定翼类型,对应的数值是1;第三个对应的是四旋翼,对弈的数值是2,依次类推。
对于飞行器端则代表了当前飞行器的类型,地面站可以根据这个参数来判断飞行器的类型并作出相应的反应。
第二个参数是自驾仪(即通常所说的飞控)类型,比如apm,ppz,Pixhawk等飞控,具体定义查找和之前查找飞行器类型时的方法一样。
同样的,对于发送心跳包的飞行器来说代表了自己的飞控类性,对地面站发出的心跳包来说意义不大。
如下表所示
第三个参数是基本模式(base mode),是指飞控现在处在哪个基本模式,对于发心跳包的地面站来说没有意义,对于发送心跳包的飞控来说是有意义的。
这个参数要看各个飞控自己的定义方式,模式标记位MAV_MODE_FLAG所示:
第四个参数是用户模式(custom mode),在Pixhawk的用户模式中以多轴为例,它分为主模式(main mode)和子模式(sub mode),两种模式组合在一起成为最终的模式,主模式分为3种,手动(manual),辅助(assist),自动(auto)。
手动模式类似apm的姿态模式。
在辅助模式中,又分为高度控制模式(altctl)和位置控制模式(posctl)两个子模式,高度控制模式就类似apm 的定高模式,油门对应到飞行器高度控制上。
位置模式控制飞行器相对地面的速度,油门和高度控制模式一样,yaw轴控制和手动模式一样。
自动模式里又分为3个子模式,任务模式(mission),留待模式(loiter),返航模式(return),任务模式就是执行设定好的航点任务,留待模式就是gps悬停模式,返航模式就是直线返回home点并自动降落。
在apm里这个参数貌似是没有用的,注意这个数据占了4个字节,在Pixhawk中,前两个字节(低位)是保
留的,没有用,第三个字节是主模式,第四个字节是子模式。
第五个是系统状态(system status),其中的standby状态在Pixhawk里就是还没解锁的状态,active状态就是已经解锁,准备起飞的状态。
状态MAV_STATE所示:
第六个是mavlink版本(mavlink version),现在是“3”版本。
其余的消息也是类似的结构,各个数据的定义可以查看mavlink官方网页的说明,这些说明一般在网页的前面部分。
具体说明以飞控为准,mavlink仅提供基本的定义。
MAVLINK消息帧发送与解析
原始的mavlink消息放在common文件夹里面(大部分消息都在common文件夹中)。
checksum.h中存放的是计算校验码的代码。
mavlink_helper.h里面是将各个消息包补充完整(调用checksum.h中的函数计算校验码并补上消息帧的头,比如sysid和compid等)成为mavlink消息帧再发送。
以发送心跳包(heartbeat)为例,讲解如何使用mavlink头文件来发送心跳包。
首先打开common文件夹中的mavlink_msg_heartbeat.h 头文件。
这个头文件可以分为两部分,一部分用来打包、发送heartbeat消息,另一部分用来接收到heartbeat消息时解码消息。