【CW32】芯源4轴无人机
简介
使用CW32F030C8T6芯片,开发4轴无人机,配合自主设计的控制软件,实现飞行控制和监测
简介:使用CW32F030C8T6芯片,开发4轴无人机,配合自主设计的控制软件,实现飞行控制和监测开源协议
:Public Domain
描述
前言
- 报名参与了立创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)
CW32无人机控制软件
- 基于QT框架开发,可实时操控并监测无人机
1 CW32无人机飞控电路设计
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轴角速度值 & 温度值
- 数据波形(匿名上位机)
- 姿态显示(匿名上位机)
BMP280驱动
- 硬件IIC通信,写地址 0xEE,读地址 0xEF
- 读取 出厂校准参数 → 采集 原始数据 → 计算 气压值 & 温度值 → 测算输出 相对高度
- Hypsometric Formula 高度测算公式
- 数据波形(匿名上位机)
2.3 开源飞控算法移植
姿态控制
- 双闭环PID结构,内环 角速度,外环 角度
- 独立控制 横滚角 ROLL、俯仰角 PITCH、偏航角 YAW
高度控制
- 双闭环PID结构,内环 Z轴加速度,外环 高度
3 CW32无人机结构件设计
3.1 机架
- 4个 电机臂 固定 4颗 8520电机
- 4个 M3通孔 固定 飞控电路板
3.2 电池仓
- 配合 机架,以卡扣方式固定 锂电池
4 CW32无人机控制软件设计
- 使用 C++语言,基于 QT框架开发,已发布 Windows版 V1.1
- 基于TCP协议的 WiFi通信,控制软件 - TCP服务端,无人机 - TCP客户端
- 键盘按键 操作 升力控制、航向角 & 俯仰角 & 横滚角控制
- 鼠标左键 操作 紧急制动 & 定高悬停 & 垂直降落
- 实时显示 机体温度 & 电池电压 & 连接状态 & 飞行日志
4.1 飞行控制逻辑
4.2 状态监测逻辑
5 装配 & 测试
5.1 无人机整体组装
5.2 实际测试
- 方案验证OK,参见 附件 - 阶段2测试视频1.mp4
- 起飞动力 350~450(最高 1000),无明显抖动,但仍需优化 PID参数
操作说明
① 无人机 水平放置,打开 电源开关
② PC端 运行 CW32 Drone V1.1软件,设置 IP地址 & 端口号,点击“启动”按钮
③ 提示 无人机连接成功, 键鼠操作 控制 无人机,实时显示 状态信息 & 飞行日志
后记
- 后续 整理 & 公开 接入BMP280传感器定高的 飞控程序 & 控制软件
- 后续 优化 机架 & 电池仓结构设计
- 感谢 武汉芯源半导体 提供的技术支持和赞助 ❤,近期官方推出了 CW32开发者扶持计划,感兴趣的小伙伴可以关注 官方公众号“CW32生态社区”& 官方QQ群 482146847
- 感谢 立创EDA 提供的设计平台和元器件支持 ❤
评论