【DIY无人机】主控程序

简介: 如何自己动手制作一个飞控?

image.png

前言

上图是《三傻大闹宝莱坞》中的片段,笔者初中的时候看到这个电影对这个四轴飞行器有着极大的兴趣,但因为当时经费的问题,在开发了一般没有自稳的迷你小四轴以后就不了了知了。

Multiwii Copter

image.png
Multiwii是控制多旋翼航模的开源固件,Multiwii最初由法国航模爱好者Alex创立,用于控制他自己做的三轴飞行器。后经全世界各大高手改造扩展,现在Multiwii不仅仅支持三轴飞行器、四轴、六轴等多轴系列,还支持固定翼和直升机等航模。功能强大而且简单易用,其支持的传感器类型极为丰富,而且支持十分广泛的外部设备和飞行模式,这让Multiwii飞控固件发展为国外最受欢迎的多轴开源固件之一。同时Multiwii也有缺点,与APM、海盗等其他开源固件相比,Multiwii最大的不足就是目前还不支持地面站。

四轴飞行器基础知识

image.png
笔者认为关于这些理论的知识,不是本篇文章的重点,关于这些基础的知识,如果有新入门的童鞋,可以先去度娘或者各大论坛等等去了解一下,毕竟掌握了这些基本的知识,才知道一个四轴飞行器是如何组成的,六轴也同理。还有就是虽然现在的飞控都是白菜价了,但是如果通过自己搭建一个四轴飞行器,并让其稳定的飞起来,这是虽然很有难度,而且会耗费大量的时间,但是这种满足感跟这种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 原理图

image.png

   Arduino pro mini 接线图

image.png

  绘制PCB

image.png

制板

image.png
在某宝上采购 Arduino pro mini 跟 GY-86 ,其实也可以把GY-86换成MPU6050,两个加起来的成本也就不到二十元,而GY-86就比较贵了,它在55元左右,是因为GY-86包含了MPU6050(三轴加速度计和三轴陀螺仪) +HMC5883L(三轴磁强计) +MS5611(高精度气压计,就是为了这颗气压计),下面简单说一下它们的作用

  1. MPU6050:主要四轴的姿态传感器
  2. HMC5883L:磁强计一个用途是用来锁定航向,另一个用途是GPS配合磁强计使用才能实现GPS HOME(失控返航)等功能,这也就是MWC为什么要设置当地地磁偏移量(后续会讲)的原因。
  3. MS5611:它的测量精度很高,再刷入Multiwii 2.2固件,那四轴的定高精度不是一般的好。大家如果自己做飞控的话,还是多花点钱买个MS5611,定高效果很不错

image.png

主控程序

我们首先需要一个FTDI USB下载器,用来给Arduino pro mini进行上传固件,这个是需要驱动的
下载地址:https://www.ftdichip.com/Drivers/VCP.htm
image.png
image.png

一共6个针脚从DTR依次对接到飞控板上Pro mini 对应的针脚即可,但是需要注意的一个地方是针脚VCC供电。

image.png
从原理图可以看到,RAW经过 MIC5219 处理后,得到 VCC,度娘了下 MIC5219,它有反向电流保护,所以从VCC上接入供电5V,RAW是不会输出的。当然这个在烧录的时候没什么问题,但是后期我们需要调试,所以笔者直接把VCC的供电,接入到RAW上即可,加压供电如下图。
image.png

打开下载好的固件文件夹中的MultiWii.ino

image.pngimage.png
image.png
image.png
image.png
image.png
整个飞控程序中,我们需要配置的只有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](http://java.com/zh_CN/download/manual.jsp?locale=zh_CN)<br />![image.png](https://cdn.nlark.com/yuque/0/2022/png/617118/1661529100166-e4b09473-5969-44cd-8fca-f66c260e056e.png#clientId=u507b509e-0704-4&crop=0&crop=0&crop=1&crop=1&from=paste&height=138&id=ud138c1bd&margin=%5Bobject%20Object%5D&name=image.png&originHeight=275&originWidth=614&originalType=binary&ratio=1&rotation=0&showTitle=false&size=35942&status=done&style=none&taskId=uddeccf87-6e1f-436a-bc07-09db48b1a32&title=&width=307)

image.png

image.png

目录
相关文章
|
存储 搜索推荐 安全
Onlyfans如何使用搜索功能?Onlyfans如何搜索博主?如何在OnlyFans搜索HongkongDoll
本文是一份全面的指南,旨在帮助读者了解如何在OnlyFans平台上有效使用搜索功能,尤其是如何找到特定的博主,比如HongkongDoll。我们深入探讨了OnlyFans的搜索机制,包括其对用户隐私的重视以及因此带来的搜索限制。文章详细介绍了三种主要的搜索方法:使用OnlyFans的官方搜索服务、通过社交媒体链接进行跳转、以及利用第三方搜索引擎如OnlySearch。
|
前端开发 JavaScript Java
没错,你可以移动式编码了:4款最好的Android设备HTML编辑器
作为出色的应用平台,Android系统不仅可以用于登录Facebook或是玩“愤怒的小鸟”,它还可以为web开发人员提供可行的移动式解决方案。然而,web开发者是不可能对那些陈旧的文本编辑器表示满意的——他们需要使用专门的代码编辑器,以便让工作更快速更便捷地完成。下面我将要介绍4款名列前茅用于Android设备的HTML编辑器,任何web开发人员都能利用它们在平板电脑上处理大量工作,或是在智能手机上进行一些快速修改。
3930 0
没错,你可以移动式编码了:4款最好的Android设备HTML编辑器
|
前端开发 Java Maven
【前端学java】全网最详细的maven安装与IDEA集成教程!
【8月更文挑战第12天】全网最详细的maven安装与IDEA集成教程!
532 2
【前端学java】全网最详细的maven安装与IDEA集成教程!
|
存储 缓存 芯片
STM32标准库SPI通信协议与W25Q64-2
STM32标准库SPI通信协议与W25Q64
|
机器学习/深度学习 JSON API
【Python奇迹】FastAPI框架大显神通:一键部署机器学习模型,让数据预测飞跃至Web舞台,震撼开启智能服务新纪元!
【8月更文挑战第16天】在数据驱动的时代,高效部署机器学习模型至关重要。FastAPI凭借其高性能与灵活性,成为搭建模型API的理想选择。本文详述了从环境准备、模型训练到使用FastAPI部署的全过程。首先,确保安装了Python及相关库(fastapi、uvicorn、scikit-learn)。接着,以线性回归为例,构建了一个预测房价的模型。通过定义FastAPI端点,实现了基于房屋大小预测价格的功能,并介绍了如何运行服务器及测试API。最终,用户可通过HTTP请求获取预测结果,极大地提升了模型的实用性和集成性。
1063 1
|
存储 安全 数据管理
磁盘分区全解:快速搞定硬盘分区
本文介绍了磁盘分区的重要性和好处,如数据管理、性能提升和安全增强,并为初学者提供了Windows系统下的磁盘分区指南。文章提到了三种磁盘分区工具:磁盘管理器、Diskpart命令行工具和第三方软件DiskGenius。同时,详细阐述了如何在磁盘管理器中创建新分区、使用DiskGenius一键重新分区、拆分现有分区以及通过Diskpart命令创建分区的步骤。最后,文章强调了磁盘分区在数据管理和系统优化中的价值。
|
机器学习/深度学习 JavaScript Python
熵、联合熵、相对熵、交叉熵、JS散度、互信息、条件熵
熵、联合熵、相对熵、交叉熵、JS散度、互信息、条件熵
794 1
|
开发者 索引 Python
Python中的海象运算符:简洁而强大的赋值表达式
【4月更文挑战第17天】Python 3.8 引入了海象运算符 `:=`,也称赋值表达式运算符,用于在表达式内部赋值,简化代码并提升可读性。它能用于条件判断、循环控制和函数参数等场景,优化逻辑流程。然而,使用时需注意可读性、运算符优先级及赋值限制,以确保代码清晰易懂。海象运算符是Python编程的一个有用工具,但应根据情况谨慎使用。
|
存储
【NI Multisim 14.0虚拟仪器设计——放置虚拟仪器仪表(示波器)】
🍍放置虚拟仪器仪表 NI Multisim 14.0 提供了多种仪器仪表,存储在集成库中,供用户选择使用。下面详细介绍常用的仪器仪表。 🍉示波器 示波器用来显示电信号波形的形状、大小、频率等参数的仪器,如图所示为示波器图标。 选择菜单栏中的“仿真”→“仪器”→“示波器”命令,或者单击“仪器”工具栏中的“示波器”按钮,放置图标,双击示波器图标,打开如图所示的示波器的面板图。 示波器面板各按键的作用、调整及参数的设置与实际的示波器类似,一共分成3个参数设置选项组和一个波形显示区。 1.“时基”选项组 (1)标度 显示示波器的时间基准,其基准为0.1fs/Div~1000Ts/Div可供选择
3129 0
【NI Multisim 14.0虚拟仪器设计——放置虚拟仪器仪表(示波器)】
|
监控 虚拟化 Windows
Win10运行VMware虚拟机时蓝屏问题
Win10运行VMware虚拟机时蓝屏问题的解决办法
1336 0
Win10运行VMware虚拟机时蓝屏问题

热门文章

最新文章