零基础DIY四轴飞行器超级详细保姆级教程(STM32F407ZGT6主控、WIFI图传、陀螺仪平衡、气压计/超声波定高、手机蓝牙控制等功能)

2023-05-16

前言 

         大四毕业后暑假没事做就花了一点DIY了一个四轴飞行器,是比较大的那种F450机架,不是那种PCB板做机架的小四轴,因为我也是从零基础开始做的四轴,现在就想把自己的过程写成博客分享在网上。下面我会从机械结构、主控和各传感器模块这些方面进行详细介绍。

器件清单 

器件名称淘宝链接数量
普中T100开发板https://m.tb.cn/h.fz0zR1M 1
BMP280气压计https://m.tb.cn/h.fyV4IDf1
F450机架动力套餐https://m.tb.cn/h.fz0C7tb1
HC08蓝牙模块https://m.tb.cn/h.fz0C7tb1
OV2640摄像头模块https://m.tb.cn/h.fBcwmab1
六轴角度传感器https://m.tb.cn/h.fBcDmUV1
WIFI模块https://m.tb.cn/h.fyVgWC4 1
1.8寸TFTOLED显示屏https://m.tb.cn/h.fz0zirx1
HC-SR04超声波测距模块https://m.tb.cn/h.Ua5l80Q?tk=gU4v2twHMcQ1

        如果自己DIY大四轴的话,上述器件搭配按照我的链接购买应该是接近最低成本了。

F450动力套餐及电池等使用介绍 

        其中的F450动力套餐包含F450机架、1045桨叶一套加备用、电调x4、3S航模电池x1、电压报警器(BB响)、B3锂电池充电器x1,一套下来三百出头,其中B3锂电池充电器最好自己另买B6平衡充电器、因为航模电池很娇贵,不能过冲过放,B3充电器是很低端的,保险起见最好换成B6充电器或者更高端的。
        航模电池一定不能过放,买来的电池一般只有出厂电量,一定要先充满再工作,一般3S航模电池只能工作十多分钟,一定要经常用BB响测电池电压,每节电池电压低于3.7V一定要充电,否则过放极易造成电池报废。航模电池过放有两种情况:一、航模电池的每块电池电压都接近于0V,此时还可以抢救一下,方法是用3.7V左右的电压、小电流给电池慢慢充电,将其电压充到3.7V以上,这时候一般就可以恢复功能,但是寿命和容量会大大折扣。二、航模电池中只有一块电池接近0V,其他电池正常,这种情况基本上就无法抢救了,可以自己小心地把坏的电池焊下来,其他电池继续串联使用。航模电池使用有一套口诀:最高4.2V,最低3.7V,长时间存放3.8V。
        电调会有5V的稳压输出,这样就不用外加降压稳压模块给单片机和传感器等模块供电了。在第一次使用电调时需要对电调进行油门校准,即设置最小油门和最大油门,此时最小油门对应的PWM波一个周期内的高电平持续时间为1ms,最大油门对应的PWM波一个周期内的高电平持续时间为2ms,然后根据电调手册进行操作即可。我自己是写了电调校准的代码部分的,在使用的时候用手机蓝牙控制单片机进入电调校准模式即可实现一键油门校准。
        桨叶会有正反桨之分,此套餐有的桨叶型号为“1045”,需要逆时针旋转;有的为“1045R”,需要顺时针旋转。注意不要接反,否则没有升力。

机械安装和自制调试架

        在DIY之前一定要设计好机械结构,一套好的机械方案可以大大节省你的调试时间!!!重要的事情说一遍!!!接下来就是我的一些机械方面的心得:
        1.尽量让你的整个四轴的重心在机架中间,如果发生一边偏沉会让你的PID参数调试变得困难,如果偏沉严重甚至你会无法调试得到合适的PID参数!
        2.尽量把陀螺仪的位置安装在机架中心,因为陀螺仪对高频振动很敏感,当长时间处于高频震动环境下陀螺仪误差很大!把陀螺仪安装在中心可以让四个电机的振动抵消掉一部分。
        3.最好给陀螺仪做好减震措施,比如在飞控下面垫上柔软的海绵,海绵可以降低震动的频率和幅度,让陀螺仪的数据基本不会产生漂移,此种方法亲测有效。也可以在淘宝上买飞控专用的减震垫板,我个人直接用的海绵,通过双面胶连接机架、海绵和飞控。
        4.网上有专门的调试架,既可以调试平衡环也可以调试定高环,但是价格比较贵,两百左右。我是自己自制的调试架,用一根圆形的铁棍将机架架起来,两端固定好,这样可以调试平衡环。高度环(定高)在平衡环调试好以后再进行,用手握住机架下面即可,因为平衡环调试好以后一般不会发生侧翻,但是也要小心操作。

电路设计

        我是在普中T100开发板的基础上画的PCB扩展板,软件用的国产硬件电路设计软件——立创EDA,因为要按照开发板的引脚分布画板子,所以引脚布局有些麻烦,最终画了四层板,尺寸在10cm*10cm以内(这样就可以白嫖嘉立创每个月的免费打板),下面是我画的原理图和PCB板。
板子把模块用到的引脚集成在一起、并且预留了5V和3.3V的电源扩展接口。使用的时候焊好排母,将模块和电调插入即可运行。

        画原理图和PCB板时,里面的符号和PCB封装是按照元器件引脚自己做的 ,里面最麻烦的就是开发板的封装和原理图符号,因为开发板的引脚顺序和PCB和芯片的是不一样的,我只能根据开发板的引脚结构一个个对应(一百多个引脚)。

 

        PS:因为疏忽忘记把扩展板上的PA9、PA10引脚和USB转TTL的相应引脚连上了,所以用的时候需要自己用焊锡把引脚连上,这四个引脚是相邻的,所以很简单。因为一开始没想用超声波测距模块来定高所以没画这一部分,后来用气压计定高时发现气压计测量误差相对较大,定高时出现上下飘移的现象,后来改用超声波定高,超声波测距模块用的WIFI的接口(串口),两者用杜邦线连接,后面有时间的话可能会改进PCB板。
        另外,具体的焊接时里面的电容和降压模块可以不用接,因为开发板自带降压模块和滤波电容,我将它们的接口预留在板子上是因为有人的供电方式可能是单独外接电源供电(5V和3.7V),不用电调的BEC电源输出,这样的话这块板子不仅可以用作飞控板,也可以用作其他方面的学习。

一个成功的四轴飞行器的必备素养及功能实现

        一个基本的四轴飞行器起码需要包含以下功能:可遥控、自平衡、自定高。
        我自己DIY的这款飞行器的遥控功能是用手机遥控的,用的HC08蓝牙模块和手机相连,蓝牙配套软件用汇承的配套蓝牙APP,可以自定义按键名称及功能。自平衡功能用的正点原子的六轴IMU模块,输出当前结算后的姿态角和加速度、角速度等数据,然后用PID算法进行自平衡。定高功能有两种方式来实现:一是气压计,这也是我最开始设计的方式,但是实际操作发现气压计测得的高度误差较大,用来定高飞行器会上下漂移,但是高端的无人机都是用气压计做定高的并且效果很好,原因就是需要用气压计+IMU做数据融合算法实现高度的精确测量,这种算法我个人以前并未接触过,做起来很麻烦,由于时间原因我改用超声波定高。超声波测距离很准确,但是高度有限,我用的超声波传感器最大测量距离典型值为4.5m,在空旷地方最大能达到近7m,勉强够用。
        PS:用超声波定高的话效果其实没有光流模块好,一般的光流模块不仅可以定高也可以定点,其不仅可以测量近地高度,也可以测量水平维度的偏移,加上PID算法可以让飞行器像木桩一样定在空中。当然其缺点也很明显,只能在一定高度内使用,一般在7m以内,如果在高空实现定点功能就需要气压计,IMU和GPS共同来实现。因为预期工作不够,并且只是个人业余的爱好DIY,所以本设计并没用GPS,如果以后有时间或许会将功能完善。

因为时间原因,此篇文章是以一个半成品的状态发布的,各模块具体的功能实现和核心代码没时间做介绍,此篇文章仅供各位作为入门者的总体方案参考即可。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

零基础DIY四轴飞行器超级详细保姆级教程(STM32F407ZGT6主控、WIFI图传、陀螺仪平衡、气压计/超声波定高、手机蓝牙控制等功能) 的相关文章

  • python库的安装、卸载和查询

    python库的安装 卸载和查询 安装库 方法1 xff1a pip install xxx 如图1所示 xff0c 在命令提示符窗口输入pip install xxx xff0c 即可在线安装指定库 xff0c 如输入pip instal
  • 计算机三级 数据库技术 前言

    考试内容及要求 1 掌握数据库技术的基本概念 原理 方法和技术 2 能够使用SQL语言实现数据库操作 3 具备数据库系统安装 配置及数据库管理与维护的基本技能 4 掌握数据库管理与维护的基本方法 5 掌握数据库性能优化的基本方法 6 了解数
  • 计算机三级 数据库技术(Chapter 2)

    第二章 xff1a 需求分析 主要内容 xff1a 需求分析的相关概念以及主要方法需求建模方法案例分析 Class 1 需求分析 1 需求分析的概念与意义 需求 xff1a 需求是指用户对软件的功能和性能的要求 就是用户的要求内容以及对要求
  • 微分几何 Class 1 向量空间

    微分几何 作为一名大三下的数学专业学生 xff0c 我本学期将实时将我所感兴趣的一门课微分几何笔记以及一些总结同步到我的博客上 xff0c 以便进行学习总结与自我督促 参考书 微分几何 苏步青 xff0c 胡和生 xff08 2016 xf
  • 微分几何 Class 2 欧氏空间

    欧氏空间 在上完上一节课之后 xff0c 我才意识到 xff0c 欧氏空间和欧氏向量空间原来不是同一个东西 但是在介绍欧氏空间之前 xff0c 我们首先来了解一下什么叫做仿射空间 Part One 仿射空间 定义 xff1a 仿射空间 设
  • 歌评-《Rex Incognito 尘世闲游》-陈致逸

    时隔一周时间了 xff0c 终于又找到了时间来更新我的歌评内容 虽然身被学校关了起来 xff0c 但是心里还是在歌曲的梦幻世界中畅游hhh 今天我们来听的歌曲也是 The Stellar Moments 闪耀的群星OST专辑中的一首 xff
  • 将Maven的Docker镜像修改为国内源

    声明 xff1a 本文CSDN作者原创投稿文章 xff0c 未经许可禁止任何形式的转载 xff0c 原文链接 前提 在使用Dockerfile构建镜像时 xff0c Maven的Docker镜像内置的是官方源 xff0c 使用起来下载速度太
  • 我看文二代

    文二代 文二代 xff0c 其实就是人们常说的文坛的后辈子女 xff0c 即父母是搞文学的作家 xff0c 子女也和文学脱不了干系 前一段 xff0c 贾平凹的女儿贾浅浅因为其浅浅体诗歌以及部分奇奇怪怪的内容上了热搜 被许多网友痛骂 对此
  • 码农多打拼5年对生子的影响

    码农多打拼五年对生子决策的影响 首先我们确定在这个问题中要处理的对象 xff1a 单个个体 他会有哪些属性呢 xff1f 1 退休年限 2 生活状态 我们要分析的是一个事件对生子数目的影响 xff0c 其实在现当代 xff0c 因为过大的工
  • 微分几何 Class 3 曲线,曲率与挠率

    正则曲线 什么是曲线 在空间中 xff0c 我们会见到各种各样的形状 xff0c 但无论什么形状 xff0c 其根本还是由点和线来构成的 xff0c 这里我们的线是一个直观的理解 xff0c 就是一条直直的 xff0c 有的也是弯的那样的
  • 随机过程 番外篇(随机拟合作业解答)

    一晚上写了三道随机过程的随机模拟的代码 xff0c 分享出来给大家做个参照 1 如果一个随机变量服从的是期望为 mu xff0c 协方差矩阵为 Sigma
  • 小云的生日史书

    小云的生日史 xff1a 生日10月21日 前三岁历史暂且不记录 xff0c 史前时期 xff0c 资料不详 四岁生日 xff1a 白天去了姥姥姥爷家去玩 xff0c 他们都对我的生日表示了祝福 下午便回到了奶奶家里 xff0c 等着生日p
  • 信息论篇-第一次上机作业,你好!

    信息论第一次上机作业 1 图像信源熵的求解 读入一幅图像 实现求解图片信源的熵 span class token triple quoted string string 1 图像信源熵的求解 读入一幅图像 实现求解图片信源的熵 span s
  • 媒体科创部 学习分享 非线性规划

    非线性规划 哇哈哈 xff0c 这次轮到我来讲了 xff0c 虽然很懒 xff0c 但是还是来写博客了 这次我们要谈的东西是非线性规划 非线性规划 非线性规划的定义 目标or限制中包含着非线性函数 线性规划与非线性规划的区别 如果线性规划的
  • 多玩家赌徒输光问题

    在随机过程课堂上我们考虑了赌徒输光问题 知道了成本和概率变化的情况将对赌徒甲和赌徒乙的赌博结果产生了怎样的影响 考虑的问题主要有以下几个方面 本金对胜负的影响 概率对胜负的影响 本金对持续轮数的影响 概率对持续轮数的影响 对上述问题的综合考
  • Spring Boot(Maven)+Docker打包

    声明 xff1a 本文CSDN作者原创投稿文章 xff0c 未经许可禁止任何形式的转载 xff0c 原文链接 本文可以实现 xff1a 将Spring Boot项目从GitHub clone到服务器上后 xff0c 一条命令直接完成依赖下载
  • 解决静态资源文件js/css缓存问题(超详细总结版)

    什么是静态资源文件 顾名思义 xff0c 静态资源文件就是js css img等非服务器动态运行生成的文件 xff0c 统称为静态 资源文件 为什么要缓存静态资源文件 静态资源文件是基本不会改变的 xff0c 没必要每次都从服务器中获取 也
  • 微分几何工具代码

    span class token keyword import span math span class token keyword from span sympy span class token keyword import span
  • 【璀璨数海】第一期 隐函数定理

    隐函数定理 鸽了好久了 xff0c 大三生活真的好累啊 xff01 quad quad 前两天夏令营面试的时候被问到了隐函数定理 xff0c 特此专门写一篇博文来重新复习讲解一下隐函数定理的内容 定理内容 xff1a 假定
  • hive安装与配置

    hive的安装与配置 hive介绍 xff1a Hive是基于Hadoop的一个数据仓库工具 xff0c 可以将结构化的数据文件映射为一张数据库表 xff0c 并提供类SQL查询功能 准备工作 xff1a hadoop集群成功部署卸载自带的

随机推荐

  • 原生spark与pyspark使用比较

    pyspark与原生spark xff08 scala xff09 比较 在学习完spark这个优秀的计算框架后 xff0c 因为当时的学习使用了python api对spark进行交互 xff0c 编写spark的原生语言为sacla x
  • Spark基础测试题

    因最近学习了scala重温spark xff0c 本篇主要是spark rdd的基础编程题 原题目地址 xff1a 题目地址 数据准备 本题所需的数据 data txt 数据结构如下依次是 xff1a 班级 姓名 年龄 性别 科目 成绩 1
  • Spark基础练习系列

    因最近学习了scala重温spark xff0c 本篇主要是spark sql与rdd的基础编程题 第一部分SparkRDD xff1a 原题目地址 xff1a 题目地址 数据准备 本题所需的数据 data txt 数据结构如下依次是 xf
  • sparkstream消费kafka序列化报错

    本篇介绍在window运行环境下 xff0c 使用spark消费kafka数据遇到的几个坑 调试环境IDEA 依赖 span class token operator lt span dependency span class token
  • Hadoop的安装和使用

    前言 xff1a 这个Hadoop的安装和使用操作起来很容易出错 xff0c 反正各种的问题 xff0c 所以在实验过程中需要细心 重复 xff0c 有的时候是机器的问题 xff0c 还有配置的问题 下面我讲一下我遇到的坑 xff01 第3
  • 树莓派 | 解决VNC Viewer无法连接显示问题

    如果觉得本篇文章对您的学习起到帮助作用 xff0c 请 点赞 43 关注 43 评论 xff0c 留下您的足迹 x1f4aa x1f4aa x1f4aa VNC Viewer是一个很不错的远程桌面应用 xff0c 但是我们在树莓派中使用时
  • kubeadm部署k8s,coredns一直处于containercreating状态failed to find plugin “flannel“ in path [/opt/cni/bin]]

    问题 xff1a coredns始终处于containercreating状态 coredns镜像拉取不下来 xff0c 只能手动拉去之后修改tag进行解决这个问题 xff0c 具体步骤如下 xff1a span class token n
  • Docker Compose部署Springboot+Mysql项目

    声明 xff1a 本文CSDN作者原创投稿文章 xff0c 未经许可禁止任何形式的转载 xff0c 原文链接 在上一篇文章Spring Boot Maven 43 Docker打包中 xff0c 我们实现了将Springboot项目源代码一
  • 华为交换机配置LACP模式链路聚合

    文章目录 1 拓扑图2 任务描述3 SwA配置4 SwB配置5 查看配置6 普通模式链路聚合演示 https blog csdn net qq 45042462 article details 120972306 1 拓扑图 2 任务描述
  • Linux 或 树莓派 4B 使用 apt 或 pip 安装 scipy

    下面的安装过程都是在树莓派4B上安装成功的 xff0c 记录一下 xff0c 仅供参考 python 3 7 使用 apt 安装 注 xff1a 这种好像python版本只能在3 8以下 xff0c 其他版本也可尝试 sudo apt ge
  • 树莓派4B 安装 sklearn

    本文记录在树莓派4B中安装sklearn库的步骤以及安装时遇到的问题 安装步骤 sudo pip3 install numpy 61 61 1 23 5 sudo apt get install python3 numpy python3
  • navicat连接mysql报错1251的解决方法

    navicat连接mysql报错1251的解决方法 1 新安装的mysql8 xff0c 使用破解版的navicat连接的时候一直报错 xff0c 如图所示 xff1a 2 网上查找原因发现是mysql8 之前的版本中加密规则是mysql
  • 一个简单的flask实例

    Flask是python编写的轻量级的web框架 span class token comment 导入Flask类 span span class token keyword from span flask span class toke
  • 基础命令(四)

    LINUX基础命令 xff08 四 xff09 一 Tail命令 1 tail使用方法 tail命令用途是依照要求将指定的文件的最后部分输出到标准设备 xff0c 通常是终端 xff0c 通俗讲来 xff0c 就是把某个档案文件的最后几行显
  • Snipaste常用快捷键(详细总结)

    Snipaste快捷键 xff08 详细总结 xff09 全局快捷键 全局操作截屏F1贴图F3退出当前截图Esc截屏并自动复制Ctrl 43 F1隐藏 显示所有贴图Shift 43 F3切换到另一组贴图Ctrl 43 F3 鼠标贴图相关操作
  • 4位数值比较器电路

    4位数值比较器电路 题目描述 xff1a 使用门级描述方式 xff0c 实现4位数值比较器 某4位数值比较器的功能如下表 96 timescale 1ns 1ns module comparator 4 input 3 0 A input
  • Maven项目pom.xml project标签爆红解决方法

    今天在打开项目的时候 xff0c 发现了一个Maven项目的问题 xff0c 在Maven项目的pom xml文件中 xff0c project标签爆出了一个错误 parent relativePath of POM com hrp spr
  • 人工智能学习笔记五——孪生神经网络

    本文将用孪生神经网络模型 xff0c 对手写数字集minist进行相似度比较 xff0c 用的框架是keras 如果还不清楚神经网络 xff0c 可以看一下这篇文章 神经网络 caodong0225 github io MNIST 是一个手
  • Docker Swarm实战初探

    声明 xff1a 本文CSDN作者原创投稿文章 xff0c 未经许可禁止任何形式的转载 xff0c 原文链接 环境 宿主机 xff1a macOS 10 15 7虚拟机平台 xff1a Parallels Desktop 15 1 2虚拟机
  • 零基础DIY四轴飞行器超级详细保姆级教程(STM32F407ZGT6主控、WIFI图传、陀螺仪平衡、气压计/超声波定高、手机蓝牙控制等功能)

    前言 大四毕业后暑假没事做就花了一点DIY了一个四轴飞行器 xff0c 是比较大的那种F450机架 xff0c 不是那种PCB板做机架的小四轴 xff0c 因为我也是从零基础开始做的四轴 xff0c 现在就想把自己的过程写成博客分享在网上