
ESP32迷你无人机
简介
基于ESP32开发板的迷你小飞机,仅需1块开发板,MPU6500模块,4个AO3416电机芯片,4个8520电机,可用QGC手机APP,或SBUS接收机+大遥控! 一把电烙铁铁就能复刻!
简介:基于ESP32开发板的迷你小飞机,仅需1块开发板,MPU6500模块,4个AO3416电机芯片,4个8520电机,可用QGC手机APP,或SBUS接收机+大遥控! 一把电烙铁铁就能复刻!开源协议
:GPL 3.0
(未经作者授权,禁止转载)描述
1、工程概述
ESP32迷你小飞机!迷你小四轴!本项目主要元件只需1块ESP32开发板,1个MPU6500模块,1个ME6118A33PG稳压芯片,4个AO3416电机芯片,4个8520空心杯电机,1块802035软包锂电池作为动力,以及少量电容电阻排针排母。
没有复杂的密集引脚芯片!只需一把电洛铁就能复刻成功!

烧录附件的bin固件,ESP32将发射名为Drone_WIFI的信号,密码12345678
小飞机可通过QGC手机APP,连接无人机ESP32发射的WIFI信号进行控制,有手机就能飞!
QGC手机APP,可在QGC官网https://qgroundcontrol.com/
安装后首次启动时,APP信息弹框(翻译为:车辆信息可能有误),固件可选:Mavlink通用,飞机选:Mavlink Generic

关于QGC APP虚拟摇杆的问题,反复有新人问到,请看截图说明,以后此问题不再回复!

当然,这款小飞机也支持SBUS接收机+大遥控!
图示用的是乐迪R6DS或R6DSM接收机,及乐迪AT9S Pro遥控器。
接收机蓝紫色灯为SBUS/PPM模式。
另外,你也可以魔改支持ELRS接收机的,请继续看下文。

2、PCB设计
为降低制作难度,方便零基础,且缺少工具的朋友复刻,本项目采用的核心元件ESP32、MPU6500以及排针排母,都是直插件。
少量的贴片电容电阻,间隔也很宽,如果你没有热风机,我相信用尖头的电烙铁也能制作。
2025年10月28日开源V1.2版,PCB布局如下:


经过广大网友的复刻测试验证,在V1.2版基础上总结经验的基础上,
2025年11月25日更新V1.3版进行几处微调:


第1处,是把贴片元件全部放在顶面,方便一些朋友使用恒温焊台贴片;
第2处,是每个机臂8520电机的焊点两端加上了肖特基二极管,减少反向电动势击穿MOS管的风险;
第3处,是把每个AO3416的栅极电阻改为47Ω;
AO3416、SI2300A、AO3400和SI2302均属于低压大电流的MOSFET。根据其特性,栅极驱动电阻通常建议取10Ω~100Ω。
电阻值过小(如远小于10Ω)虽然能加快开关速度,但可能导致开关过程中产生较大的电压和电流震荡,增加EMI。
电阻值过大(如远大于100Ω)则会显著减慢开关速度,增加开关损耗。
在10Ω至100Ω的范围内,可以找到一个兼顾两者的折中点。
为了在开关速度和电磁干扰(EMI)抑制之间取得平衡,推荐栅极驱动电阻设置在10Ω至100Ω之间,因此我们取47Ω;
第4处,是在底面增加微型DC-DC升压模块的贴片焊盘,先将3.7V锂电池升压到5V,再通过ME6118A33PG稳压到3.3V,开发板功能更稳定。
有效减少一些老旧锂电池或低倍率电池在马达启动瞬间电压拉低导致开发板重启。
如果你使用高倍率低内阻高性能的电池,就可能不需要焊接底面的5V升压模块;
我们在正面增加一个0欧姆的R12电阻焊盘,你可以把R12电阻焊盘直接用铜导线直连!
总结这段话的意思是:
用5V升压模块时,0欧姆电阻焊盘断开!
不用5V模块时,0欧姆电阻焊盘直连!
微型升压模块高清图,模块尺寸约22*11mm,模块默认输出12V,电流0.4A,
你需要用电烙铁把AB点的焊锡清理,让AB点断开,改为5V,1A输出。
第5处,是有网友反馈,小飞机起飞后,分不清头尾,因此V1.3版,在机臂的下方增加了4颗LED灯。
焊接的时候,建议采用“绿头红尾”原则,即LED2、LED5焊接绿光LED,LED1、LED3、LED4焊接红光LED。
3、固件烧录
本项目参考和使用Arduino社区okalachev用户开源的Flix项目,进行原理图、PCB设计和代码编译。
https://projecthub.arduino.cc/okalachev
原设计采用的是ESP32 D1 Mini开发板,3D打印机架,使用导线进行各种元件和MOS管连线,制作比较麻烦。
我也用3D打印件做过(前面插图白色的小飞机),但是成品太重,稳定飞行比较困难。
飞控烧录有两种方法:
第1种,可下载Flix源代码进行魔改和编译。
编译环境可用Arduino IDE,或VSCODE。
使用Arduino IDE上传代码,需要正确配置Arduino IDE for ESP32开发环境(网上很多教程),编译过程如果提示缺少库文件,那就按提示在线安装Flix源代码所需的库。
主要库文件包括:MAVLink、flixperiph等。
我的开发环境,已经是2年前安装的了。我编译环境使用的是Arduino IDE 2.3.2+Arduini-esp32的版本为3.1.0(能用就一直没有更新)。
经网友复刻测试,安装新版Arduino IDE 2.3.2+Arduino-ESP32_3.3.4也可以正常编译。
Flix项目,是一套优秀的基于Arduino IDE+ESP32开发的飞控代码,当前总代码量仅1800行,采用模块化设计、代码逻辑结构清晰、阅读简单易懂、魔改和拓展非常方便,
尽力给大家推荐学习这套代码!可以借助国产DeepSeek、Kimi、豆包等各种AI工具的编码能力,对源代码进行魔改升级。
比如增加气压计、光流计、超声波等拓展,应该都是可行的。
附件上传了,据说零编程经验的群友“振生”同学魔改后兼容ELRS接收机的源代码,供你参考!
大家可自行下载和配置环境:
https://www.arduino.cc/en/software
https://github.com/espressif/arduino-esp32
如果你愿意从代码开始折腾或者基于我们开源的PCB进行魔改,欢迎加Q群探讨:203402819.
第2种,使用乐鑫官方flash_download_tool烧录工具,直接使用编译好的bin文件。
乐鑫Flash 下载工具用户指南,官方页面:
烧录方法:电脑先安装CH340串口驱动才能烧录(我买的ESP32开发板使用的CH340串口芯片,你如果买的是CP2102,CH9102,也需要安装相应的驱动)。
如下图所示,加载bin文件,地址填0x0,选择正确的COM口,其他默认,然后点Start,等下方绿色的进度条跑完,即可。

4、系统初始化
代码固件烧录后,小飞机暂还不能稳定的飞行,需要进行校准陀螺仪加速度;如果外接Sbus接收机,还需校准RC遥控。
如下图所示,你可以使用任意串口监视器进行校准,建议使用Arduino IDE自带的串口监视器。
也可以使用QGC地面站的Mavlink控制台通过WIFI连接飞控调参!

按一下ESP32开发板的重启按钮,稍等片刻,串口将出现以上界面。
你可以按提示,在串口信息框输入命令,查看各种信息,包括测试马达。
比如输入mfr指令,右前的马达会旋转。
输入reboot指令,无人机飞控会重启!
输入cr指令,校准RC遥控器,附件提供的20250805固件,校准遥控器一共9步;
自行编译的后续新代码,改成了8步,内容类似。
按串口提示,拨动摇杆进行校准,每个步骤需保持3秒:
1/9 校准遥控,所有摇杆归中位置[3秒];
2/9 左摇杆:向下,右摇杆:居中[3秒];
3/9 左摇杆:居中,右摇杆:居中[3秒];
4/9油门通道识别,左摇杆:向上推到底(油门最大),右摇杆:居中[3秒];
5/9 偏航通道识别,左摇杆:向右推到底(偏航右转)右摇杆:居中[3秒];
6/9 俯仰通道识别,左摇杆:向下推到底,右摇杆:向上推到底(俯仰前进)[3秒];
7/9 横滚通道识别,左摇杆:向下推到底,右摇杆:向右推到底(横滚右转)[3秒];
8/9 解锁通道识别,找到你准备用作解锁的开关,拨到解锁位置并保持3秒[3秒];
9/9 模式通道识别,先将解锁开关拨回锁定位置,然后将模式开关拨到最高档位(如手动模式)[3秒];
输入ca指令,校准陀螺仪加速度计,一共6步,每个步骤需保持8秒:
校准加速计Calibrating accelerometer;
1/6 水平放置[8 sec]将飞行器机头朝前(正常飞行方向),底部朝下水平放置在平坦表面,确保完全水平无倾斜;
2/6 机头朝上[8 sec]保持机头朝前,将飞行器前端抬起约90°,使机头指向天空,尾部接触支撑面;
3/6 机头朝下[8 sec]机头朝前,将飞行器前端下压约90°,使机头指向地面,尾部朝上;
4/6 右侧朝下[8 sec]机头朝前,将飞行器整体向右侧倾斜,直至右侧机臂垂直向下,左侧机臂朝上,机身呈90°侧倾;
5/6 左侧朝下[8 sec]与右侧相反,机头朝前时左侧机臂垂直向下,右侧朝上,保持机身稳定无晃动;
6/6 倒置放置[8 sec]将飞行器完全翻转,顶部朝下、底部朝上,机头方向保持不变,整体呈水平倒置状态;
✓校准完成Calibration done!;
以上cr和ca校准完成后,在串口指令框输入p命令,
查看遥控器通道是否正确,找到最底下类似消息:
22:02:07.842 -> RC_ROLL = 0
22:02:07.842 -> RC_PITCH = 1
22:02:07.842 -> RC_THROTTLE = 2
22:02:07.842 -> RC_YAW = 3
22:02:07.842 -> RC_ARMED = 9
22:02:07.842 -> RC_MODE = 4
通道映射正确。
横滚为0,俯仰为1,油门为2,航向为3,解锁为9,模式开关为4。
我视频里用的是乐迪AT9S Pro遥控器,R6DS或R6DSM接收机。
这是美国手的设置,左边摇杆是油门和方向,右边摇杆是横滚和俯仰
如果通道识别有误,你可以重新校准或者使用命令直接绑定,
比如串口输入指令p RC_THROTTLE 2 (绑定2通道为油门,注意中间的空格)
串口输入指令p RC_YAW 3(绑定3通道为航向,注意中间的空格)
5、关于参数调整
串口对话框,输入p指令,看到如下参数,
这是系统默认参数,你对比一下,可以这些参数试试。
其中RC开头是跟大遥控器和接收机相关,包括各通道的RC_ZERO零值和RC_MAX最大值。
16:39:02.628 ->
16:40:58.542 -> ROLLRATE_P = 0.05
16:40:58.542 -> ROLLRATE_I = 0.2
16:40:58.542 -> ROLLRATE_D = 0.001
16:40:58.542 -> ROLLRATE_I_LIM = 0.3
16:40:58.542 -> PITCHRATE_P = 0.05
16:40:58.542 -> PITCHRATE_I = 0.2
16:40:58.542 -> PITCHRATE_D = 0.001
16:40:58.575 -> PITCHRATE_I_LIM = 0.3
16:40:58.575 -> YAWRATE_P = 0.3
16:40:58.575 -> YAWRATE_I = 0
16:40:58.575 -> YAWRATE_D = 0
16:40:58.575 -> ROLL_P = 6
16:40:58.575 -> ROLL_I = 0
16:40:58.575 -> ROLL_D = 0
16:40:58.575 -> PITCH_P = 6
16:40:58.575 -> PITCH_I = 0
16:40:58.575 -> PITCH_D = 0
16:40:58.575 -> YAW_P = 3
16:40:58.575 -> PITCHRATE_MAX = 6.28319
16:40:58.575 -> ROLLRATE_MAX = 6.28319
16:40:58.575 -> YAWRATE_MAX = 5.23599
16:40:58.575 -> TILT_MAX = 0.523599
16:40:58.575 -> ACC_BIAS_X = 0.276616
16:40:58.575 -> ACC_BIAS_Y = 0.0947046
16:40:58.575 -> ACC_BIAS_Z = 0.164785
16:40:58.575 -> ACC_SCALE_X = 0.997283
16:40:58.575 -> ACC_SCALE_Y = 0.99832
16:40:58.575 -> ACC_SCALE_Z = 1.00948
16:40:58.575 -> RC_ZERO_0 = 1003
16:40:58.615 -> RC_ZERO_1 = 1011
16:40:58.615 -> RC_ZERO_2 = 220
16:40:58.615 -> RC_ZERO_3 = 1000
16:40:58.615 -> RC_ZERO_4 = 1800
16:40:58.615 -> RC_ZERO_5 = 0
16:40:58.615 -> RC_ZERO_6 = 0
16:40:58.615 -> RC_ZERO_7 = 0
16:40:58.615 -> RC_MAX_0 = 1793
16:40:58.615 -> RC_MAX_1 = 214
16:40:58.615 -> RC_MAX_2 = 1800
16:40:58.615 -> RC_MAX_3 = 1800
16:40:58.615 -> RC_MAX_4 = 200
16:40:58.615 -> RC_MAX_5 = 0
16:40:58.615 -> RC_MAX_6 = 0
16:40:58.615 -> RC_MAX_7 = 0
16:40:58.615 -> RC_ROLL = 0
16:40:58.615 -> RC_PITCH = 1
16:40:58.615 -> RC_THROTTLE = 2
16:40:58.615 -> RC_YAW = 3
16:40:58.615 -> RC_ARMED = 9
16:40:58.615 -> RC_MODE = 4
16:40:58.615 -> MAV_CTRL_SCALE = 0.7
据网友实测调试,以下微调后的PID参数,飞行更加稳定,供你参考:
ROLLRATE_P = 0.06
ROLLRATE_I = 0.2
ROLLRATE_D = 0.002
ROLLRATE_I_LIM = 0.35
PITCHRATE_P = 0.05
PITCHRATE_I = 0.2
PITCHRATE_D = 0.001
PITCHRATE_I_LIM = 0.35
YAWRATE_P = 0.4
YAWRATE_I = 0.01
YAWRATE_D = 0.01
ROLL_P = 7
ROLL_I = 0
ROLL_D = 0
PITCH_P = 7
PITCH_I = 0
PITCH_D = 0
YAW_P = 3
关于PID参数,涉及到的源代码,主要是control.ino代码文件,以下是关于PID参数默认参数的代码注释,你可以参考进行调整。

6、元件物料
本项目,主要的物料包括锂电池、ESP32开发板、MPU6500模块、8520空心杯电机。
其他元件都比较便宜,但有些最小购买量的约束,购齐全部物料成本约60-65元。
| ID | 位号 | 型号 | 封装 | 单价 | 单片用量 | 单位 |
| 1 | 3.7V锂电池 | 尺寸802035或902240、802045 | 买1块送充电线 | 16.98 | 1 | 片 |
| 2 | BOARD1 | ESP32开发板30pin,CH340C | ESP32-DEVKITV1 | 14.5 | 1 | 片 |
| 3 | MPU1 | MPU6500陀螺仪三轴姿态传感器 | MPU6500模块 | 3.05 | 1 | 片 |
| 4 | 有刷电机(红蓝线)不同颜色,方便区分 | 8520空心杯电机,轴径1.2mm | 红蓝线 | 1.9 | 2 | 个 |
| 5 | 有刷电机(黑白线)不同颜色,方便区分 | 8520空心杯电机,轴径1.2mm | 黑白线 | 1.9 | 2 | 个 |
| 6 | 75mm桨叶(易损,多买一些!) | 75mm,孔径1.2mm | 75mm桨叶1对 | 0.97 | 2 | 对 |
| 7 | H2,H1(多买几个) | HDR-M_2.54_1x15P母座 | 插件 | 0.17 | 2 | 个 |
| 8 | U1(多买几个,备用) | ME6118A33PG | SOT-89-3 | 0.26 | 1 | 只 |
| 9 | Q4,Q1,Q3,Q2(多买几个,烧机可换芯) | AO3416或SI2300A,电流6A以上 | SOT-23 | 0.16 | 4 | 只 |
| 10 | R1,R3,R5,R7,贴片电阻47Ω | 0603贴片电47欧,精度±1% | R0603 | 0.88 | 4 | 只 |
| 11 | R9(LED的限流电阻,随便用1K-10K) | 1K 贴片电阻 | R0603 | 0.8 | 1 | 只 |
| 12 | R2,R4,R6,R8,R11 | 10K 贴片电阻 精度1% | R0603 | 0.8 | 5 | 只 |
| 13 | R10 | 33kΩ贴片电阻 精度1% | R0603 | 0.8 | 1 | 只 |
| 14 | C9,C4,C1,C2,C6,C8,C3 | 100nF | C0603 | 1.5 | 7 | 只 |
| 15 | C5,C7 | 22uF ±20% 25V 贴片电容 | 0805 | 5 | 2 | 只 |
| 16 | LED2、LED5 | 0805贴片LED灯,绿光 | LED_0805绿色 | 1.1 | 2 | 只 |
| 17 | LED1、LED3、LED4 | 0805贴片LED灯,红光 | LED_0805红色 | 0.88 | 3 | 只 |
| 18 | ESC3,ESC1,ESC2,ESC4 | HDR-M-2.54_1x3排针 | HDR-M-2.54_1X3 | 0.1 | 1 | 条 |
| 19 | 90度弯针间距2.54MM 1*40P | 弯针(多买几条备用) | 弯针 | 0.15 | 1 | 条 |
| 20 | J1、J2电池母座 (不买可用弯排针代替) | 51005空对空电池母座 | BAT51005 | 0.07 | 2 | 个 |
| 21 | 硅胶双面护线圈 | 胶圈内孔8*卡槽2mm(10只) | 胶圈 | 2 | 1 | 袋 |
| 22 | 3.7V转5V迷你DC-DC升压模块(可选) | 网友实测升压5V再降压3.3V更稳定 | ESP32供电更稳定 | 1.85 | 1 | 片 |
| 23 | 51005空对空电池连接线母头(可选) | 如果不买电池母座,可买母线 | 空对空母线 | 0.49 | 1 | 条 |
7、网友复刻展示
感谢嘉立创提供的PCB打样免费券!
PCB免费打样规则,详见官方领券专区:
https://www.jlc.com/newOrder/#/collectCoupons?spm=JLC.MEMBER
以下是2025年11月首批复刻成功案例,来自:先永、刘振生、梁木木、Evis、深淼等网友,一并感谢万能的粉丝以及潜水的网友!
看你们聊天,每天学到很多奇奇怪怪的知识(手工狗头)。
更多复刻照片和飞行视频,可查阅群相册。

8、其他
PCB板上丝印H1和H2,扩展排针,也可以不焊接。减重!
PCB上丝印ESC1-ESC4的位置,预留4个3p排针孔,是为了接无刷电调预留的接口,可不焊接。
你可以借助万能的AI,对Flix源代码进行魔改和拓展。
(这块PCB板,计划兼容F450机架+30A电调+2212无刷电机,等万能的网友魔改验证)。
欢迎持续关注!
一如既往,本开源项目,也是先徒手画的PCB,再补的原理图。
在嘉立创EDA菜单,设计---检查DRC,会报“网表错误”!可以不用理会!

你可以在“设计”菜单,选“检查DRC(自定义)”,拉到底部,不要勾选“原理图网表”!
然后点“立即检查”,就不会爆网表错误了!打板没问题的!
9、视频演示讲解
陆续上传ESP32迷你小飞机,实物视频讲解和功能演示,发在B站“微辣火龙果”账号上。
01_开源ESP32迷你小飞机实物演示(含元件简介、组装注意事项、遥控接收机等)
https://www.bilibili.com/video/BV14vyqBFEJn/
02_固件烧录
03_编译环境及代码简介
.....B站会继续更新相关视频....
11
设计图
未生成预览图,请在编辑器重新保存一次BOM
暂无BOM
克隆工程

评论