BetaFlight & BeeRotorF3 四轴飞行器配置F450

92 篇文章 39 订阅

最近有一个网友,讨论过程中发现他期望搞一个大一点(10寸左右),性价比高的无人机。

根据长时间的了解,其主要需求大致描述如下:

  1. 不是穿越机
  2. 也不是航拍机
  3. 就是想通过亲手控制操作了解下无人机
  4. 后续视情况再定,比如:摄像头,图传,卡录等等
  5. 性价比高(也许玩一会儿就没兴趣不玩了)

好吧!!!这个需求确实有点那个,不管如何,通过几次讨论和度娘了一些资料,貌似找到一些解决方法,整体成本应该基本可控。

1. 需求澄清

所有解决问题第一个步骤就是澄清需求,可能有人说,前面不都描述了嘛。那我只能说“Oh no…”,这种需求就是伪需求,不明确或者压根无法执行的落地的用户描述。

这里我们根据用户描述,将需求澄清清楚,更符合落地实操的工程需求。

1.1 必要组件

  1. 电机(Motor)+ 电调(ESC,Electronic Speed Control)
  2. 飞控(FC,Flight Control):集成导航模块(IMU,Inertial Measurement Unit)陀螺仪+加速度
  3. 动力源:可以采用可充电电池
  4. 遥控器+遥控接收机

1.2 扩展组件

  1. GPS(磁力计):通常应用与自动导航或者失控后自动回航等场景。
  2. 图传+摄像头:配合FPV设备进行第一视角控制操作。
  3. 云台(摄像机):航拍使用。
  4. 遥测模块:更多是配合地面站使用。
  5. 卡录 或 GoPro
  6. 伴飞电脑 (执行任务 或 高级避障策略等功能)
  7. 光流计测距
  8. 超声波测距
  9. 摄像头定位
  10. 4G 模块(民用远距离通信控制)

这里不过多罗列,反正一口气能写多少就多少,因为前面用户描述要性价比高,对吧!!!(重点,重点,重点,重要的事情说三遍!!!)

1.3 工程需求

整理了上面无人机的必要组件和扩展组件,接下来就是将用户描述和组件的归纳整理,输出工程需求来落地配一套满足需求的无人机。

  • 不穿越(性价比高):FPV需求不强,还可以省图传,眼镜或者平板等显示设备
  • 不航拍(性价比高):基本上卡录,Gopro也可以去掉,也能节省一大部分费用
  • 要亲手操作控制:理论上自动无头模式,轻松上手体验。无需手动操作繁琐且容易炸机。
  • 后续视情况再定:这个需求是最为复杂且不定的。

根据用户描述,也许玩玩没兴趣就直接要扔掉。
需要考虑: (同时要控制费用,可以考虑硬件过时,但尚与开源同步的硬件)

  1. 自动转手动控制 (注重穿越机)
  2. 可支持FPV (OSD支持)
  3. 可支持挂载云台 (大机架)

结合上述分析,我们给出如下配置:

  1. 【二手】F450: 机架 + 桨叶 + 电机 + 电调

可参考:四轴飞控DIY简明步骤介绍

  1. 【二手】BeerotorF3 (BRF3) all-in-one (AIO):MP6050 + BMP280 + MAX7456

可参考:BeeRotorF3 Manual

Features

  • Optimization for Cleanflight/Betaflight firmware
  • ARM Cortex-M4 core STM32F303CC with 32bit/72MHz/256K Flash/40K SRAM and hardware floating point unit
  • MPU6050 and BMP180 / BMP280 Sensors
  • Build-in 8MB flash for black box log recorder
  • On board OSD with absolutely original MAX7456EUI+ and standard FTDI debug port
  • Receiver connector with PPM/SBUS/SumD/DSM2/DSMX and RSSI input
  • Up to 3 serial ports and 8 PWM outputs
  • Multifunction connectors with SWD/UART2~3/Soft-serial/Buzzer/LED trip/Voltage detection
  • Multifunction OSD connectors with video_IN/ video_OUT/ICSP/debug port (UART1)
  • PDB connector with 5V input/Current and Voltage detection
  • Power input reverse polarity protection

Specification

  • Power input: 5.0~5.5V
  • Dimension: 35x35x9mm
  • Fixing hole spacing: 30mm
  • Weight: 7.3g
  • PPM/RSSI/SBUS/SumD Receiver Cable
  • Camera/video-TX cable
  • Buzzer/LED strip/voltage detect cable
  • OSD debug port to FTDI adapter cable
  1. 【软件】BetaFlight 4.0.6, betaflight_4.0.6_SPRACINGF3.hex + Betaflight Configurator 10.5.1

可参考:

  1. SPRacingF3 Manual
  2. SPRacingF3OSD Manual
    MP6050 + MS5611 + HMC5883L + MAX7456
  1. 【重用】遥控器(发射机) + 接收机

建议:投入较多时间和精力去了解
源由:这个是可以沿用的,即使换模型飞机,车,船,基本都可通用。

考虑:

  1. 如果是想后续玩下去的,可以考虑买新的/好的遥控器。毕竟遥控器好,控制的可以更远,手感也更好。(飞机是会摔坏的,更好的模型飞机也在不断的出来。)
  2. 本着玩着玩着就是扔掉的,那无所谓好坏,买个二手的性价比高就好。后面入门了可以重新配置一套适合自己的。

注:入手BeeRotorF3的时候一定要注意那几根飞控自带的线,否则焊接就不方便了。
BeeRotorF3接线整体接线图

2. 组装&配置

2.1 组装

鉴于上面的工程需求,需要采购的组件如下:

注:每个组件购买时应该注意与其他组件连接的软线。

  1. F450: 机架 + 桨叶 + 电机 + 电调
  2. BeerotorF3 (BRF3) all-in-one (AIO)
  3. 遥控器(发射机) + 接收机(SBUS)
  4. 电池 3S 2200mAh (XT60)

附件:

  1. XT60座子 + 电源线(红色,黑色各一根,长度约8cm)
  2. 杜邦线若干(连接接收机与飞控)
  3. 飞塔固定M3螺柱 + 减震O型圈

注:电调电源直接连接到F450机架分电板上;电机与电调之间要确认是焊接还是香蕉头,采购时提前注意好连接件。
BeeRotor接线图1
BeeRotor接线图2

2.2 配置

常规配置,请大家自行度娘,这里不在详说。下面主要列举F450机架比较重要的一些配置参数。

2.2.1 固件烧录

鉴于BeeRotorF3最后的BetaFlight版本(官方发布2019年9月1日)是4.0.6,目前(2022年9月26日)。因此该硬件只有定制编译才能跟上最新4.3的版本,但是常规的BetaFlight功能都已经含有,如果真的需要定制,模友们也有提供。

对于刚上手学习的朋友,请使用下面两个方法烧录:

  1. 使用 Betaflight Configurator 10.5.1通过网上下载固件烧录
  2. 使用 Betaflight Configurator 10.5.1,本地下载betaflight_4.0.6_SPRACINGF3.hex ,通过选择本地文件进行烧录

注:烧录方法请详见betaflight-configurator

2.2.2 PID设置

下面是笔者飞的也比较顺畅的PID数据,供大家参考。
PID配置
注:笔者给出的PID参数设置是KakuteF7 AIO V1.5 在F450机架上稳定飞行的参数。

2.2.3 滤波设置

F450机架整体来说低频振动比较多,因此和5寸机大不一样。而且由于仿冒品牌差异,实际参数差异也是有的。请大家参考。
滤波设置
注:笔者给出的滤波参数设置是KakuteF7 AIO V1.5 在F450机架上稳定飞行的参数。该F450机架肯定是某仿冒的,低频振动80Hz、150Hz等位置都有非常高的振动。所以滤波的参数大家要根据自己拿到手的机架,特别主要进行调整。

2.2.4 HeadFree

  • Roll:遥控器指向飞机方向,左右控制
  • Pitch:远离/靠近遥控器
  • Yaw:旋转控制
  • Throttle:高度控制

参考视频:开启和关闭BetaFlight无头模式对飞行操控的影响

HeadFree
注:这里是笔者的一个配置,使用的是FPV,所以没有配置无头模式。

3. 后续扩展

后续大体上有两个方向拓展:

  • 穿越机:摄像头 + 图传 + 接收机 + 眼镜 或 平板
  • 航拍机:航拍设备 + 云台 + 图传 + 接收机 + 眼镜 或平板 + 电脑

除此之外,可能就是ROS上系统,增加伴机电脑,进阶其他复杂功能了。这里我们就不在展开,希望有机会也能成文。

4. 总结

整体来说,大机架相对来说后续可玩的方向更多点,也比较容易扩展,新增传感器,毕竟空间大点,容易改装。

如果是动手能力相对弱,或者还是注重飞行体验的朋友,建议入手套机。

  • 1
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,以下是gd32F450Z配置3*3按键矩阵外部中断的代码: 假设我们使用PA0、PA1、PA2、PA3、PA4、PA5、PA6、PA7、PB0这九个引脚作为3*3矩阵按键的输入引脚,PA8作为中断引脚。 首先,我们需要初始化这些引脚的GPIO和中断控制器: ```c void gpio_init(void) { rcu_periph_clock_enable(RCU_GPIOA); rcu_periph_clock_enable(RCU_GPIOB); rcu_periph_clock_enable(RCU_AF); gpio_init(GPIOA, GPIO_MODE_IN_FLOATING, GPIO_OSPEED_50MHZ, GPIO_PIN_0 | GPIO_PIN_1 | GPIO_PIN_2 | GPIO_PIN_3 | GPIO_PIN_4 | GPIO_PIN_5 | GPIO_PIN_6 | GPIO_PIN_7); gpio_init(GPIOB, GPIO_MODE_IN_FLOATING, GPIO_OSPEED_50MHZ, GPIO_PIN_0); gpio_pin_remap_config(GPIO_SWJ_JTAGDISABLE_REMAP, ENABLE); gpio_init(GPIOA, GPIO_MODE_IPD, GPIO_OSPEED_50MHZ, GPIO_PIN_8); } void exti_init(void) { nvic_irq_enable(EXTI4_15_IRQn, 0, 0); nvic_irq_enable(EXTI9_5_IRQn, 0, 0); gpio_exti_source_select(GPIO_PORT_SOURCE_GPIOA, GPIO_PIN_SOURCE_8); exti_init(EXTI_8, EXTI_INTERRUPT, EXTI_TRIG_FALLING); exti_interrupt_flag_clear(EXTI_8); exti_init(EXTI_4, EXTI_INTERRUPT, EXTI_TRIG_FALLING); exti_interrupt_flag_clear(EXTI_4); } ``` 接着,我们需要编写中断服务程序,检测按键的状态并执行相应的操作: ```c void EXTI4_15_IRQHandler(void) { if (exti_interrupt_flag_get(EXTI_4)) { exti_interrupt_flag_clear(EXTI_4); check_key(); } } void EXTI9_5_IRQHandler(void) { if (exti_interrupt_flag_get(EXTI_8)) { exti_interrupt_flag_clear(EXTI_8); check_key(); } } void check_key(void) { uint16_t key_val = 0; key_val = gpio_input_bit_get(GPIOA, GPIO_PIN_0) << 0 | gpio_input_bit_get(GPIOA, GPIO_PIN_1) << 1 | gpio_input_bit_get(GPIOA, GPIO_PIN_2) << 2 | gpio_input_bit_get(GPIOA, GPIO_PIN_3) << 3 | gpio_input_bit_get(GPIOA, GPIO_PIN_4) << 4 | gpio_input_bit_get(GPIOA, GPIO_PIN_5) << 5 | gpio_input_bit_get(GPIOA, GPIO_PIN_6) << 6 | gpio_input_bit_get(GPIOA, GPIO_PIN_7) << 7 | gpio_input_bit_get(GPIOB, GPIO_PIN_0) << 8; switch (key_val) { case KEY_1: //TODO: 执行按键1的操作 break; case KEY_2: //TODO: 执行按键2的操作 break; case KEY_3: //TODO: 执行按键3的操作 break; case KEY_4: //TODO: 执行按键4的操作 break; case KEY_5: //TODO: 执行按键5的操作 break; case KEY_6: //TODO: 执行按键6的操作 break; case KEY_7: //TODO: 执行按键7的操作 break; case KEY_8: //TODO: 执行按键8的操作 break; case KEY_9: //TODO: 执行按键9的操作 break; default: break; } } ``` 其中,`KEY_1`至`KEY_9`是用来表示每个按键的状态,我们需要根据实际情况进行定义。在`check_key()`函数中,我们通过读取每个引脚的输入状态,计算出当前按键的状态,并根据状态执行相应的操作。 最后,在主函数中调用`gpio_init()`和`exti_init()`函数进行初始化即可。 ```c int main(void) { gpio_init(); exti_init(); while (1) { //TODO: 主函数中的其他操作 } } ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值