ESP-Drone

简介

ESP-Drone 是基于乐鑫 ESP32/ESP32-S2 开发的小型无人机解决方案,可使用手机 APP 或游戏手柄通过 Wi-Fi 网络进行连接和控制。目前已支持自稳定飞行、定高飞行、定点飞行等多种模式。该方案硬件结构简单,代码架构清晰,支持功能扩展,可用于 STEAM 教育等领域。项目部分代码来自 Crazyflie 开源工程,继承 GPL3.0 开源协议。

官方资料

ESP-Drone 官方文档

ESP-Drone B站教程

试飞演示视频

01 硬件结构

硬件组成

硬件配置清单

硬件接线图

主板

ESP-Drone v1.2 基于乐心最新 ESP32-S2

搭载常用的 IMU 传感器 - MPU6050

扩展板

主板上定义了一个扩展接口,包括 SPI 总线,I2C 总线,以及 MPU6050 从机接口,可以挂载更多的传感器,当然,也可以作为独立的 GPIO 使用。

官方提供了三种扩展模块:定点模块、气压定高模块、指南针模块。

组装过程

02 软件架构

开发环境

ESP-IDF

ESP-IDF 示例工程结构

动力学原理

代码文件结构

ESP-IDF 基于 FreeRTOS 操作系统,因此控制算法代码和读取传感器的驱动代码都是运行于各个独立的 Task,Task 优先级可于 config 文件夹下面配置。

代码启动流程

入口函数/主函数是 app_main
先启动 platformInit 平台初始化
然后是 systemLaunch 系统启动,系统启动后会触发多个 Task 的创建(ledInit, wifiInit, systemInit, commitInit, commandInit, estimatorKalmanTaskInit, stabilizerInit, test, systemStart)

远程上位机打印的 task dump

可以看到 wifi, timer 等系统默认的 task 优先级最高,除了这些系统的之外,stablizer 自稳 task 优先级最高。

自稳定 task 流程:

task里面有两个负反馈闭环(角速度、角度)

加速度计容易受到震动干扰,陀螺仪容易受到积分误差干扰,采用两者互补的方式计算出相对精确的方向角、反转角、俯仰角。

其余的原理其实可以去代码仓库里面看。

03 调试与使用

支持两种上位机,介绍如下。

ESP-Drone APP

紧急情况下关闭链接开关,两秒后螺旋桨强制停转。

CFclient 上位机

可配合游戏手柄进行控制。

图片

Log && Plotter

配置远程监测变量

图片

在线绘制波形

图片

Param && Console

支持在线飞机参数调整

图片

将打印输出重定向到远程控制台

PID 参数整定

上位机 pid 参数调优,编辑到代码中,然后写到飞机上

04 开发指引

更新或扩展硬件

最多可以挂载三个模块。

不必担心更新或者扩展硬件以后代码变动比较多,飞机代码中做了传感器和飞机算法的解耦。

开发底层飞控算法

比如角度拟合算法、控制算法可以自己在飞机上验证。算法部分同样做了解耦。

开发上层应用

1 个赞

WIFI CONTROLLED DRONE V4 # ONLY NODEMCU BASED