从零到起飞:ESP32 开源飞控 ESP-Drone 完整上手指南
【免费下载链接】esp-droneMini Drone/Quadcopter Firmware for ESP32 and ESP32-S Series SoCs.项目地址: https://gitcode.com/GitHub_Trending/es/esp-drone
几百块钱的配件能凑出一架稳定悬停的自制无人机吗?能。乐鑫开源的 ESP-Drone 项目用 ESP32 芯片加一块自制 PCB,把开源飞控算法搬进了一个掌心大小的小型四旋翼,从装板到起飞只需要一个下午。
一句话讲清它是什么
- 硬件构成:ESP32-S2 主板 + MPU6050 运动传感器 + 4 个 716 无刷电机 + 1s 锂电池。IMU、稳压、扩展接口全部集成在主板上,基础飞行不用外接任何模块。
- 软件栈:基于 ESP-IDF 和 FreeRTOS,飞控核心继承自 Crazyflie 开源工程,上位机用 Python 写成的 cfclient,控制走 Wi-Fi。
- 成本量级:BOM 全套几百元,电机、桨叶、电池都是常见耗材,没有昂贵的定制件。
- 上手门槛:会焊接就能装机;飞控算法已经写好,你主要负责装好、飞起来、调顺。
十分钟把飞机拼出来
硬件组装步骤在 docs/zh_CN/rst/ 里有逐张步骤图,实际操作就 4 个动作:
- 从拼板上拆下主板和 4 根机臂;
- 把 4 个 716 电机焊到机臂上——这一步最关键,装反方向飞机会乱转;
- 装上 4 个起落脚架,保证离地 1cm 以上;
- 装上 4 片 46mm 螺旋桨(正桨、反桨各 2 片,注意区分),最后扣上 300mAh 1s 锂电池。
装完通电就能看到飞控自检。整机重量不到 100g,属于微型机,室内飞没有压力。
PID 到底在调什么
飞机能飞了,但飞得"毛躁"——这要靠调参解决。ESP32 无人机调参不用改代码重新烧录,上位机连上后直接在线改,实时生效:
参数就三组乘数:P(比例)、I(积分)、D(微分),分姿态环(pid_attitude)和角速度环(pid_rate)两层。拿 pitch 举例感受一下手感:
- P 偏大:飞机很"冲",一推杆就猛甩过去再猛拉回来,机身左右摆个不停;
- P 偏小:反应迟钝,遥控杆回中后飞机还歪着,慢慢悠悠地摆回来;
- I 偏大:长时间有倾斜时它会硬把角度"顶"过去,容易过冲;
- D 偏大:输出变得毛糙,电机转速抖动明显;
- 合适时:杆回中,机身在半秒内平稳落回水平,悬停时纹丝不动——就是这种"抓得住"的手感。
在线修改的参数掉电不保存,这正是它安全的地方:调坏了重刷固件就恢复出厂。
飞控每秒在算什么
不用啃公式,记住一条闭环就行:MPU6050 以 1kHz 的频率把加速度和角速度送进来,传感器融合算出当前姿态,PID 拿姿态和目标值算出 4 个电机该转多快,差值通过电机输出落地,下一毫秒传感器再读一遍修正。姿态估计和位置更新在stabilizerTask里逐帧执行,代码入口就在 components/core/crazyflie/modules/src/。
拼完还能玩什么
- 室内定点悬停:加一块 Flow Deck 扩展板(PMW3901 光流 + VL53L1X 测距,驱动代码在 components/drivers/spi_devices/pmw3901/),试试松手后飞机原地悬停、不再随气流漂移的体验。
- 把每次飞行变成数据:上位机能记录电机输出和传感器波形,试试对比"调参前"和"调参后"两组曲线,看抖动是怎么被磨平的。
- 当飞控教学框架:改改
controllerPid的参数逻辑、给任务加个打印,试试自己写一个控制器插进框架里跑通。
准备好一块洞洞板和一个焊接好的电机,代码克隆下来就能开工:git clone https://gitcode.com/GitHub_Trending/es/esp-drone。
遇到问题可以去 ESP-Drone 的 GitCode 项目页提 issue,社区回复通常很快。
【免费下载链接】esp-droneMini Drone/Quadcopter Firmware for ESP32 and ESP32-S Series SoCs.项目地址: https://gitcode.com/GitHub_Trending/es/esp-drone
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考