天天看点

CrazePony飞行器--通信部分介绍【转】

作者:nieyong

遥控端和主控之间数据的交互,物理层可以有下面几种方式:

单片2.4G无线射频收发芯片,通过SPI接口和MCU连接

蓝牙2.1透传模块,通过串口UART和MCU连接

蓝牙4.0低功耗BLE透传模块,通过串口UART和MCU连接

这几种不同的物理层通信方式在同一时刻只能够选择其中的一种。并且蓝牙2.1和蓝牙BLE根据安装的透传模块不一样进行选择。

CrazePony飞行器--通信部分介绍【转】

在上面示意图的的通信方式选择上,最左边为EskyLink,对应使用宏USE_ESKYLINK来开启是否选择该种链接方式。

The Esky 2.4 GHz equipment uses the Nordic NRF2401AG in both the transmitter and receiver. A compatible alternative to this chip is the NRF24L01+ (which is widely available).

ESky相关协议内容暂时不研究。

使用串口作为物理层指的是蓝牙透传模块(包括蓝牙2.1或者蓝牙4.0 BLE模块)。串口配置为115200 8N1,收发异步。

一个可供主控解析的数据包格式,约定如下:

开始为一个字节的头,该字节中包括port字段,reserve字段,channel字段。紧跟着该自己,就是0-31个字节的数据,数据的长度是任意的。

头字节中的port字段用来区分该数据包的功能,常见的包括下面几个

0x0 : console

0x2 : parameter,表示后面的数据是系统的参数

0x3 : commander,操作命令,控制飞机的飞行,包括pitch/yaw/roll等

……

对于串口传输,在上面数据包的最前面需要加上两个字节0xaaaa的起始数据,在最后加上一个字节的checksum数据。格式如下:

注意,紧跟在头后面的第一个data字节,表示后面数据的长度。

操作数据一共14个字节,前12个字节分别表示Roll,Pitch,Yaw的值,每个值使用4个字节。后2个字节表示Thrust的值,使用2个字节。

所以,使用串口发送的一个操作命令示例如下:

【新浪微博】 张昺华--sky

【twitter】 @sky2030_

【facebook】 张昺华 zhangbinghua

本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利.

继续阅读