Drone-Mercury 从零开始的四轴无人机制作(一)- 项目介绍

Drone-Mercury 从零开始的四轴无人机制作(一)- 项目介绍

该项目目前还是正在进行的一个状态,Github中提供了现在最新的进度。如果对您有帮助,请点个星星支持一下!
Github地址: https://github.com/Xiangyu-Fu/Drone-Mercury

1. 项目介绍

1.1 引言

这是一个做了很久的项目了,前前后后到现在已经一年多了。这个项目的主要目标是学习一下嵌入式方向的知识,补全和加深硬件方面的技术栈。其它方面例如获得完整地做完一个项目经验等等。项目主要是基于STM32C8T6和ESP32,因为身在国外,由于价格和获取渠道的限制,很多的模块和解决方法无法轻易实现,所以有很多地方进行了修改。这个项目也是单纯的一个DIY的项目,肯定有很多疏漏的地方,也欢迎大家的交流与指正。

整个项目的结构如下所示,目前一下框架的硬件部分已经搭建完成,接下来就是对软件进行一个优化和整合了。所以在未来,这个部分会有所更新。在以后的部分中,我将在其上添加一些高级功能,例如摄像头,或者将无人机与其他机器人结合起来构建集群机器人,以及实现数字孪生等等。
在这里插入图片描述

1.2 参考资料

这个项目参考了很多资料,如下所示

  • 《四轴飞行器DIY》
  • STM32库开发实战指南
  • STM32 HAL库开发实战指南
  • ESP-IDF Programming Guide

以及各种博客和网站在这里无法一一列出。之后博客中用的参考也会在博客中列出。

1.3 项目概览

该四轴的外观如下图所示,是一个非常简单的四轴无人机。其中控制板为自己定制,剩下部分例如电机,和螺旋桨都是在网上购买的套件。这样能保证飞机整体的坚固性和轻便性。需要注意的是,在3D渲染图中,飞机的螺旋桨都是正浆,这在现实中是不可行的。但是为了方便起见,我就没有多画反浆的部分。

至于为什么要创建3D模型,主要是为了以后方便导出模型,在模拟器中进行仿真。或者完成数字孪生等一系列后续可能的课题。

在这里插入图片描述

实际组装好的模型如下图所示,相比于3D模型, 多了很多线的部分。这个版本也没有给无人机单独设计电池仓。电池仓会计划在完成所有软件模块测试后设计。

在这里插入图片描述

1.4 PCB设计

PCB采用4层板的设计,主要包括了主控单元,NRF24L01通信单元,数据采集单元,指示灯,供电模块,还有电机驱动模块。主控板采用STM32F103C8T6, 是一个非常好的入门级的MCU。因为网上的资料很多,所以遇到什么bug也可以更为轻松地找到解决办法。

更为具体的内容会在以后的博客中介绍,例如电路原理图,以及PCB需要注意的地方。由于也是第一次画板子,所有一定会有很多疏漏的地方,所以可能很多bug在所难免。
在这里插入图片描述

1.4.1 STM32C8T6

STM32F103C8T6是一个中密度性能线, 配有ARM Cortex-M3 32位微控制器, 48路LQFP封装. 它结合了高性能的RISC内核, 运行频率可达72MHz, 以及高速内嵌存储器, 增强范围的强化输入/输出和外部连接至两个APB总线. STM32F103C8T6具有12位模数转换器, 计时器, PWM计时器,标准和高级通讯接口. 一套全面的省电模式允许设计者设计低功耗应用.

  • 运行电压范围: 2V至3.6V.
  • 64K字节闪存.
  • 20K字节SRAM.
  • CRC计算单元, 96位特有ID.
  • 两个12位, 1µs模数转换器(高达10通道).
  • 7通道DMA控制器, 3个通用计时器和1个高级控制计时器.
  • 37个快速输入输出端口.
  • 串行线调试器(SWD)和JTAG接口.
  • 两个SPI, 两个I2C, 三个USART, 一个USB和一个CAN接口.
  • 环境运行温度范围: -40°C至85°C

1.4.2 NRF24L01

RF24L01收发器模块

我们采用NRF24L01收发器模块作为遥控器和四种之间的通信方式。

让我们仔细看看NRF24L01收发器模块。它使用2.4 GHz频带,可以在250 kbps到2 Mbps的波特率下工作。如果在开放空间中使用且波特率较低,则其范围可达100米。

该模块可以使用125个不同的通道,这使在一个地方拥有125个独立工作的调制解调器的网络成为可能。每个通道最多可以有6个地址,或者每个单元可以同时与最多6个其他单元通信。

在传输过程中,该模块的功耗仅为12mA左右,甚至低于单个LED。 模块的工作电压为1.9V至3.6V,但好处是其他引脚可以承受5V逻辑,因此我们可以轻松地将其连接到STM32,而无需使用任何逻辑电平转换器。

其示意图如下所示,图片来源见水印。

在这里插入图片描述

我们直接为NRF24L01模块留了一个插槽,这样我们就可以直接使用该模块了。整个中控板如下图所示。

1.4.3 MPU6050

MPU6050是一种非常流行的空间运动传感器芯片,可以获取器件当前的三个加速度分量和三个旋转角速度。我们在中控板中集成了MPU6050来获取四轴当前的姿态。以下是来自网上的介绍。

MPU6050是集成六轴运动处理模块,即三轴MEMS陀螺仪传感器和三轴MEMS加速度传感器,相较于多组件方案,集成模块可以免除各个组件时间轴之差的问题,还能大大减小封装的空间。 模块一般在智能手机、手持游戏产品、导航设备、电子稳像等领域发挥重要作用。是集成六轴运动处理模块,即三轴MEMS陀螺仪传感器和三轴MEMS加速度传感器,相较于多组件方案,集成模块可以免除各个组件时间轴之差的问题,还能大大减小封装的空间。 模块一般在智能手机、手持游戏产品、导航设备、电子稳像等领域发挥重要作用。

1.5 总结

以上就是比较重要的一些关于项目的介绍,由于也是最近课业压力比较大,可能也会更新很久,但是还是希望能在今年把这个项目完成吧。这个项目前前后后也做了一年有余,但是总是因为各种各样的事情耽搁了。希望这个学期能多挤出一些时间来完成这个项目。

博客内容部分,接下来就会专门的对各个模块开始介绍了,从硬件到软件。软件部分准备分成两个小的部分,首先就是基于最基本的stm32库的程序。基于基本stm32库的代码已经完成了,也完成了对各个模块的测试,非常可喜的是所有的模块都工作正常。但是为了未来能更快的部署项目,和为了面向这个学期将要做的FOC项目,所以我计划将所有程序都更改成基于HAL库,这样就更会有统一的代码标准,也更方便以后的代码移植。所以未来要准备多写一些关于CubeMX与CubeMX IDE使用的博客,留作记录。

猜你喜欢

转载自blog.csdn.net/qq_37266917/article/details/127525272