该变体可用于从另一个板(例如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 电压
默认情况下,USART配置为115200 Baud(参数USART2_BAUD或USART3_BAUD),8个数据位,没有奇偶校验,一个停止位。
如果可能的话,请在Arduino上使用硬件序列。
命令作为二进制帧发送,具有以下结构:
最低的字节是第一个(小末日)。
焦点固件将丢弃框架,如果:
命令长度不正确
启动帧不正确
校验和不正确
接收框架时,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 添加了电容器,请将其移除

发表评论