okalachev/flix

Making an ESP32-based quadcopter from scratch

它是什么

Flix(flight + X 的缩写)是一个围绕 ESP32 微控制器构建的开源四轴飞行器。它是从零开始设计的——包括硬件和软件——并且用于教育和研究,而非商业用途。

当前状态

  • 版本 1.1 存在,带有 3D 打印框架;早期也有版本 0。
  • 该项目实际可以飞行——演示视频链接在 README 中。
  • 一个专用 PCB(称为 Flix2)正在开发中。
  • 位置控制功能(自动保持位置)也在开发中,并有一个使用头顶摄像头的演示。

主要特点

  • 由通用、现成的组件构建(ESP32 板、IMU 传感器、有刷电机、MOSFET 等)。
  • 用 Arduino 编写的简单、干净的固件——代码少于 2000 行。
  • 通过 Wi-Fi 或 ESP-NOW(一种短距离无线协议)使用 MAVLink 协议进行通信。
  • 可以使用 USB 游戏手柄、遥控器或智能手机进行控制。
  • 包含一个用于配置和分析的无线命令行界面。
  • 有一个用 Gazebo 构建的精确模拟器,运行与真实无人机相同的 Arduino 代码。
  • 提供一个用于脚本编写和自动飞行的 Python 库。
  • 一本关于飞行控制理论和实践的教科书正在开发中(位于 quadcopter.dev)。

硬件

  • 主控板: ESP32 Mini(也支持 ESP32-S3 和 ESP32-C3 板)。
  • 传感器: GY-91(MPU-9265)或其他 MPU-9250/MPU-6500 板、ICM20948V2 或 GY-521(MPU-6050)。
  • 电机: 4× 8520 3.7V 有刷电机。
  • 螺旋桨: 55 毫米或 65 毫米。
  • 开关: 4× MOSFET 晶体管(UMW 100N03A 或类似型号——README 警告不要使用其他制造商)。
  • 电池: 3.7V 锂聚合物电池,建议 25C,容量 1000 mAh 或更高。
  • 框架: 3D 打印(提供 STL 和 STEP 文件),并推荐打印设置(0.2 毫米层高,0.4 毫米线宽,100% 填充)。
  • 控制器选项: 基于 CC2500 的发射器(例如 BetaFPV LiteRadio)、通过 Wi-Fi 的双摇杆游戏手柄,或其他选项。
  • 可选部件: 带 SBUS 接口的 RC 接收器、用于更稳定电源的升压转换器、电池电压分压器。

组装与接线

  • README 提供了简化的连接图和电机连接方案(MOSFET 接线)。
  • 它包含一个逐引脚表格,用于将 IMU 板连接到 ESP32(通过 VSPI),以及将四个电机连接到特定的 GPIO 引脚。
  • 可选的 RC 接收器连接到 UART2;可选的电池电压分压器连接到 ADC1 引脚。
  • 所需工具:3D 打印机、烙铁、焊锡丝、螺丝刀、万用表。

软件与仿真

  • 模拟器在 Gazebo 中运行原始 Arduino 代码,因此模拟行为与真实无人机一致。
  • 一个 Python 库(位于 tools/pyflix)支持脚本编写和自动飞行。
  • README 链接到文档文章:组装说明、使用(构建/设置/飞行)、仿真指南、Python 库文档、固件架构概述、故障排除和日志分析。

社区与资源

  • 官方 Telegram 频道(俄语)跟踪开发:t.me/opensourcequadcopter。
  • 官方 Telegram 聊天(英语/俄语):t.me/opensourcequadcopterchat。
  • 一篇关于无人机开发的详细 Habr 文章(俄语)。
  • 文档中维护了一个用户构建画廊。

重要注意事项

  • 这是一个 DIY 项目——README 明确说明它不容易组装和设置。
  • 它按“原样”提供,不提供任何保修;作者不对损坏、伤害或损失负责。
  • 某些组件有严格的要求(例如,精确的 3.7V 电机、特定的 MOSFET 制造商、匹配的螺旋桨孔径)。
  • IMU 板上的气压计目前未使用。
  • 框架针对 GY-91 板进行了优化;其他 IMU 板可能需要修改安装孔位置。

如何开始

  1. 阅读 README 中链接的组装说明和使用文档。
  2. 收集列出的组件(或先使用模拟器)。
  3. 3D 打印框架部件。
  4. 按照原理图进行焊接和接线。
  5. 烧录 Arduino 固件并按照设置指南操作。
  6. 可选地使用 Python 库进行脚本飞行。

相关

  • 项目
  • 项目
  • 项目
  • 项目