Untitled

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 模型，主要是为了以后方便导出模型，在模拟器中进行仿真。或者完成数字孪生等一系列后续可能的课题。

![在这里插入图片描述](https://img-blog.csdnimg.cn/50dd08e1fd2c4f5da7244e2ba2edc4e1.png =600x)

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

![在这里插入图片描述](https://img-blog.csdnimg.cn/c93710b86740410c9ea68a11018d9ecb.png =600x)

1.4 PCB 设计

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

更为具体的内容会在以后的博客中介绍，例如电路原理图，以及 PCB 需要注意的地方。由于也是第一次画板子，所有一定会有很多疏漏的地方，所以可能很多 bug 在所难免。
![在这里插入图片描述](https://img-blog.csdnimg.cn/010e6906770e4b37b41962571ba12021.png =600x)

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 模块留了一个插槽，这样我们就可以直接使用该模块了。整个中控板如下图所示。
![](https://img-blog.csdnimg.cn/39123b3b75bf4e178c8a1b7c62950648.png =600x)

1.4.3 MPU6050

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

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

1.5 总结

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

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