睿诚科技协会

无人机DIY Arduino,如何入门?

太棒了!自己动手用 Arduino 制作无人机是一个非常有趣且富有挑战性的项目,它能让你从零开始了解无人机的每一个组成部分,从硬件组装到代码控制,是一次绝佳的学习经历。

无人机DIY Arduino,如何入门?-图1
(图片来源网络,侵删)

下面我为你整理一份详细的 DIY Arduino 无人机从零到一的完整指南,包含核心概念、所需组件、组装步骤和基础代码。


第一部分:核心概念与准备工作

在开始之前,你需要了解几个关键概念:

  1. 飞行控制器:无人机的“大脑”,它负责接收你的遥控信号,并整合来自陀螺仪、加速度计等传感器的数据,通过精确计算控制电机的转速,以保持平衡或执行你的指令,我们这里的核心就是 Arduino
  2. 传感器 - MPU-6050:这是无人机的“内耳”和“平衡器官”,它是一个集成了 3 轴陀螺仪和 3 轴加速度计的模块,可以测量无人机的角速度和加速度,FCU 通过这些数据来计算无人机的姿态(是否倾斜)。
  3. 电机与螺旋桨:无人机的“肌肉”,通常使用无刷电机和对应的螺旋桨,注意,电机有正反转,螺旋桨也有正反桨,需要正确搭配才能产生向上的升力。
  4. 电调:电子调速器,它介于飞行控制器和电机之间,接收来自 FCU 的 PWM 信号,并精确控制无刷电机的转速。注意:无刷电机必须配合电调使用
  5. 电池:无人机的“心脏”,通常使用 Li-Po (锂聚合物) 电池,能量密度高,但需要小心使用,避免过充过放。
  6. 遥控与接收:你的“指令”,遥控器发送信号,无人机上的接收机接收信号并解码后发送给 Arduino。

第二部分:所需组件清单

为了简化,我们使用一个集成度较高的方案:Arduino Uno + GY-521 (MPU-6050模块) + 无刷电调 + 电机 + 螺旋桨 + 遥控接收机

组件名称 型号/规格 数量 备注
主控板 Arduino UNO R3 1 也可以使用 Arduino Nano,体积更小
姿态传感器 GY-521 (MPU-6050) 1 必须包含 0x68 地址的版本
无刷电机 2212 或 2208KV980 4 四轴常用,KV值影响转速
电调 30A 四合一电调 或 4个独立 20A 电调 1 或 4 四合一更简洁,节省空间和线材
螺旋桨 1045 或 1047 正反桨 各2对 2个正桨(CW),2个反桨(CCW)
电池 3S 11.1V 2200mAh Li-Po 电池 1 3S表示3节电池串联,电压约12.6V
遥控接收机 PWM 接收机 (如 Flysky FS-iA6B) 1 必须支持PWM信号输出
遥控器 6通道或以上遥控器 1 如 Flysky FS-i6
机架 250mm 或 280mm 四轴机架 1 碳纤维或玻璃纤维材质
电源分布板 PDB (可选) 1 用于分配电池电压,简化接线
其他 杜邦线、热缩管、扎带、螺丝等 若干 用于固定和连接

第三部分:硬件组装步骤

  1. 组装机架:将电机臂用螺丝固定在机架中心板上。
  2. 安装电机:将无刷电机固定在电机臂的末端,注意电机轴的方向。务必拧紧螺丝,否则飞行中电机脱落非常危险。
  3. 安装电调
    • 如果使用四合一电调,直接将其用魔术贴或扎带固定在机架中心板下方。
    • 如果使用独立电调,将它们分别固定在电机臂上。
  4. 连接电机与电调
    • 无刷电机有三根线,任意连接到电调的三根输出线上即可,如果电机反转,只需交换其中任意两根电机线即可。
    • 重要:四轴无人机的电机旋转方向必须是 对角同向,即,1号和3号电机同向,2号和4号电机同向,且与1、3号相反,这样才能产生旋转力矩来控制偏航。
  5. 连接电调与Arduino/接收机
    • 信号线:将电调的信号线(通常是白色或黄色)连接到 Arduino 的 PWM 引脚上,我们需要3个以上的PWM引脚。
      • 电调1 -> Arduino D9
      • 电调2 -> Arduino D10
      • 电调3 -> Arduino D11
      • 电调4 -> Arduino D6 (或其他可用PWM引脚)
    • 电源线:将电调的输入线(红色和黑色)连接到电池和电源分布板。注意: 电调输入是高压电,接线时务必断开电池!
  6. 连接MPU-6050
    • MPU-6050 模块通过 I2C 协议与 Arduino 通信,接线非常简单:
      • VCC -> Arduino 5V
      • GND -> Arduino GND
      • SCL -> Arduino A5
      • SDA -> Arduino A4
  7. 连接接收机
    • 将接收机连接到 Arduino 的另外几个 PWM 引脚。
      • 油门通道 -> Arduino D2
      • 副翼通道 (Roll) -> Arduino D3
      • 升降通道 (Pitch) -> Arduino D4
      • 偏航通道 (Yaw) -> Arduino D5
  8. 连接电池:将电池连接到电调的输入端。这是最后一步,确保所有接线无误后再连接!

第四部分:软件与代码 (最核心的部分)

DIY 无人机最复杂的就是软件部分,它包含姿态解算、PID 控制算法等,这里我们提供一个简化版的代码框架,让你能理解基本原理。

无人机DIY Arduino,如何入门?-图2
(图片来源网络,侵删)

准备 Arduino IDE

  • 安装 Arduino IDE。
  • 安装 MPU-6050 的库:Sketch -> Include Library -> Manage Libraries...,搜索并安装 Adafruit MPU6050Adafruit Unified Sensor

核心算法简介

  • 姿态解算:读取 MPU-6050 的原始数据,通过融合算法(如互补滤波或卡尔曼滤波)计算出无人机当前的俯仰角、横滚角和偏航角,这是 PID 控制的基础。
  • PID 控制器:这是实现自稳飞行的关键。
    • P (Proportional - 比例):误差越大,修正力越大,无人机向右倾斜了10度,P项就会产生一个向左的巨大力矩来修正它。
    • I (Integral - 积分):消除稳态误差,因为风的原因,无人机总是微微向右飘,I项会慢慢累积这个小误差,并产生一个持续的修正力。
    • D (Derivative - 微分):抑制震荡,增加稳定性,它根据误差变化的速度来调整,防止无人机修正过度。
  • 混合控制:将来自遥控器的指令(油门、俯仰、横滚、偏航)和来自PID的修正指令,计算出四个电机最终应该输出的转速。

示例代码框架

这是一个非常基础的框架,直接上传是无法飞行的,你需要根据你的硬件和实际情况进行大量的调试,特别是PID参数。

#include <Adafruit_MPU6050.h>
#include <Adafruit_Sensor.h>
#include <Wire.h>
// 创建 MPU6050 对象
Adafruit_MPU6050 mpu;
// 定义电机引脚 (根据你的接线修改)
#define M1_PIN 9
#define M2_PIN 10
#define M3_PIN 11
#define M4_PIN 6
// 定义接收机引脚 (根据你的接线修改)
#define THROTTLE_PIN 2
#define ROLL_PIN 3
#define PITCH_PIN 4
#define YAW_PIN 5
// --- PID 变量 (需要你手动调试!) ---
float pid_p_roll = 1.0;    // 滚转P
float pid_i_roll = 0.01;   // 滚转I
float pid_d_roll = 0.1
无人机DIY Arduino,如何入门?-图3
(图片来源网络,侵删)
分享:
扫描分享到社交APP
上一篇
下一篇