遥控器(Remote Control)设备组件¶
适用遥控器¶
当前组件适用的遥控器有:DT7 遥控器,天地飞 ET08A 遥控器,同时也有适配 SBus 协议的基类。
理论¶
DT7 遥控器是一款工作于 2.4 GHz 频段的无线电通信设备,该遥控器仅能与 DR16 接收机配合使用。如下图所示:
使用时,将 DR16 的接口接到 Dbus 接口,以实现对遥控器指令的读取。
以 RoboMaster 开发板 C 型为例,板上已集成一个 Dbus 接口,如下图所示:
对应的接收引脚为
PC11,信号由UART3接收。
同时,由于 Dbus 电平以及通信协议与市面上遥控器常见通信协议 SBus 通用,因此该配置方法也适用。
快速开始¶
组件源码仓库地址:https://github.com/ZJU-HelloWorld/HW-Components
外设驱动配置¶
在使用 Dbus 接收遥控器指令时,使用 CubeMX 配置时将对应串口波特率调整至 100k,偶校验。例如对于 RoboMaster 开发板 C 型板载的 Dbus,驱动流程如下:
- 对于 USART3,将波特率配置为 100000Bit/s,字长 9Bits (including Parity),校验位偶校验(Even),数据方向为只接收(Receive Only)。
DMA 配置详见通用通信驱动 中 UART 部分的 DMA 配置。
使用前准备¶
使用前需要做以下准备:
- 在
config.cmake文件中设置use_hwcomponents_devices_remote_control选项为ON,开启该设备文件的编译,若为OFF则根驱动配置需求在CMakeLists.txt文件中重配置为ON。
示例¶
在项目中引用头文件:
| C++ | |
|---|---|
实例化一个遥控器设备并将其加入串口接收管理器中,如:
接收管理器的其他配置按要求进行,详见 通用通信驱动 中 UART 部分的使用方法。
在遥控器使用中,遥控器的接收端常常与看门狗刷新绑定,当关闭遥控器后,看门狗刷新也随之关闭,进而测量运行程序被杀死。因此可采用如下方法将看门狗刷新函数注册如遥控器内种,当接收到遥控器数据时会调用刷新函数:
| C++ | |
|---|---|
然后可通过对应的类方法获取遥控器指令:
同时由于遥控器接收频率往往低于控制频率,因此可通过 isUpdate 接口判断当前数据是否是新收到的数据。
调试技巧¶
- 遥控器实例中具有解码成功次数
decode_success_cnt_和解码失败次数decode_fail_cnt_数据成员,当二者之和随时间增长变大时说明成功收到了遥控器的数据。
附录¶
版本说明¶
| 版本号 | 发布日期 | 说明 | 贡献者 |
|---|---|---|---|
| 2023.12.12 | 发布遥控器组件(Cpp) | 蔡坤镇 |


