RT-Thread mavlink 甜蜜相拥教程
suwp
编辑于 2020年03月17日 10:10
收录于文集
共26篇

无线通信步骤

当我们想要达到某个目标时,三思而后行,把大目标拆成有序的小目标来实现。这样除了更稳,也会更快,回头再看时也更清晰。

  1. 先实现不带协议的无线通信这一步的目标是:确定会用通信相关硬件。

  2. 再用 mavlink 报文进行通信这一步的目标是:会用 mavlink 进行通信。

本次使用到的硬件有:RT-Thread IoT 开发板(即:正点原子潘多拉开发板)、小马哥四轴遥控器、nRF24L01 无线通信模块。

nRF24L01 双向通信

RT-Thread 代码质量非常高,使用起来也很方便。下面看一下在 RT-Thread 上使用 nRF24L01 的过程。 nRF24L01 在小马哥四轴遥控器上调试的时候没调通,解决办法见《为了解决 RT-Thread nRF24L01 软件包在 STM32F103C8 上死活调不通的问题,我都干了啥?》

源码只需要改 2 个文件一共 4 个地方:

  1. nrf24l01_init.c 有 1 处改使用哪个 spi 以及 spi 的片选引脚

  2. sample.h 有 3 处改 nRF24L01 使用的 spi 设备是哪个改 nRF24L01 的 CE 引脚改 nRF24L01 的 IRQ 引脚

改驱动要看原理图,如下:

小马哥四轴遥控器的代码见如下 github 链接: https://github.com/SuWeipeng/xm_rc      

项目使用 progen 自动生成目标工程,不会用 progen 的请看 Sugar 写过的《一招通吃MDK5、IAR、GCC》

牵手 mavlink

因为加入了 mavlink,消息的打包、解包都需要更多栈空间; 所以首先“加大栈空间”,把收发双方的栈大小加到 2048 因为 nRF24L01 硬件限制一次通信最多 32 个字节,所以报文设计时要注意包长度。相比于 mavlink 2.0,使用 mavlink 1.0 报文的有效载荷会更多一些,因此 Sugar 采用 mavlink 1.0 协议的通信报文。

一、上哪找 mavlink 生成器 通过 Sugar 改过的 mavlink 三平台(MDK5、IAR 和 GCC)代码生成器生成 C 语言头文件。

生成器的开源地址是: https://github.com/SuWeipeng/mavlink

二、怎样获得需要的 mavlink 源码 1、选择 xml 模板 2、选择生成代码的储存位置 3、选择目标语言为 C 语言 4、选择协议版本为 1.0 5、不勾选 Validate 6、点击 Generate 按钮进行生成

三、发送端使用 mavlink 的方法 1、配置工程头文件的搜索路径,加入 mavlink 相关文件夹

2、在使用 mavlink 的源文件中加入

   #include "mavlink.h&#​34;

3、定义一个 mavlink 消息包

mavlink_message_t msg;

4、通过生成的目标 API 打包消息内容

mavlink_msg_simple_pack(0,0,&msg,0);

5、将 msg 内容进行重新排列,送入发送缓冲区 tbuf

mavlink_msg_to_send_buffer(tbuf, &msg);

6、为了方便,将发送长度改为 32 个字节     因为 mavlink 本身有校验机制,所以多发几个字节并不影响什么,按 nRF24L01 最大包长度放心发 32 个就好。

7、解包过程

    当收到遥控返回的摇杆速度时,对其进行解包,并从串口打印出来。

(1) 先定义 3 个用于解包的变量

四、接收端使用 mavlink 的方法

出于方便考虑,将接收改为直接取 32 字节,并加大线程栈到 2048。

小马哥四轴遥控器的代码见如下 github 链接: https://github.com/SuWeipeng/xm_rc  

1、在 progen 的 *.yaml 配置文件中加入 mavlink 头文件路径 不了解 *.yaml 配置文件的请看 Sugar 写过的《一招通吃MDK5、IAR、GCC》

2、在使用 mavlink 的源文件中加入

#include "mavlink.h&#​34;

3、Sugar 使用 rtt_interface.h 文件来统一各个源文件的接口,所以要

) 解包框架

for(i=0; i<32; i++) {

PS

本篇内容按功能对代码进行模块化展开,读者只注重使用思路就行了。就像是给孩子们玩儿的图形化编程一样,清楚使用思路之后“拼”就完了。 如果觉得本篇讲得不够易懂,可以在公众号后台回复 mavlink 获得微课视频链接,Sugar 第一次做付费视频,定价 9.9 元(希望能长长久久地做下去)。 如果看过淘宝教育视频还觉得不够,可以在“关于我”页面最下方扫码加 Sugar 为好友,约时间在线一对一讲解(收费会更高一些)。

关注作者

欢迎扫码关注我的公众号