飞行工程师
适合初中/高中生,已完成初级飞行体验,想深入了解无人机工作原理并动手修改代码的同学。
学习周期:1-2 个月,每天 1-2 小时。需要 VS Code + ESP-IDF 开发环境。
教材理念
核心:任务驱动,边改边学,通过修改代码和调参,理解无人机的「大脑」如何工作。
结构:从「看懂代码」→「调参优化」→「传感器数据」→「功能扩展」,逐步解锁无人机的更多能力。
| 阶段 | 项目名称 | 核心技能 | 难度 |
|---|---|---|---|
| 1 | 我的无人机我定义 | 代码修改、C语言基础 | ⭐⭐ |
| 1 | PID 调参挑战 | 闭环控制、参数优化 | ⭐⭐⭐ |
| 2 | 高度计解密 | 传感器数据处理、滤波算法 | ⭐⭐⭐ |
| 2 | 姿态魔术师 | IMU 数据融合、互补滤波 | ⭐⭐⭐ |
| 3 | 避障大师 | 传感器接口编程、实时控制 | ⭐⭐⭐⭐ |
| 3 | 无线绘图板 | Wi-Fi 通信、数据可视化 | ⭐⭐⭐⭐ |
阶段 1:代码入门
项目 01:我的无人机我定义
任务:修改无人机的起飞音效、电机转速范围和 LED 灯效,理解代码结构。
1. 打开项目
解压 starter_code.zip,用 VS Code 打开文件夹。代码结构如下:
main.c— 主函数,控制飞行流程buzzer.c— 蜂鸣器控制,负责音效led.c— LED 控制,负责灯效motors.c— 电机控制,负责转速
2. 修改起飞音效
打开 buzzer.c,找到 tone 数组并修改为《欢乐颂》前两句:
3. 修改电机转速
打开 motors.c,找到并修改 MOTORS_TEST_RATIO 宏:
4. 编译烧录
按 F1,输入 ESP-IDF: Build 编译项目,然后 ESP-IDF: Flash 烧录到无人机。
C语言数组、宏定义、ESP-IDF 项目结构。
项目 02:PID 调参挑战
任务:通过调整 PID 参数,让无人机在有风的环境下也能稳定悬停。
PID 控制器代码
打开 controller_pid.c,核心的 PID 更新函数:
调参指南
默认参数:kp=0.5, ki=0.1, kd=0.2,根据飞行表现调整:
- 晃动厉害 → 减小
kp - 飞不起来 → 增大
kp - 有漂移 → 增大
ki - 反应迟钝 → 增大
kd
PID 控制器原理、闭环控制、参数调优方法。
阶段 2:传感器与数据
项目 03:高度计解密
任务:读取气压计数据,计算真实高度,并实现更精准的定高功能。
额外硬件:BMP280 气压计模块(I2C 连接到 GPIO21/22)。
气压计原理、高度计算、数据滤波、死区控制。
项目 04:姿态魔术师
任务:读取 IMU 数据,用互补滤波算法计算无人机姿态。
调整 beta 参数体会效果:beta=0.1(信任加速度计)vs beta=0.01(信任陀螺仪)。
阶段 3:功能扩展
项目 05:避障大师
任务:用超声波传感器实现前方避障功能。额外硬件:HC-SR04 超声波模块(Trig → GPIO18, Echo → GPIO19)。
项目 06:无线绘图板
任务:通过 Wi-Fi 将飞行数据回传到电脑,用 Python + Matplotlib 实时绘制曲线。
电脑端运行 python plotter.py 即可看到实时飞行数据曲线。
学习建议
- 边做边查:遇到不理解的代码,用 VS Code 的「转到定义」功能查看函数实现,或查 ESP-IDF 官方文档。
- 记录问题:准备一个笔记本,记录调参过程中的现象和解决方案,形成自己的「调参手册」。
- 组队学习:和同学一起做项目,互相讨论问题,分享调参经验。
- 挑战升级:每完成一个项目,尝试添加一个小功能。