本篇摘自Epoch战队知识库,作者:Junshuo
Github 仓库:NUC-Epoch-Robotics/Epoch-Remote-Controller: Epoch 机器人遥控器 第一代 (github.com)
使用 & 维护
操作手必须熟知遥控器 & 机器人电控逻辑。
使用时戴好背带,四维摇杆较重,晃动会导致摇杆移动,可能误操作。
尽量避免灰尘进入遥控器,灰尘会损伤电位器,导致摇杆漂移。
方案选择
成品航模/车模遥控器
稳定
开箱即用,开发简单
不可定制
通道有限,且无拓展性,不能确保满足之后每一届的题目
软件方案
使用 Android 手机/平板遥控
灵活,拓展性强
方便显示图形化信息
优雅
开发难度大,实验室没有移动端上位机开发相关基础
物理层选择有限,只能使用 WiFi / Bluetooth
操控手感差,不适合半自动/全手动模式
硬件方案
开发简单,是我们擅长的领域
操控手感好
可拓展性好,可以根据操作手需求定制
物理层可选择范围广
前期版本可能没有成品和软件方案稳定
不方便显示图形化信息
其他:
软硬结合(Qt + 树莓派):开发难度大
Robomaster 遥控器接电脑控制:不够优雅,RC赛场打RM,有点逆天
硬件选型
主控
选择 STM32F103R8 ,原因如下:
对计算性能要求不高
I/O 数量够用,能满足遥控器的拓展性
有 ADC
开发简单或有开发基础
价格不贵
通信模块
规则规定的三种通信协协议使用的频段均为 2.4GHz 。具体使用了什么协议,组委会也不会去检查,只要在 2.4GHz ISM公共频段即可。
作者选择E34-2G4D20D nRF24L01芯片2.4G无线串口模块-lora无线网关技术-亿佰特无线通信模块,该模块有以下优点:
模块软硬件封装完善,不需要关心无线通信,当成串口开发即可
可靠性和传输速率比较好
支持不间断传输,不限制包长
摇杆
摇杆有【航模摇杆】、【游戏手柄摇杆】、【四维摇杆】,
航模摇杆:适合精准控制(如底盘移动),尺寸大。拆机的航模遥感普遍电位器不太行,需要自己更换电位器。从淘宝买60度10kΩ的摇杆电位器就行。
游戏手柄摇杆:适合不需要很精准的控制,尺寸小。电位器也不太行
四维摇杆:有三个电位器,可以一个摇杆控制平移+旋转。X、Y轴电位器可调,Z轴电位器比较漂,电位器不可拆卸更换。价格较贵。
软件设计
摇杆通道采集
很常规的 ADC 配置。
通道数据处理
将 0
2048 的数据映射到 3641864滤波
限幅
控制帧结构
设计思路:在满足控制需求(通道数量)的前提下,为了方便移植、减少开发成本,作者采用和 Robomaster 遥控器相似的18字节控制帧结构。
通道0~3、S1、S2、按键(8个)、保留字段(其实是通道4-左上角拨轮)与 Robomaster 遥控控制帧完全相同。
只有两个电位器旋钮不一样,占用的是 RM 遥控器的鼠标X、Y轴。
其余的为保留字段,暂时没用上。
控制帧打包的C语言实现
以前 4 个通道为例:
1 | void remote_control_packup(uint16_t* ch, uint8_t* buff) |
验证:ch为通道原始的11位数据,packed为打包后的数据.
0x7ff = 0b0111 1111 1111
注:下图仅示意,红色数字标错了
无线通信模块 E34-2G4D20D 配置
使用 Ebyte 公司的上位机即可配置参数,参数配置如下:
需要注意:
收发需要设置成相同的
模块地址
和频率信道
半双工模式(M0=0, M1=0)波特率最大支持到 115200,全双工波特率最大支持 115200/2
低波特率(9600)在高速收发(也不高,大概 10Hz)的时候会有问题,接收端数据会错位
波特率在 115200 时,控制频率在 200Hz 测试没有问题
使用串口 DMA 发送也会导致接收端数据错位,没有找到原因。
接收端
由于使用了和 RM 遥控器一样的控制帧,只需要改一下目前主控程序里遥控器(DBUS)的串口号和对应的波特率即可。
功能布局
一共7个电位器、2个钮子开关、8个按键。