这个变体可以用于通过串行协议从另一块板子(如Arduino,ESP32,ESP8266,RASPBERRY PI)或计算机控制电路板。
示例Arduino草图将发送命令并处理反馈。
你也可以使用以下网络工具(https://candas1.github.io/Hoverboard-Web-Serial-Control/)来测试这个变体,它让你可以控制电路板并跟踪反馈值。
这个Python代码受到此问题中分享的代码的启发,也可以用来控制固件。
电压控制模式默认使用。
使用CONTROL_SERIAL_USART2和FEEDBACK_SERIAL_USART2用于左侧传感器电缆(默认)。
使用CONTROL_SERIAL_USART3和FEEDBACK_SERIAL_USART3用于右侧传感器电缆(5V容差)。
SIDEBOARD_SERIAL_USART2 或 SIDEBOARD_SERIAL_USART3 参数可以替代 CONTROL_SERIAL_USART2 或 CONTROL_SERIAL_USART3 以启用不同的协议 实现于sideboard 固件。它也可以与Web 工具一起使用以测试不同的控制模式/类型。
如果您需要不同的波特率,您可以调整 USART2_BAUD 或 USART3_BAUD 参数。
请同时检查所有变体共有的参数。
将蓝色电线连接到左传感器电缆(长电缆)上的Arduino的RX,将绿色电线连接到TX,将黑色电线连接到GND。
只有USART3(右侧传感器电缆)是5V兼容的
默认情况下,USART 配置为 115200 波特(参数 USART2_BAUD 或 USART3_BAUD),8 数据位,无奇偶校验,一个停止位。
如果可能,请在Arduino上使用硬件串口。
命令以二进制帧的形式发送,结构如下:
起始帧(unsigned int16) : 0xABCD
转向(有符号的16位整数) : 转向输入或左输入与坦克转向[-1000 - 1000]
速度(signed int16) : 速度输入或右输入与坦克转向[-1000 - 1000]
校验和(unsigned int16) : 异或校验和
最低有效字节放在前面(小端)。
FOC固件将丢弃帧如果:
命令长度不正确
起始帧不正确
校验和不正确
在接收帧时RX线上有1个字符不活动 (空闲线路检测)
如果在config.h中指定的 time(默认为160毫秒)内没有收到正确的帧,将触发超时。
校准 在 USART 控制下不是必需的,但如果您在 Arduino 上使用输入设备(例如操纵杆或油门手柄)并且没有在那里处理校准中心值和最小/最大范围,则可以进行校准。
每10毫秒发送以下反馈:
起始帧(unsigned int16) : 0xABCD
Cmd1( signed int16 ) : 标准化和混合后的转向或刹车( 个人飞行器 )
Cmd2( signed int16 ) : 速度或油门( 个人飞行器 ) 经过标准化和混合
SpeedR(signed int16) : 测量的右轮速度,单位是RPM
SpeedL(signed int16) : 测量的左轮速度,单位是RPM
电池电压(有符号的16位整数):校准后的电池电压 *100
温度( signed int16):温度(°C)*10
Led(unsigned int16) : 用于控制橱柜上的指示灯
校验和(unsigned int16) : 异或校验和
最低有效字节放在前面(小端)。
如果电路板发出蜂鸣声
确保波特率为115200
确保您使用在config.h中选择的传感器电缆(左=CONTROL_SERIAL_USART2 或 右=CONTROL_SERIAL_USART3)。
假设您的主板上的RX或/和TX可能有缺陷(MCU上的端口有缺陷,101个SMD电阻器缺失或电阻过高),您可以在config.h中切换到其他传感器电缆。
在某些板子上,线的颜色可能会不同,尝试交换蓝色和绿色的线。
您的Arduino TX/RX可能无法正常工作,您可以尝试使用FTDI和Web工具来确认主板/固件不是问题。
如果你在Arduino上使用软件串口,你可能需要降低波特率。
如果你已经添加了用于PWM/PPM的电容器,请将其移除。

发表评论