BetaFlight 命令行(CLI)简介

您所在的位置:网站首页 bf地面站设置中文界面 BetaFlight 命令行(CLI)简介

BetaFlight 命令行(CLI)简介

2024-07-16 11:31| 来源: 网络整理| 查看: 265

参数设置: 查看飞控的负载

场景: 随着芯片越来越高级(F4(如STM32F411、F405) -> F7(如F722、F745) -> H7(如H743)),CPU的算力越来越高,就想着能否开启一些新功能。 如果想看看CPU算力是否能支持自己开启这些新功能,就需要查看 CPU 的负载。

命令行: tasks

命令行解释: 列出当前正在执行的任务列表,并给出他们对 cpu 的占用比例,以及累计的占用毫秒数量

举例:

Task list                                   rate/hz  max/us  avg/us  maxload   avgload     total/ms 

08 - (BATTERY_VOLTAGE)     50         4             2          0.5%        0.5%         1 

说明:

08 - (BATTERY_VOLTAGE)  :  任务ID和名称

50 (rate/hz) :执行频率, 即每秒执行多少次,50 代表每秒执行 50 次

4  (max/us) :  最大执行的时长(微秒), 4 代表最长一次执行是 4 us

2 (avg/us): 平均执行的时长(微秒), 2 代表平局执行 2 us

0.5% (maxload) : 最大占用 CPU 的比例(百分比)

0.5% (avgload) :  平均占用 CPU 的比例

1 (total/ms): 总共执行的时长总和(毫秒), 1 代表总共执行耗时 1 毫秒

参数设置: 资源重映射

场景:资源重映射就是重新配置 MCU 上的引脚功能。 举个例子,飞控的某个电机信号输出口坏了,比如焊盘掉了, PCB断线等, 想重新配置一个新的引脚给电机当信号输出口。

例子1: 电机重新排序

我们经常在BF中对电机重新排序, 这个GUI界面很容易懂, 我们依次按照图示电机转动的电机图标即可。

其背后的原理,就是在对电机1,2,3,4进行重新映射。怎么理解?

因为在飞控上,4路、6路、8路电机信号输出,都是有固定的引脚编号的,分别是A01~A08。

电机1,2,3,4连接飞控时,可能是随便焊接的,顺序可能不对,再加上现在流行倒置,所以很有可能电机焊接时是并不是右下角1、右上角2、左下角3、左上角4的顺序。没关系,通过资源重映射重新把A01~A04分配给对应的引脚即可。

例如: 已知 A06引脚映射到 motor 1 , A07 映射到motor 2上,需要交换:

resource motor 1  A7

resource motor 2  A6

save

即可实现交换 motor 1 和 motor 2。

例子2:LED口焊盘脱落使用TX3代替、2号电机口坏、UART1口坏、无PWM口控制舵机

假设一个飞控, 支持 8 路电机信号输出 + 6路UART串口(UART1和UART2串口装有反向电路防倒灌)+ 电池电压和电流输入口 + RSSI信号输入口, 我们用它来驱动 4 个电机 + 一个接收机 + 一个GPS + 一个图传 + 两个舵机

 正常情况下, 我们会使用 1~4 号电机信号输出口(给电机), 3个 UART口(给接收机、GPS、图传),一个LED口(给LED灯带控制),以及两个PWM信号输出口(使用脉冲宽度调制,使得 MCU 的数字输出能够对模拟电路进行控制)。、

现在的问题来了: LED口焊盘脱落不可用,2号电机信号输出口坏了,接收机的UART1串口也坏了,且飞控默认情况下没有PWM信号的口, 应该怎么解决问题?

问题1:“LED口焊盘脱落不可用”问题的解决思路

思路: 重新选一个UART口用于LED控制

具体过程参见帖子链接:FPV: 通过遥控器通道,控制无人机的灯带开关

问题2: “电机信号输出口坏”问题的解决思路

思路: 把 2号电机信号口映射到空闲的 5~8 号电机信号口的任意一个上(由于穿越机的混控模型为QuadX,因此默认启用1~4号电机信号口)

第一步: 查看现有映射   

执行命令 : "resource list" 然后回车, 列出所有已有映射,如下(此处只展示跟电机 MOTOR 有关的行):

A06: MOTOR 1

A07: MOTOR 2

A08: MOTOR 3

A09: MOTOR 4

A10: MOTOR 5

A11: MOTOR 6

A12: MOTOR 7

A13: MOTOR 8

如上所示, A06 ~A13 分别映射给了 MOTOR 1 ~ MOTOR 8,  即电机2对应的输入信号来自于飞控的A06口的输出。

由于此时 A06 口已经坏了,需要重新找一个 Axx 口 (且类型是用于电机信号输出的 MOTOR类型的口)来给2好电机用;

注:

此处的Axx 代表飞控的端口引脚, Axx是给每个引脚的名字,是不会改变的,但可以改变其映射;

MOTOR 是函数,代表是后面跟的数字 1~8 是电机序号;

第二步: 电机信号口重映射

我们可以把坏了的2号电机信号输出口重新映射到5号电机信号输出口 A10上,命令如下:

resource  motor   2    none

resource  motor   5    none

resource  motor   2    A10

save

脚本说明: 前两句清除旧映射, 即2号、5号两个电机信号输出口映射到 none, 然后重新把2号电机信号输出口映射到飞控的 A10 口。

此时, 就可以把2号电机的信号输入线接到飞控的5号电机信号输出口上了。

resource 命令小结: 

形式: resource [function name] [index] [pin]

例子: resource  motor   2    A10

例子含义: 把 motor 2 映射到 A10 引脚, 即 2号电机对应的将是飞控的 A10 引脚

问题3: “接收机UART串口坏”问题的解决思路

思路: 接收机原来用的 UART1 串口坏了,换一个 UART 口,比如UART2

注1:UART是串口通讯用到的端口,它由接收口RX和发送口TX组成, 一般接收机都带有数据回传功能,所以除了飞控TX和RX都要练接收机)

注2: 有些接收机的回传信号需要反向电路,例如 SBUS和对应的RX口之间就有一个反向电路,此时就需要接入到有方向电路的UART口。

由于BF提供了图形界面,直接在BF的“端口”那里,把原来UART1的“串行数字接收机”的对勾去掉,在“UART2”的“串行数字接收机”上打勾,然后保存即可。

问题4: “飞控没有PWM口,无法控制舵机”问题的解决思路

从BF固件3.1开始, 默认的舵机输出分配就从固件中删除了,因此如果要用到舵机,就需要在CLI 资源重映射中分配设置;

我们的F4、F7、H7等飞控,用到的MCU 是 STM32, 它内部有定时器,可以用于定时输出脉冲到伺服系统。

飞控的电机信号输出口5已经用掉了, 剩下的6、7、8三个电机信号输出口可以选2个分别用于两个舵机的PWM控制。

第一步:依然是输入 “resource  list”查看引脚定义

A06: MOTOR 1

A07: MOTOR 2

A08: MOTOR 3

A09: MOTOR 4

A10: MOTOR 5

A11: MOTOR 6

A12: MOTOR 7

A13: MOTOR 8

第二步: 资源重定义

选飞控 A11, A12 两个引脚作为舵机控制的PWM信号输出口,如下脚本:

resource   motor  6   none

resource   motor  7   none

resource   servo   1   A11

resource   servo    2  A12

save

命令说明: 前两句依然是解除既有 motor 映射(此为飞控默认的映射), 后两句分别把舵机 1,2 映射到飞控的  A11, A12 引脚

此时就已经把6,7号电机信号输出口对应的A11,A12引脚重映射为舵机1,2的PWM信号输出口了,然后就可以去BF里去做一些舵机的设置了。

例子2: 交换 rx, tx端口

假设 rx 2 是 sbus 接收机信号输入, 但是焊接时吧 subs 线焊接在 tx 上了,已知 rx2 对应  a10引脚,  tx2 对应 a11 引脚, 显然,交换两者即可:

resource serial_rx  2  A11

resource serial_tx  2   A10

save

例子3: 把LED_STRIP、PPM拓展出来为更多串口,以支持 更多外设

假设飞控的rx、tx口都被各种传感器用完了,还想加一个rx5、tx5口来支持新外设,应该怎么做?

飞控上的有两个口可以作为扩展串口的备选:

LED_STRIP(连接 ws2812 LED灯)

PPM ( 连接PPM接收机 )

这两个要么就是花里胡哨,要么就是非常古老基本没人用,可以把它们的飞控引脚让出来作为新的串口。

通过 resource list 命令可以发现, LED_STRIP 映射在 A12 上, PPM 映射在 A13 上,因此就可以把 TX5、RX5 分别映射到 A12、A13:

resource  serial_tx  5  A12

resource  serial_rx  5  A13

save

同理, 也可以把它们改成舵机,来接舵机:

resource   servo  1  A12

resource   servo  2  A13

save

Resource 命令中函数/功能列表

 resource [function name] [index] [pin]

 resource 第二个参数是 函数/功能, 其含义和约束条件如下所示:

功能:ADC_BATT

含义: 电池电压传感器

约束: 只能映射到ADC引脚

功能:ADC_CURR

含义: 电池电流传感器

约束: 只能映射到ADC引脚

功能:ADC_RSSI

含义: 接收机的模拟RSSI输入

约束: 只能映射到ADC引脚

功能:BEEPER

含义: 信号蜂鸣器

备注: 通常直接接至蜂鸣器晶体管基极

功能:CAMERA_CONTROL

含义: FPV摄像头由OSD控制调参

备注: 由摇杆模拟按钮,来控制摄像头调参

功能:I2C_SCL, I2C_SDA

取值: 1 - n

含义: IIC通信口,一般GPS等会使用

功能:LED

取值:1 - 3

含义: LED指示灯

功能:LED_STRIP

含义: WS2812 LED数据

备注: 如果未连接或使用 WS2812, 则LED是较好的替代选项

功能:MOTOR

取值:1 - n

含义: 电机信号

功能:PPM

含义: 接收机 PPM 输入

备注: 一般不使用PPM接收机,可以释放给其他可选功能使用

功能:PWM

取值:1 - n

含义: PWM ,用于控制舵机等伺服设备

功能:SERIAL_RX

取值:1 - n

含义: 串行接收引脚

约束:无法重映射到其他引脚,但可以指定不同的功能

功能:SERIAL_TX

取值:1 - n

含义: 串行发送引脚

备注:SERIAL_RX/SERIAL_TX 11-12 是软串口 #1 he  #2

功能:SERVO

取值:1 - n

含义: 舵机信号

小结:

注意事项:不是所有的引脚都是能相互定义的,比如电池电压传感器(ADC_BATT)、电池电流传感器(ADC_CURR)、来自接收器的模拟RSSI输入(ADC_RSSI),这些都是只能映射到其他 ADC 引脚(ADC:即模数转换,模拟到数字的转换器,作用:输入模拟量,输出数字量)

参数设置: 灯带与BB响同步闪烁

场景:LED灯带与BB响同步闪烁,作为视觉指示器,便于查找飞机

命令: set ledstrip_visual_beeper = ON

命令说明: 此时,当 LEDLOW 模式处于活动状态(即LED灯带关闭)是,LED灯带与BB响同步闪烁。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3