该变体可用于从另一个板(例如Arduino,ESP32,ESP8266,Raspberry Pi)或计算机通过串行协议来控制板。
示例Arduino草图将发送命令并处理反馈。

您还可以使用以下Web工具测试此变体,它可以控制板和跟踪反馈值。该问题启发的python代码
可以用于控制固件。

⚙️配置/参数

默认情况下使用电压控制模式
。 使用control_serial_usart2和feffback_serial_usart2进行左传感器电缆(默认)。
control_serial_usart3和forpeback_serial_usart3适用于正确的传感器电缆(5V耐受)。

可以使用 SIDEBOARD_SERIAL_USART2 或 SIDEBOARD_SERIAL_USART3 参数代替 CONTROL_SERIAL_USART2 或 CONTROL_SERIAL_USART3,以启用侧板固件上实现的不同协议。它还可以与Web 工具一起使用来测试不同的控制模式/类型。 如果需要不同的波特率,可以调整USART2_BAUD或USART3_BAUD参数。

另请检查所有变体通用的参数。

🔌接线:

  • 将蓝色线连接到 RX,将绿色线连接到 TX,将黑色线连接到左侧传感器电缆(长一根)上的 Arduino 的 GND

  • 仅 USART3(右传感器电缆)可承受 5v 电压

⚠️在某些板上,黑线是 15v!用万用表检查以确保 15V 和接地没有互换
⚠️传感器电缆的红线可提供15V !!!

USART配置:

默认情况下,USART配置为115200 Baud(参数USART2_BAUD或USART3_BAUD),8个数据位,没有奇偶校验,一个停止位。
如果可能的话,请在Arduino上使用硬件序列。

🕹️输入命令结构:

命令作为二进制帧发送,具有以下结构:

  • 启动帧(未签名INT16):0xABCD

  • 转向(签名INT16):转向输入或左输入,坦克转向[-1000-1000]

  • 速度(签名INT16):速度输入或右输入坦克转向[-1000-1000]

  • 校验和

最低的字节是第一个(小末日)。

⛔拒绝错误

焦点固件将丢弃框架,如果:

  • 命令长度不正确

  • 启动帧不正确

  • 校验和不正确

  • 接收框架时,RX线上的1个字符不活动(空闲线检测

如果在Config.h中使用参数serial_timeout指定的时间(默认为160ms)的时间内未收到正确的帧,则将触发超时。

🎛️校准:

USART控件不需要校准,但是如果您在Arduino上使用输入设备(例如操纵杆或油门手柄),并且不需要照顾校准中心值以及那里的最小/最大范围。

💬反馈:

以下反馈每10ms发送一次:

  • 启动帧(未签名INT16):0xABCD

  • CMD1(签名INT16):归一化和混合后转向或制动(气动汽车)

  • CMD2(签名INT16):归一化和混合后的速度或节气门(气动汽车)

  • speedr(签名INT16):右轮速度为rpm

  • SpeedL(signed int16) :测量的左轮速度(以 RPM 为单位)

  • 电池电压(signed int16) : 校准电池电压 *100

  • 温度(signed int16):温度(°C)*10

  • Led(unsigned int16) : 用于控制侧板上的LED

  • 校验和

最低的字节是第一个(小末日)。

叉子还具有霍尔滴答声作为反馈,叉子具有总电流。

🧰 故障排除:

如果主板发出蜂鸣声

  • 确保波特率为115200

  • 确保您使用的是在 config.h 中选择的传感器电缆(左 = CONTROL_SERIAL_USART2 或右 = CONTROL_SERIAL_USART3)

  • 假设主板上的 RX 或/和 TX 可能有缺陷(MCU 上的端口有缺陷,101 smd 电阻丢失或电阻太高),您可以在 config.h 中切换到其他传感器电缆

  • 在某些板上,电线颜色可能不同,请尝试交换蓝色和绿色电线

  • 您的 Arduino TX/RX 可能无法工作,您可以通过尝试使用 FTDI 和 Web 工具来验证,以确认主板/固件不是问题

  • 如果您在 Arduino 上使用软件串口,您可能需要降低波特率

  • 如果您为 PWM/PPM 添加了电容器,请将其移除