百元零件飞上天的ESP32开源无人机:ESP-Drone飞控实战指南
【免费下载链接】esp-droneMini Drone/Quadcopter Firmware for ESP32 and ESP32-S Series SoCs.项目地址: https://gitcode.com/GitHub_Trending/es/esp-drone
一块240MHz单核的ESP32-S2,带得动500Hz的飞控循环。ESP-Drone 是乐鑫基于 ESP32/ESP32-S 系列做的开源无人机项目:百元级零件、一套完整的飞控固件,手机 APP 或游戏手柄经 Wi-Fi 直接上手,自稳定、定高、定点三种模式开箱可用。
为什么值得做:百元硬件清单
- ESP32-S2 主控(默认 240MHz 单核)+ 4 个微型无刷电机 + 3.7V 500mAh 锂电池
- 六轴 IMU:MPU6050(加速度 ±2g 到 ±16g 可选量程,陀螺仪 ±250 到 ±2000°/s 四档)
- MS5611 气压计:10–1300hPa,精度 ±2hPa,负责高度
- 磁力计 HMC5883L + 螺旋桨 + 脚架
- 加钱项:VL53L1X 激光测距(0–4m,±3%)与 PMW3901 光流(最高 3000dpi,64Hz),装上后定高/定点模式才完整
- 软件是全套:飞控核心、驱动、上位机、APP 源码全开源,控制算法移植自 Crazyflie 项目(GPL-3.0)
它凭什么飞得稳:ESP32 上的传感器融合与串级 PID
多路感知交叉核对
姿态数据没有单一权威来源:陀螺仪反应快但会漂移,加速度计看重力方向但怕振动,MS5611 报高度,VL53L1X 在地面 3–4m 内给出精确距离,PMW3901 光流以 64Hz 输出水平位移。ESP-Drone 用扩展卡尔曼滤波器(EKF)给各路读数按可信度加权,互相校对,输出最终姿态与位置。另外 MPU6050 自带 DMP(数字运动处理器),直接吐出姿态四元数,把最重的解算工作从主控身上卸走。
每2毫秒纠一次姿
姿态环按 500Hz 跑:期望角度和当前角度求误差,比例项立刻拉回、微分项提前预判、积分项抹掉长期偏差,积分限幅防止饱和。输出经分配后落到 4 个电机的转速上,2ms 后重新采样再来一轮。位置环套在姿态环外面,构成串级结构,悬停才不发飘。
算法实现集中在 components/core/crazyflie/(估计器、控制器、500Hz stabilizer 循环),传感器驱动在 components/drivers/。
一天从零搭起来:从焊接到起飞的流程
- 按 docs/ 里的硬件参考装机身:装脚架、焊接 4 个电机、装螺旋桨(正反桨方向别装反),电池最后接。
- 装 ESP-IDF 的 release/v5.0 分支并加入 PATH。
- 克隆仓库并切到 S2 目标板:
git clone https://gitcode.com/GitHub_Trending/es/esp-drone cd esp-drone && idf.py set-target esp32s2- 编译、烧录并打开串口监视:
idf.py build && idf.py flash monitor- 手机或电脑经 Wi-Fi 用 cfclient 上位机连上,实时看传感器数据,在参数字段里调 PID。
- 校准:陀螺仪零偏(保持静止)、加速度计(按提示翻转机身)、磁力计(画 8 字)。
- 通电确认电机转向后先试自稳定,再依次解锁定高、定点模式。
翻车先看这里:4个高频故障对照表
| 现象 | 原因 | 处理 |
|---|---|---|
| 起飞时打转/无法起飞 | 电机转向装反 | 交换对应电机接线,或修改配置里的电机顺序 |
| 飞行中剧烈抖动 | PID 参数不当 | 降低 Kp 或加大 Kd,小步幅重调 |
| 高度缓慢漂移 | 气压计受温度影响 | 启用高度融合或做温度补偿 |
| 定点悬停持续跑偏 | 光流镜头脏污 | 清洁 PMW3901 镜头,必要时重新校准 |
飞起来之后
想带学生讲嵌入式与 ROS 之外的控制闭环?这套代码就是现成教材。想往环境监测、温室巡检这类场景走,换个载荷就行。想玩编队?ESP-Drone 之间可以 Wi-Fi 组网。完整的飞控源码、驱动与中英文档都在这:https://gitcode.com/GitHub_Trending/es/esp-drone ,克隆下来,焊第一块板吧。
【免费下载链接】esp-droneMini Drone/Quadcopter Firmware for ESP32 and ESP32-S Series SoCs.项目地址: https://gitcode.com/GitHub_Trending/es/esp-drone
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考