发作品
标准版

【CW32】芯源4轴无人机

2.1w
0
0
46
简介:使用CW32F030C8T6芯片,开发4轴无人机,配合自主设计的控制软件,实现飞行控制和监测
开源协议:Public Domain
创建时间:2022-05-18 20:50:03更新时间:2023-04-17 16:18:52

描述

前言

  • 报名参与了立创EDA和芯源半导体合作的训练营项目,计划开发一款基于芯源CW32系列芯片的4轴无人机,促进国产芯片的应用
  • 该开源工程曾于2022年首次发布,但由于学业繁忙而未完善,此次更新后再次发布
  • 后续依然会继续优化该工程,敬请期待
  • 该开源工程的部分内容已纳入个人毕业论文,望读者知悉

 

开发记录

2022.XX.XX

① 设计 硬件电路 & PCB

② 开发 MPU6050驱动

③ 初步移植 开源飞控算法,编写飞控程序

 

2022.XX.XX

① 接入 匿名上位机,呈现 姿态数据

 

2022.XX.XX
① 改进 & 优化 飞控程序,实现 基础飞行控制
② 调整 PID参数,减少飞行时的漂移和抖动

 

2022.XX.XX
① 设计 机架结构件 & 电池仓结构件
② 开发 BMP280驱动


2022.XX.XX
① 开发 CW32无人机控制软件(基于QT),发行版本 V1.1


2023.04.15
① 公开 飞控程序源码
② 公开 CW32无人机控制软件 V1.1
③ 公开 结构件设计文件

 

概述

 

CW32无人机

  • 一款 基于CW32F030C8T6的 四轴无人机
  • 配备 MPU6050 & BMP280传感器
  • 通过 ESP-01模组 实现 WiFi通信(TCP协议)
  • 移植 开源飞控算法(双闭环PID)

 

BZrdJAQLpTep9SVmqbN3xT28h8UKRoSxGCAmnoFd.png

 

CW32无人机控制软件

  • 基于QT框架开发,可实时操控并监测无人机

 

uyYNeppTb6a8TmF3oXCFcSLmqvr80vj1dVjkv75j.png

 

1 CW32无人机飞控电路设计

 

DpWRBUhQNcTKinQi2ApXSG7VkeXnIo2hca4UPeEC.png

 

MCU

  • CW32F030C8T6,封装规格 LQFP48,供电电压 3.3V
  • 外接 8MHz 贴片晶振 & Reset按键

 

供电

  • 3.7V 1S 400mAh锂电池,尺寸 37mm×20mm×8.8mm,2mm 1×2P 51005接口
  • 3.7V电源开关 & 稳压
  • 3.7V → 5V 升压
  • 5V → 3.3V 降压

 

传感器

  • MPU6050姿态传感器,可输出 3轴加速度 & 3轴角速度 & 温度数据,硬件IIC通信
  • BMP280高度传感器,可输出 气压 & 温度数据,硬件IIC通信

 

WiFi通信

  • ESP-01模组,无线传输 采用 TCP协议
  • 通过 2×4PIN排座 接入飞控电路板,实现 3.3V供电 & 串口通信(ESP-01模组 ↔ 飞控电路板)

 

电机调速

  • 4颗 8520空心杯电机(搭配 65mm正反桨叶),3.7V供电,4路 PWM信号 控制
  • 3.7V锂电池 电压测量

 

声光指示

  • 1颗 3.3V电源指示灯(R)
  • 2颗 可编程信号指示灯(B)
  • 4颗 WS2812B灯珠(RGB),1路 PWM信号 控制色彩
  • 1颗 蜂鸣器,1路 PWM信号 调节音量

 

烧录调试

  • SWD接口,1×4PIN排针,用于 程序烧录
  • UART接口,1×4PIN排针,用于 串口通信(飞控电路板 ↔ PC)

 

2 CW32无人机飞控程序设计

 

2.1 基础配置

 

系统时钟

  • 64MHz,HSE使能 8MHz外部晶振,8倍频
  • 使能 GPIOA & GPIOB & IIC1 & BTIM & GTIM3 & ATIM & UART & ADC时钟

 

UART3_Local

  • 飞控电路板 ↔ PC,波特率 115200,数据位 8,停止位 1,校验位 No
  • PA09引脚 - UART3_TX - OUTPUT_PP,PA10引脚 - UART3_RX - INPUT_PULLUP

 

UART2_WiFi

  • ESP-01模组 ↔ 飞控电路板,波特率 115200,数据位 8,停止位 1,校验位 No
  • PA02引脚 - UART2_TX - OUTPUT_PP,PA03引脚 - UART2_RX - INPUT_PULLUP

 

硬件IIC

  • PB10引脚 - SCL,PB11引脚 - SDA,通信速率 400Kbps
  • 主机 CW32F030C8T6,从机 MPU6050 / BMP280

 

PWM

  • 电机M1 - PA08引脚 - ATIM_CH1A通道 - 周期 0.5ms - 计数范围 [0, 999]
  • 电机M2 - PA11引脚 - GTIM3_CH3通道 - 周期 0.5ms - 计数范围 [0, 999]
  • 电机M3 - PB07引脚 - ATIM_CH3A通道 - 周期 0.5ms - 计数范围 [0, 999]
  • 电机M4 - PB06引脚 - ATIM_CH2A通道 - 周期 0.5ms - 计数范围 [0, 999]
  • 蜂鸣器   - PA12引脚 - GTIM3_CH4通道 - 周期 0.5ms - 计数范围 [0, 999]

 

BTIM1中断

  • 用于执行 核心任务(传感器数据获取 & 欧拉角更新 & 飞行控制 & 状态监测)
  • 触发间隔 3ms,计数范围[0, 5999],BTIM_IT_OV标志,优先级 1

 

UART2中断

  • 用于接收 & 返送 & 解析 飞控指令
  • 串口接收触发,USART_IT_RC标志,优先级 0

 

ADC

  • 用于测量 3.7V锂电池电压
  • PA04引脚 - ADC_ExInputCH4通道 - 1.5V参考值 - 单通道转换模式

 

2.2 驱动开发

 

MPU6050驱动

  • 硬件IIC通信,写地址 0xD0,读地址 0xD1,陀螺仪 ±2000deg/s,加速度计 ±4g
  • 采集 原始数据 → 卡尔曼滤波 → 输出 3轴加速度值 & 3轴角速度值 & 温度值
  • 数据波形(匿名上位机)

HaDRjA1UxZxe0TzoQUvGh6yuxr7LA0UhfzXSp9Px.png

 

  • 姿态显示(匿名上位机)

A18pZckMU9RCO26ipPVc3Dzc3NlnLz99q0TDbPHj.png

 

BMP280驱动

  • 硬件IIC通信,写地址 0xEE,读地址 0xEF
  • 读取 出厂校准参数 → 采集 原始数据 → 计算 气压值 & 温度值 → 测算输出 相对高度
  • Hypsometric Formula 高度测算公式

iwGlPBr1Di3bZ2sEzwJGpbOur1xEW6nYHZpRJxbJ.png

 

  • 数据波形(匿名上位机)

MxRuc5LmBGO8hMEWM2x69Qe05tAztB2XdlRqNuhU.png

 

2.3 开源飞控算法移植

 

姿态控制

  • 双闭环PID结构,内环 角速度,外环 角度
  • 独立控制 横滚角 ROLL、俯仰角 PITCH、偏航角 YAW

 

aTz89zA9t1G3ka9atriIKl6yMh0vyPKulWF1pgtn.png

 

高度控制

  • 双闭环PID结构,内环 Z轴加速度,外环 高度

 

v1HSrKBXB4km4JtOrUUolAAesVM8OZps2tVId652.png

 

3 CW32无人机结构件设计

 

3.1 机架

 

MP2NJg0UdiRedRrD5q2K5WDt5T0GpuYJ4sBBHsiE.png

 

svc5653SOSy640xukGnkFGjjI4aFeBfONURn9iqH.png

 

vvArh1mnsH4rVQLLiKMrpmiJjrUQg6jOMUD89CR7.png

 

  • 4个 电机臂 固定 4颗 8520电机
  • 4个 M3通孔 固定 飞控电路板

 

3.2 电池仓

 

G9i9L5DNna4KDi7BGQghUnigOxNbyGu61OmHNeXp.png

 

h1WSpFeMPwIIQwf3kudgjUMELZMj5JgQBUPag6Ef.png

 

ybeEtMR7Ko0ygokOS0IehXLMaE29aXx1u6xH93jI.png

 

  • 配合 机架,以卡扣方式固定 锂电池

 

4 CW32无人机控制软件设计

 

s742hMQJdgVUXu2GXehkvM7XLeJcOALiQZjph2Cg.png

 

  • 使用 C++语言,基于 QT框架开发,已发布 Windows版 V1.1
  • 基于TCP协议的 WiFi通信,控制软件 - TCP服务端,无人机 - TCP客户端
  • 键盘按键 操作 升力控制、航向角 & 俯仰角 & 横滚角控制
  • 鼠标左键 操作 紧急制动 & 定高悬停 & 垂直降落
  • 实时显示 机体温度 & 电池电压 & 连接状态 & 飞行日志

 

4.1 飞行控制逻辑

 

tIrofzQrB12kcXwDgJ43NoTzYmAxZRZIEwKNWJuZ.png

 

4.2 状态监测逻辑

 

yzjUU07EGIBKdxgK8DlU94dq0YjvVy4tdg1Qm71W.png

 

5 装配 & 测试

 

5.1 无人机整体组装

 

SFyFJchlNkZEr5G8PeO5h4cH3T5whFuMPMX1Vi3j.png

 

jAX2Lll7OwfD4fsgCZLm2Q4Y9bo4AmbP7P7bKCio.png

 

4rXGXYirh69C6lTnOtQY7kwUTxNaQLgqGxOUWmTA.png

 

5.2 实际测试

  • 方案验证OK,参见 附件 - 阶段2测试视频1.mp4
  • 起飞动力 350~450(最高 1000),无明显抖动,但仍需优化 PID参数

 

操作说明

① 无人机 水平放置,打开 电源开关
② PC端 运行 CW32 Drone V1.1软件,设置 IP地址 & 端口号,点击“启动”按钮
③ 提示 无人机连接成功, 键鼠操作 控制 无人机,实时显示 状态信息 & 飞行日志

 

后记

  • 后续 整理 & 公开 接入BMP280传感器定高的 飞控程序 & 控制软件
  • 后续 优化 机架 & 电池仓结构设计
  • 感谢 武汉芯源半导体 提供的技术支持和赞助 ❤,近期官方推出了 CW32开发者扶持计划,感兴趣的小伙伴可以关注 官方公众号“CW32生态社区”& 官方QQ群 482146847
  • 感谢 立创EDA 提供的设计平台和元器件支持 ❤

 

设计图

未生成预览图,请在编辑器重新保存一次

BOM

暂无BOM

附件

序号文件名称下载次数
1
匿名上位机调试程序.hex
183
2
Procedure_FlyControl_MPU6050.rar
576
3
CW32 Drone V1.1.zip
1606
4
电池仓-4版.stl
146
5
无人机-4版.stl
222
6
阶段2测试视频1.mp4
198
克隆工程
添加到专辑
0
0
分享
侵权投诉
工程成员
全部评论(1
按时间排序|按热度排序
粉丝0|获赞0
相关工程
暂无相关工程