本帖最后由 yuzhiboqianyuan 于 2014-8-21 20:29 编辑
版主,表示我找了半天没找到合适的论坛板块发布,只好在这个板块发布,希望版主不要见怪。
Craze官网地址:www.crazepony.com
简介:Crazepony是国内创客团队Craze的一个四轴项目,该四轴项目遵循GPL开源协议,如果没经Craze团队同意,将代码作为商用,Craze团队保留追究一切违反GPL开源协议行为的权力。
Crazepony四轴采用的是X模式,Craze欢迎广大小伙伴和他们一起共同完善Crzepony项目,为Crzaepony的更进一步贡献自己的智慧,一起制作高逼格的飞行器吧。
先上图:
来两个飞行视频:
Crazepony Ver4.1的飞行视频:
Crazepony-II 第三版飞行视频 :
Crazepony-II 第二版飞行视频 :
再来硬件介绍:
Crazepony硬件参数
Crazepony-II(第4版/4.1版)硬件组成 - 主控:STM32f103T8U6
- 姿态传感器:MPU6050(3加速度+3角速度)
- 电子罗盘:HMC5883L
- 无线通信协议:NRF24L01+ 与 蓝牙2.1/蓝牙4.0透传共存
- 有线通信协议:CP2102(USB转串口)
- 电机驱动:SI2302场效应管
- 外部接口:标准mircoUSB接口
- 电机:Coreless高速电机 3W转/分钟
- 桨叶:46mm黑色正反桨
- 电池:350mAh 25c航模动力电池
-
Crazepony的项目代码目前托管在Github上,大家可以自由下载。
.
Crazepony代码下载地址:https://github.com/Crazepony。
最新版淘宝链接:http://shop111225004.taobao.com/。
接下来是最精彩的部分。
Crazepony软件框架讲解
飞控源代码部分,截止目前为止,都是属于一砖一瓦敲出来的。没有使用实时操作系统,我们称之为裸机代码,未使用操作系统裸跑的意思。为了满足各个层次用户的需求和体现出我们的努力,后续会试着移植一个FreeRtos的实时操作系统内核,因为bitcraze 团队就用的这个内核,向他们无限靠近是我们的目标。
那么,现在就结合裸机代码,来说说Crazepony的软件框架。
软件流程图
总体的流程图,就是这么简单。定时器4里面的任务,是整个飞机的核心。下面具体介绍实现细节。
初始化
学过 51单片机的都知道,任何一个处理器要正常运行后面的代码,首先必须得有一大段设备初始化的代码先运行,这些代码用于初始化处 理器的内部时钟、中断优先级、I/O 口的输入输出方向等等,也就是为后续代码正常运行,做了一个环境配置准备。
Crazepony 的主控是Crotex-M3内核,其实就是ARM架构发展到一定阶段的产物。Crotex-M3那是什么呢?还是ARM架构。于是,对ARM的初始化,首先必须要做的就是系统时钟初始化,中断向量表初始化,中断优先级初始化,I/O方向初始化,如下:
STM32内部模拟EEPROM初始化→LED初始化→延时函数初始化→蓝牙电源使能初始化→电机PWM输出初始化→电池电压AD初始化→IIC总线初始化→传感器初始化→PID参数初始化→无线收发模块初始化为接受模式→开 蓝牙→开定时器3→开定时器4。
初始化看起来很繁杂,很多,也没啥好说的。
接下来 ,程序运行到死循环while(1);程序会一直停在这里,等待数据中断的到来,而不是死机死在这里,这是有区别的,学过51的人都知道,我不再多说。
在初始化代码段,我们说到初始化了两个定时器,一个定时器3,一个定时器4,这两个定时器都可以打断死循环while(1)。定时器3用于广播机身姿态信息,定时器4的任务要繁重得多,用于 更新遥控数据+机身姿态融合+PID计算输出+PWM输出。可以看到,定时器4里面任务的优先级明显要比定时器3实时性要求更高,所以。中断优先级的顺序是:定时器4 > 串口中断 > 定时器3。姿态更新频率为1000Hz,广播信息更新频率为1Hz。
综上,有点乱,但是我们缕一缕。很简单,只有3个中断。定时器4是核心中断,所有的算法都是在这里实现的,机身的稳定也是靠这个中断来实现的
定时器4
可以看到定时器4的中断服务函数TIM4_IRQHandler()中,有个一Controler()。
而Controler()内部,DMP姿态输出→接收遥控器数据→接收串口数据→PID计算+PWM输出,这些任务构成了Controler()函数。
定时器3
Crazepony在飞行过程中,会向上位机发送姿态数据。于是,我们用了一个定时器来处理串口发送数据的问题。
在Crazepony上,ISP下载是通过UART1来实现的,有线串口打印用的UART1,2.1蓝牙透传也是接的UART1。所以,为了避免蓝牙透传和有线串口之间的数据冲突,我将蓝牙的供电设计成了软件使能方式启动蓝牙电源。这样一来,就可以程控切换数据通道,保证数据正常。
在回到定时器3的功能上来,先看具体程序段:
从定时器3的中断服务子程序可以看到,每进一次中断,向串口打印一次logo以及相关的姿态信息数据。此时,如果连接的是mircousb线,那么用串口助手可以看到如图所示的姿态信息反馈。
说到这里,有必要说一个事情就是,中断优先级的问题。
由于姿态数据对实时性要求是最高的,所以,处理姿态的代码应该是优先执行的,所以,定时器4的优先级要高于串口打印的优先级,即定时器4 > 串口中断 > 定时器3。
最后是Craze团队成员介绍:
钟晟
CrazePOV项目发起人
来自四川绵阳,现在就读于电子科技大学电子工程学院,是一名大三本科生。
我的座右铭是:“感兴趣就无论如何都要做出来!”我平时常有一些有趣的想法,我都会把它们一一记录下来,只要一有时间,我就会慢慢把这些坑给填上!凭着我的这一腔热血,我在大一经过积累知识这一过程之后,最终完成了旋转时钟,彩色激光式3D扫描仪等有趣玩意儿的制作。
钟晟
CrazePOV项目发起人
来自四川绵阳,现在就读于电子科技大学电子工程学院,是一名大三本科生。
我的座右铭是:“感兴趣就无论如何都要做出来!”我平时常有一些有趣的想法,我都会把它们一一记录下来,只要一有时间,我就会慢慢把这些坑给填上!凭着我的这一腔热血,我在大一经过积累知识这一过程之后,最终完成了旋转时钟,彩色激光式3D扫描仪等有趣玩意儿的制作。
电子匠人
山东大学在读大四生,常驻学校实验室,参加过飞思卡尔智能车,蓝桥杯嵌入式竞赛等竞赛。技术爱好广泛,从电子设计,安卓开发到Web技术都有所了解。大二期间由于兴趣DIY了一个四轴飞行器,分享了几十篇四轴飞行器博文,可以通过我的技术博客电子匠人了解我。
爱技术,爱折腾,爱生活,愿与大家共同交流学习!
彭智文
四川大学本科,北京大学研究生。参与公益组织美丽中国,在云南腾冲支教。曾担任北大深圳研究院自行车协会会长,有过暑假环海南岛骑行经验。并且是北大深圳研究院赛艇社团创始人,第一任社长。
nieyong
大学时候混迹于科协和各种比赛,曾参加2009年亚太机器人大赛,飞思卡尔智能车大赛。在TP-LINK,DJI有过研发的工作经验。喜爱自由,开源。可以通过github账号nieyong了解更多。
韦晟敢
深圳突围读书俱乐部创立者,Crazepony项目深度参与者。关键字:嵌入式、自然语言处理、登山,网球、台球。CrazePony项目深度参与者,喜欢组织或加入各类有趣的活动,每周二晚固定爬南山。欢迎加入哦!
严国陶/Ricky.yan
酷爱DIY,大学期间曾多次参加全国挑战杯比赛,大学生科技创业大赛并获得一,二等奖。2011年开始创业,带领团队进入深圳市南山区”创业之星“大赛决赛。现在公司主要从事开源硬件/创客领域智能硬件产品的研发和销售。
Mr.Qian
电子科技大学在读研究生,研究方向为四轴飞行器。机器人足球协会会长,2011年飞思卡尔大赛国家一等奖,全国物联网大赛国家三等奖,另参加过其他很多技术类比赛。热爱技术,乐于分享。
Byron/陈泽利
哈尔滨工程大学电子专业本科。从事工厂产品结构改善及生产问题处理。对产品结构、性能完善及生产问题处理有丰富的经验。对事情的处理追求细致,完美,并且拥有一颗年轻人闯荡奋斗的心。从公司离职之后,一直在学习创业,尝试创业,并且乐于享受这样的生活。
CamelGo
CrazePony项目发起人
电子科技大学本科毕业,曾参加巡线小车大赛,电脑鼠走迷宫大赛,四川省大学生电子设计大赛,全国大学生电子设计大赛,获大小奖项若干。
Crazepony项目发起人之一。向往精神层面的自由和纯粹,是对产品要求严苛的处女座典型。
Craze团队也欢迎大家的加入,在Craze的官网上有Crazepony的详细介绍,更有Crazepony百科全面而系统的介绍了所有关于微型四轴的知识,非常适合新手进阶学习。
上述关于Crazepony的软件框架介绍内容来自Craze官网,未经允许严禁转载。
。。。。
|