前言
上图是《三傻大闹宝莱坞》中的片段,笔者初中的时候看到这个电影对这个四轴飞行器有着极大的兴趣,但因为当时经费的问题,在开发了一般没有自稳的迷你小四轴以后就不了了知了。
Multiwii Copter
Multiwii 是控制多旋翼航模的开源固件,Multiwii 最初由法国航模爱好者 Alex 创立,用于控制他自己做的三轴飞行器。后经全世界各大高手改造扩展,现在 Multiwii 不仅仅支持三轴飞行器、四轴、六轴等多轴系列,还支持固定翼和直升机等航模。功能强大而且简单易用,其支持的传感器类型极为丰富,而且支持十分广泛的外部设备和飞行模式,这让 Multiwii 飞控固件发展为国外最受欢迎的多轴开源固件之一。同时 Multiwii 也有缺点,与 APM、海盗等其他开源固件相比,Multiwii 最大的不足就是目前还不支持地面站。
- 官网地址:https://www.multiwii.com/
- Multiwii 各版本程序下载地址:https://code.google.com/p/multiwii/downloads/list
- Arduino 软件下载地址(Arduino 是编辑和烧录 Multiwii 固件的必备软件)http://arduino.cc/en/Main/Software
四轴飞行器基础知识
笔者认为关于这些理论的知识,不是本篇文章的重点,关于这些基础的知识,如果有新入门的童鞋,可以先去度娘或者各大论坛等等去了解一下,毕竟掌握了这些基本的知识,才知道一个四轴飞行器是如何组成的,六轴也同理。还有就是虽然现在的飞控都是白菜价了,但是如果通过自己搭建一个四轴飞行器,并让其稳定的飞起来,这是虽然很有难度,而且会耗费大量的时间,但是这种满足感跟这种 DIY 的精神是我非常向往的。
飞控板的制作
大家完全可以参照 Multiwii 官网的硬件要求,自行设计制作飞控板,这样你对 MWC 四轴整个系统将会有更深刻的理解。Multiwii 硬件分为 Arduino 328p(ATmega328P)和 Arduino mega(ATmega2560)两种版本。两个版本各有优劣,均支持多种外设,但接口稍有不同。mega 版本只能用串口接 GPS 和声呐,由于两个外设占据了串口,如要用蓝牙或 FTDI 查看飞控状态信息,这就是不可能的了。328p 版本虽然容量小,但可以采用双 328p 的模式,再用一片 ATmega328P 制作一块 I2C-GPS/Sonar 导航板,这样就可以用 I2C 来读取 GPS 和声呐的数据,不必占据串口,那这样一来就可以实时的用蓝牙等查看飞行状态信息了。所以笔者采用飞控板是基于 Arduino 328p 版本的。简单来说,MWC 飞控板由 Arduino pro mini + GY-86 组成。
Arduino pro mini 原理图
Arduino pro mini 接线图
绘制PCB
制板
在某宝上采购 Arduino pro mini 跟 GY-86 ,其实也可以把 GY-86 换成 MPU6050,两个加起来的成本也就不到二十元,而 GY-86 就比较贵了,它在 55 元左右,是因为 GY-86 包含了 MPU6050(三轴加速度计和三轴陀螺仪) +HMC5883L(三轴磁强计) +MS5611(高精度气压计,就是为了这颗气压计),下面简单说一下它们的作用
- MPU6050:主要四轴的姿态传感器
- HMC5883L:磁强计一个用途是用来锁定航向,另一个用途是 GPS 配合磁强计使用才能实现 GPS HOME(失控返航)等功能,这也就是 MWC 为什么要设置当地地磁偏移量(后续会讲)的原因。
- MS5611:它的测量精度很高,再刷入 Multiwii 2.2 固件,那四轴的定高精度不是一般的好。大家如果自己做飞控的话,还是多花点钱买个 MS5611,定高效果很不错
主控程序
我们首先需要一个 FTDI USB 下载器,用来给 Arduino pro mini 进行上传固件,这个是需要驱动的
下载地址:https://www.ftdichip.com/Drivers/VCP.htm
一共 6 个针脚从 DTR 依次对接到飞控板上 Pro mini 对应的针脚即可,但是需要注意的一个地方是针脚 VCC 供电。
从原理图可以看到,RAW 经过 MIC5219 处理后,得到 VCC,度娘了下 MIC5219,它有反向电流保护,所以从 VCC 上接入供电 5V,RAW 是不会输出的。当然这个在烧录的时候没什么问题,但是后期我们需要调试,所以笔者直接把 VCC 的供电,接入到 RAW 上即可,加压供电如下图。
打开下载好的固件文件夹中的 MultiWii.ino
整个飞控程序中,我们需要配置的只有 config.h。具体的配置内容,会在后续的章节中解析。
MultiWii GUI
MultiWii GUI 就相当于地面站,可以查看 PID 参数传感器数据,姿态,遥控器通道信息以及 GPS 信息等等。往飞控里烧玩程序之后,即 MultiWiiConf 文件夹下的 MultiWiiConf.exe。要想运行 MultiWiiConf.exe,得先安装 JAVA 虚拟机。Multiwii 的 GUI 程序需要 JAVA 虚拟机的支持,需下载安装:http://java.com/zh_CN/download/manual.jsp?locale=zh_CN