零基础打造你的第一架 ESP32 开源无人机:从配件清单到首飞的全流程教程
【免费下载链接】esp-droneMini Drone/Quadcopter Firmware for ESP32 and ESP32-S Series SoCs.项目地址: https://gitcode.com/GitHub_Trending/es/esp-drone
想亲手做一架能飞、能悬停、还能用手机控制的无人机,却总被"要懂飞控算法""要会画PCB"这些门槛劝退?好消息是,ESP32 开源无人机项目 ESP-Drone 把这条路彻底铺平了:它把 Crazyflie 这套成熟的开源飞控代码移植到了乐鑫 ESP32 系列芯片上,硬件即插即用,代码开箱即编译。这篇 ESP32 无人机入门教程,将带你从拆开快递包裹开始,一路走到按下油门、看着飞机离地的那一刻。
完成这篇教程后,你会得到什么
按部就班走完全程,你手中会有一架可以随时起飞的四旋翼小飞机,同时收获三样东西:
- ✅ 一架组装完毕、可稳定悬停的 ESP32-S2 四旋翼(支持自稳定、定高、定点三种飞行模式)
- ✅ 一套能随时重新编译、重新烧录的飞控固件,想改参数随时改
- ✅ 手机 APP、PC 上位机两套控制与调试手段,飞行数据尽在掌握
整个过程不需要焊接高密度芯片,也不需要读懂每一行飞控代码——跟着下面的步骤走就行。
先认识一下你的"新伙伴"
在动手之前,花两分钟搞清楚这架飞机是怎么工作的,后面遇到问题才不会一头雾水。
ESP-Drone 的"大脑"是主控板上的 ESP32-S2 模组,它同时干三件事:跑飞控程序、当 Wi-Fi 热点、跟手机通信。传感器的"眼睛"是一颗 MPU6050 六轴传感器(内置陀螺仪 + 加速度计),负责感知机身倾斜和转动。飞控代码则来自 Bitcraze 的 Crazyflie 开源工程——这是学术界和极客圈非常知名的微型四旋翼项目,ESP-Drone 团队把它移植到了 ESP32 上,所以稳定性相当有保障。
这套方案最妙的设计是模块化:主控板负责基础飞行,想升级功能时,往扩展接口上插一块扩展板即可——插上光流 + 激光测距模块就能定点悬停,插上气压计就能定高。相关源码都集中在 components/core/crazyflie/,硬件设计文件则在 hardware/ 目录下,全部开放。
出发前,先把装备清点一遍
开箱前先对照清单,确认配件齐全。这是 ESP32-S2-Drone V1.2 的标准配置:
| 物品 | 规格 | 说明 |
|---|---|---|
| 主控板 | ESP32-S2-WROVER + MPU6050 | 板载 4MB Flash + 2MB PSRAM |
| 电机 | 716 空心杯电机 × 4 | 可换成 720 电机(需改配置) |
| 螺旋桨 | 46mm 桨 A × 2、B × 2 | A/B 转向不同,别装错 |
| 锂电池 | 300mAh 1S | 可换 350mAh 高倍率电池 |
| 充电板 | 1S 锂电池充电板 × 1 | 配套使用 |
| 其他 | 电机橡胶圈 × 4、8-pin 排针 × 2 | 减震和扩展用 |
软件侧需要准备:一台能联网的电脑、手机(装 ESP-Drone APP,Android 与 iOS 都有)、一个 ESP-IDF v5.0 开发环境。手柄是可选项,后面进阶再配也不迟。
第一阶段:把散件变成一架能飞的飞机
组装是整个流程里最"手工"的部分,但别紧张,这架飞机的结构简单到像拼积木。
- 拆板:PCB 板沿预切割线轻轻掰开,得到主板和扩展排针,然后整理电机、桨叶和连接线。
- 装脚架:把 4 个塑料支撑脚对准孔位按压,听到"咔"一声就到位了。
- 焊电机:用电烙铁把 4 个电机的引线焊到主板对应焊点上。红线接正极。⚠️ 注意:单点焊接时间不要超过 3 秒,避免烫坏焊盘和邻近元件;新手建议先用废旧电路板练手。
- 装桨:桨叶分 A、B 两种转向。参照下图——黑色桨装在标 CW 的电机上,红色桨装在标 CCW 的电机上,装反了飞机会直接翻车。
- 接电池:把锂电池插头插入主板 JST 接口,红对正、黑对负。此时白色电源灯常亮,说明系统供电正常。
完整的组装流程图和管脚定义,见 docs/zh_CN/rst/hardware.rst 和下面的示意图。
💡 小贴士:别急着把电池焊死在主板上,用可插拔的 JST 接口,以后换电池、充电都方便。
第二阶段:给飞机装上"大脑"——编译固件
硬件就位,接下来把源码变成能跑的固件。这一阶段全部在电脑上完成,不需要碰螺丝刀。
1. 搭建编译环境
按 ESP-IDF 官方指引安装release/v5.0 分支的 ESP-IDF(这是项目指定的版本,用别的版本可能编译不过)。装完后先编译一个官方示例工程,确认环境本身没问题,再往下走——这一步能帮你把"环境问题"和"项目问题"分开。
2. 拉取项目源码
git clone https://gitcode.com/GitHub_Trending/es/esp-drone cd esp-drone3. 指定目标芯片
idf.py set-target esp32s2默认情况下,目标设为 esp32s2 后,硬件会自动切换为 ESP32_S2_Drone_V1_2 配置。如果你用的是 ESP32 老开发板,则设idf.py set-target esp32。
4. 打开配置菜单
idf.py menuconfig在ESPDrone Config菜单里,你可以看到硬件版本选择、扩展板版本、Wi-Fi 参数、校准角度等配置项。默认值开箱即用,建议先什么都不改直接编译。几个值得知道的选项:
- Wi-Fi Base SSID:默认 "ESP-DRONE",最终热点名会是 "ESP-DRONE-XXXX"(XXXX 取自 MAC 地址)
- Wi-Fi Password:默认 12345678
- calibration angle:如果起飞后发现机身倾斜,可以在这里填角度修正值(单位是 度×100)
5. 编译并烧录
idf.py build idf.py flash monitor编译通过后,用 USB 线连接主控板,烧录完成后会自动进入串口监视器。看到系统日志正常打印、没有红色错误,固件就算装好了。想退出监视器按Ctrl+]。
✅ 完成标志:小飞机上电后,蓝色 LED 先慢闪(传感器校准),随后变为正常闪烁(系统就绪)。
第三阶段:把手机和飞机"配对"
ESP-Drone 自己就是一个 Wi-Fi 热点,配对过程就是普通连 Wi-Fi:
- 给小飞机上电,等蓝色 LED 正常闪烁。
- 打开手机 Wi-Fi 设置,找到名为ESP-DRONE_XXXX的热点,输入密码12345678连接。
- 打开 ESP-Drone APP,点击Connect按钮。连接成功后,小飞机绿灯闪烁——通信已建立。
APP 里有两个地方建议提前看一眼:
- Flight control settings:默认 Mode2(左手油门)、死区 0.2,还有最大倾角 15°、最大油门 90% 等安全限制,新手期保持默认即可。
- Advanced flight control:默认开启,它控制的是最大角度/油门的保护上限,别轻易调大。
首次起飞:一份"起飞前检查单"
第一次起飞前,花一分钟按这份清单过一遍,能帮你避开 90% 的新手事故:
- 飞机头部朝前,天线朝自己,放在绝对水平的桌面上再上电(保证传感器校准准确)
- 观察蓝色 LED 是否从慢闪变为正常闪烁(校准完成、系统就绪)
- 确认绿灯在 APP 连接后快速闪烁(通信正常)
- 检查红灯:头部红灯亮起 = 电量不足,先充电再飞
- 轻推左手油门,看飞机是否快速响应;轻推右手摇杆,确认方向控制正确
- 缓慢推油门到 30% 左右,飞机离地后保持,练习悬停
⚠️ 首次飞行务必在室内、无风、地面开阔的环境进行;建议保留螺旋桨保护罩,直到你能稳定悬停为止。
飞机不听指挥?这份排查手册请收好
新手最容易遇到的三个问题,以及对应的排查路径:
问题一:上电后飞机"抖"或起飞即侧翻大概率是螺旋桨装反或电机转向不对。对照第二阶段的转向图逐一检查,再用上位机观察四个电机的输出是否正常。也可能是传感器安装不水平——在 menuconfig 的 calibration angle 里填入实测偏差(如 pitch 偏差 0.90° 就填 90)。
问题二:连不上 Wi-Fi 热点先确认蓝色 LED 处于正常闪烁状态(系统就绪后热点才会开启);然后在手机上"忘记"该网络重新连接;最后检查密码是否为默认的 12345678。仍不行就重启飞机再试。
问题三:飞行姿态飘、响应迟钝这是 PID 参数问题。使用 PC 端 cfclient 上位机(从crazyflie-clients-python安装,pip3 install -e .后运行cfclient)连接飞机,进入 Parameters 页面在线调整pid_attitude参数组——修改实时生效,不用反复烧录固件。手感参考:机身晃动过大就加大 D 值,反应迟钝就适当加大 P 值。注意在线修改掉电不保存,调试满意后要写回代码或记下来。
cfclient 还能实时绘制传感器数据波形,检查陀螺仪、加速度计读数是否正常,是进阶调试的利器:
玩熟了之后,还有这些进阶方向
当你能稳定起降、悬停,就算正式"毕业"了。接下来可以往这几个方向探索:
- 定点悬停:给主控板插上定点扩展板(PMW3901 光流 + VL53L1X 激光测距),在 menuconfig 里开启 Position Hold 模式,飞机就能在室内"钉"在某个点上。光流驱动在 components/drivers/spi_devices/pmw3901/,激光测距驱动在 components/drivers/i2c_devices/vl53l1/。
- 定高飞行:加装 MS5611 气压计扩展板,切换到定高模式,解放你的油门手指。
- 游戏手柄操控:通过 cfclient 绑定手柄摇杆(Roll/Pitch/Yaw/Thrust 四轴),体验更接近真实航模的操控感。
- 代码改造:飞控核心在 components/core/crazyflie/modules/src/,比如研究 controller_pid.c 理解姿态控制原理,或者看 planner.c 了解路径规划。想搞多机编队,通信链路在 components/core/crazyflie/hal/src/wifilink.c。
资料都在哪:一份资源地图
- 官方文档:docs/zh_CN/rst/ 下按主题分好了快速入门、硬件参考、开发指引、飞控系统、通信协议
- 硬件资料:hardware/ 里有各版本主板/扩展板的原理图、PCB 和 BOM 清单
- APP 源码:ESP-Drone 的 iOS 与 Android 应用均为开源项目,可自行编译改造
- 交流渠道:项目本身接受 Pull Request,遇到问题也欢迎在开源社区提问
写在最后
这一趟走下来,你收获的不只是"一架能飞的无人机"这个结果,更是一整套嵌入式开发的工作流:从看懂硬件结构,到编译烧录固件,再到通过上位机调试控制参数——这些能力在任何物联网项目里都能复用。ESP-Drone 的妙处在于,它把"造飞机"这件事拆成了一个个新手能跨过的台阶,而每一级台阶背后,都是一片可以继续深挖的领域:飞控算法、传感器融合、无线通信……
当你的小飞机第一次稳稳悬停在半空时,那种"我真的把它造出来了"的成就感,值得你亲手体验一次。下一架飞机,试着从改一行 PID 参数开始,让它飞得更顺、更远吧。
【免费下载链接】esp-droneMini Drone/Quadcopter Firmware for ESP32 and ESP32-S Series SoCs.项目地址: https://gitcode.com/GitHub_Trending/es/esp-drone
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考