1、本科毕业设计(论文)( 2012 届 )题 目: 四旋翼飞行器遥控发射接收系统设计分 院: 信息工程分院专 业: 电气工程及其自动化班 级: 12 电气本 1姓 名: 赵浩锋学 号: 12303653144指导老师: 孙跃完成时间: 2016 年 3 月温州大学城市学院本科毕业设计(论文)I温州大学城市学院学位论文原创性声明本人郑重声明:所提交的学位论文是本人在导师的指导下,独立进行研究工作所取得的研究成果。除文中已经加以标注引用的内容外,本论文不包含其他个人或集体已经发表或撰写过的研究成果,也不含为获得温州大学城市学院或其它教育机构的学位证书而使用过的材料。对本文的研究作出重要贡献的个人和集
2、体,均已在文中以明确方式标明。本人承担本声明的法律责任。作者签名: 日期: 年 月 日学位论文版权使用授权书本学位论文作者完全了解学校有关保留、使用学位论文的规定,同意学校保留并向国家有关部门或机构送交论文的复印件和电子版,允许论文被查阅和借阅。本人授权温州大学城市学院可以将本学位论文的全部或部分内容编入有关数据库进行检索,可以采用影印、缩印或扫描等复制手段保存和汇编本学位论文。本学位论文属于1、保密,在_年解密后适用本授权书。2、不保密。(请在以上相应方框内打“”)作者签名: 日期: 年 月 日导师签名: 日期: 年 月 日温州大学城市学院本科毕业设计(论文)II摘要:四旋翼飞行器以其结构新
3、颖、机动性强、性能卓越等特点,使其在军事、民用及科技领域都有很强的研究和应用价值。由于它用四个螺旋桨进行飞行,因此它的飞行姿态保持能力比单旋翼飞行器更强,升降所需要的空间也较小,且其在障碍物较多的情况下仍具有很强的操纵性。根据这些特点四旋翼飞行器比单旋翼飞行器更适合在室内、街道、森林等复杂环境下的进行拍摄和救灾工作。本文以 STM32 处理器为核心;无线数据通讯模块采用的是 NRF21L01 模块实现。经过试验,飞行器能够准确接收到来自地面的控制指令并完成相应的飞行任务,实现垂直起降、悬停等飞行姿态。关键词:四旋翼飞行器;无线通信;微控制器 温州大学城市学院本科毕业设计(论文)IIIAbstr
4、act:Four-rotor aircraft for its novel structure, high mobility, high performance features, making the military, civilian and scientific and technological fields have a strong research and application. Because it uses four propellers flight, flight attitude so that the ability to maintain greater tha
5、n single-rotor, the space required for the lift is small, and it still has a strong maneuverability in case more obstacle. According to these characteristics four-rotor aircraft more suitable than single-rotor aircraft shooting and relief work in the interior, streets, forests and other complex envi
6、ronments.In this paper, core processor is used STM32; wireless data communication module is used NRF21L01 modules. After testing, the aircraft can accurately control commands received from the ground and complete the mission, achieve vertical takeoff and landing, hovering and other flying attitude.K
7、ey Words:Four-rotor aircraft; Wireless communication; Microcontroller 温州大学城市学院本科毕业设计(论文)IV目 录摘要 .IIAbstractIII一、绪论 .1(一)课题研究的目的和意义 .1(二)国内外发展及研究现状 .11.国内四旋翼飞行器的研究 12. 国外四旋翼飞行器的研究 1二、总体方案设计 .3(一)总体设计原理 .3(二)总体设计方案 .31.系统硬件电路设计方案 32.各部分功能作用 33.系统软件设计方案 4三、硬件电路设计 .52.无线通信模块电路设计 63.实物介绍 9四、系统软件设计 .11(一)
8、Keil MDK5.12 简介 111Keil MDK 概述 .112. Keil MDK 功能特点 .11(二)软件设计框图 .11结论 .13致 谢 .14参考文献 .15附录 .16温州大学城市学院本科毕业设计(论文)1一、绪论本章主要介绍了关于四旋翼飞行器研究的背景和意义,和国内外高校以及研究机构对四旋翼飞行器研究的现状。本章主要由课题研究的目的和意义,国内外四旋翼飞行器的研究和论文的主要研究内容等几个部分组成。(一)课题研究的目的和意义随着微电子、微导航、微机电技术的广泛运用,无人机技术很快就在全世界范围内掀起了研究热潮,并得到了快速且长足的发展。相对于其他无人机而言,四旋翼飞行器的
9、结构较为简单,成本也相对较低,方便维修和护理。除此之外,四旋翼飞行器还具有体积小、重量轻、控制灵活方便、可垂直起降、悬停等特点,不论是在军事领域或是民用领域都得到了非常广泛的运用。(二)国内外发展及研究现状1.国内四旋翼飞行器的研究目前,我国的一些高校和科研机构在四旋翼飞行器的研究上也取得了长足的发展。比如国防科技大学,哈尔滨工业大学和南京航空航天大学等。国防科技大学早就在 2004 年开始研究微小型飞行器的相关技术,是我国最早一批开展对四旋翼飞行器研究的高校之一,他们使用了自抗扰控制器(ADRC)算法以及反步法这两种方法来对四旋翼飞行器的控制系统进行设计。在接下来的几年里,南京航空航天大学、
10、南京理工大学等等高校也进行了对四旋翼飞行器的理论分析和计算机仿真,并都制作了属于自己的四旋翼飞行器。同时,四旋翼飞行器在商业上的应用也越来越广泛,在 2013 年 9 月 3 日,顺丰就在广东东莞松山湖区域进行了无人机送货内测。顺丰自主研发了该无人机的内置导航系统,该飞行器飞行高度约为100 米,落点误差基本上能够控制在方圆两米以内,同时可以对路线和目的地来进行预先设定。如果测试可行,就可以大量减少人力成本。除此以外,越来越多的四旋翼飞行器以一种娱乐设备的形式出现在大众的视线里。通常这种四旋翼飞行器都携带着摄像头,用户可以通过手持设备来对飞行器进行控制,以此来给用户带来乐趣。2. 国外四旋翼飞
11、行器的研究国外四旋翼飞行器的发展非常迅速,因为他们在这一领域已经拥有了非常悠久的历史,同时还有着深厚底蕴的研发团队。四旋翼飞行器在多旋翼无人飞行器中是较为常见的一种类型,其对硬件平台的要求较高,相应的难度也较大。国外有很多高校和科研机构都做出了一定的成果,有进行室外研究和室内研究的,其中进行室外研究的有美国斯坦福大学,日本千叶大学以及美国奥克兰大学和法国贡比涅技术大学等。进行室内的有美国麻省理工大学,美国宾夕法尼亚大学和瑞士联邦技术机构等。除了高校和科研单位,国外的一些商业公司也加入到对四旋翼飞行器的研究行列,如美国的 Draganfly 公司和德国的 Microdrone GbmH 公司等。
12、近年来,国外研发了很多高性能的飞行器。在欧美发达国家四旋翼飞行器已经在军事和商业领域都取得了非常显著的成就。其中比较具有代表性的就是 Draganflyer X4、Parrot AR.Drone 温州大学城市学院本科毕业设计(论文)2Quadricopter。Draganflyer X4 是美国 Draganfly Innovations Inc 研发的遥控飞机。如图 1.1 所示。该飞行器具有良好的可靠性和稳定性,并且它还具有悬浮功能,对于拍摄有很大的帮助。当控制器失控时,它甚至可以实现自动着陆,从而保证飞行器和摄像设备的安全。图 1. 1温州大学城市学院本科毕业设计(论文)3二、总体方案设
13、计(一)总体设计原理本次设计硬件主要为遥控器部分,处理器采用 32 位基于 Cortex-M3 内核的 STM32F103 芯片,遥控器和飞行器之间的数据通信采用的是 2.4G 民用无线通信频段的 NRF24L01 模块。遥控器外型类似与游戏手柄。遥控器通过采集蘑菇头摇杆电位器 ADC 电压值以及按键状态发送给飞行器。(二)总体设计方案1.系统硬件电路设计方案本次设计采用 IAP15W4K58S4 微控制器作为 MCU,并且均采用 3.7V 充电电池作为电源为系统供电,电池通过 CAT2829 芯片稳压到 3.3V 为 MCU 以及外设供电。遥控器端的主要硬件部分包括最小系统、无线 NRF24
14、L01 模块、程序下载、ADC 采集、蜂鸣器、LED 指示灯以及串口调试,飞行器端硬件主要部分有最小系统、程序下载,无线 NRF24L01 模块、电机驱动、惯性测量单元 MPU6050 以及 LED 驱动电路,其系统总体框图如下所示。-2.各部分功能作用(1)MCU 控制中心MCU 是飞行器以及遥控器的控制中心,是它们的大脑,主要功能是采集数据和处理数据并做出指示。本次设计采用的是 32 位的基于 ARM Cortex-3 为内核的 STM32F103 作为中央处理器。(2)通信模块通信模块在整个系统中起着信号交流的作用,遥控器通过 MCU 读取的按键信息以及油门方向值NRF24L01无线模块
15、NRF24L01无线模块遥控器MCU摇杆控制状态显示 LED电源蜂鸣器按钮遥控器MCU电源状态显示 LED电池电量监控惯性测量单元复位电机驱动串口调试程序下载串口调试程序下载温州大学城市学院本科毕业设计(论文)4发送到飞行器端,飞行器端接收到之后做出相应的动作。本次设计主要采用 NRF24L01 无线通信模块,选择该模块的原因是因其通信协议简单、传输距离相对较远、价格低廉等优点。(3)LED 状态指示在硬件电路设计中,LED 首先必须要有电源指示灯,从而判断系统是否上电。同时还需要有信号指示灯,指示遥控器和飞行器是否通信,最后就是状态显示 LED 灯显示飞行器状态等等。3.系统软件设计方案本次
16、设计软件部分包括遥控器程序以及飞行器的接收程序设计。遥控器程序设计主要包括有无线NRF24L01 发送、ADC 电压采集之后的处理、读取按键状态和 LED 灯指示等,涉及的软件包括 SPI通信协议、ADC 数模转换、I/O 口驱动等。飞行器端程序涉及部分主要包括 NRF24L01 接收、LED 状态灯等。 温州大学城市学院本科毕业设计(论文)5三、硬件电路设计(一)遥控器的硬件设计如图 3.1 所示,遥控器主要由处理器、无线收发模块和 4 路摇杆器三部分组成。主处理器及其最小系统的电路和飞行器的电路相同。主要利用处理器片内的 AD 转换器采集摇杆的信息,然后将四路电位器的输出引脚接到处理器的
17、AD 转换口,免去了外接 AD 转换芯片以及配置电路的麻烦,大大节省了硬件空间。无线收发模块选用 E01-ML01DP3 无线通信模块模块,传输距离大概在 1100m 左右。图 3. 1遥控硬件配置: MCU:STM32F103 72Mhz 传感器:MPU6050 3 轴加速度、三轴陀螺仪 通信方式:NRF24L01、串口蓝牙、串口 WIFI、串口 433 等 通信芯片:FT232 串口芯片,串口波特率可以上 M,轻松稳定高速通信1. 处理器(1) 针对各公司单片机的优缺点比较从总体上来讲,ARM 的控制能力较强,速度快功耗也低,价格也适中,同时还可以加操作系统;DSP 的速度最快,但同时价格
18、更高,更适用于高速信号处理系统;C51 更适用于简单的控制,编程也简单方便,同时价格也更加实惠。从运算能力上看,因为 C51 是 8 位的;ARM 是 32 位;DSP 有 16 位,以及更高的。所以 C51 最弱,DSP 最强,ARM 比较中庸。从结构上看,C51 是一般的冯诺依曼结构, ARM 和 DSP 一般采用哈佛结构。从频率上看,C51 工作频率最低,一般为 1024MHz,因此功耗也低。ARM 的功率一般在几十到200MHz 之间。而 DSP 的频率高达 300MHz 以上,同时功耗也大。虽然 C51 的性能远不如其他两种,但它的性价比很高,面积也非常小,还能配比非常丰富的外围电路
19、,同时,这些也限制了它的使用,因此 C51 主要应用于不需要太多计算量的系统。ARM 相对于其他两种的优点在于其内部的模块或者总线接口功能十分丰富。同时,ROM,RAM较大,管脚也多。(2) 芯片简介ARM Cortex-M3 采用哈佛结构,采用的是分离的指令以及数据总线,相比于冯诺依曼结构而言处理速度更快。温州大学城市学院本科毕业设计(论文)6ARM Cortex-M3 在成本以及功耗方面具有非常优秀的性能,并且非常适用于汽车以及无线通信领域。STM32 系列处理器是由 ST 公司按照 ARM Cortex-M3 内核标准打造的,其追求的是高性能、低成本、低功耗。按照其性能可以分为增强型 S
20、TM32F103 系列以及基本型 STM32F101 系列两种。本设计中使用的是增强型 STM32F103。概述:闪存 FLASH:512K 字节、 SRAM:64K、3 x USART、2 x SPI、2 x I2C、3 x 16 位定时器、4-16 MHz 主振荡器、实时钟、2 x 看门狗、复位电路 、上电 /断电复位、电压检测、7 通道 DMA 、80%通用 I/O 管脚、内嵌 8 MHz 的 RC 振荡器、和 32 kHz 的 RC 振荡器、72MHz CPU、2 x 12 位ADC(1ms) 温度传感器、USB 2.0 全速、CAN 2.0B、PWM 定时器。2.无线通信模块电路设计
21、本次设计无线通信模块采用的是 NRF24L01 模块。NRF24L01 模块。NRF24L01 具有以下特性: 真正的 GFSK 单收发芯片 内置链路层 增强型 ShockBurstTM 自动应答及自动重发功能 地址及 CRC 检验功能 数据传输率 1 或 2Mbps SPI 接口数据速率 08Mbps 125 个可选工作频道 很短的频道切换时间可用于调频 与 NRF24XX 系列完全兼容 可接受 5V 电平的输入 极低的晶振要求 60ppm 工作电压 1.93.6V四旋翼无人机要将数据传输到地面,操作者将操作指令发送给无人机,这些都需要通过无线数据通信来实现,本设计选用了 E01-ML01D
22、P3 无线通信模块,这是一款 2.4G 无线通信模块,采用原装进口的 nRF24L01P 芯片,配备 20dBm 功率放大芯片,使模块最大发射功率达到了 100mW(20dBm),并同时将接收灵敏度提升到 10dBm,使得模块超过 nRF24L01P 本身 10 倍以上的发射距离,传输距离可以达到 1100m。E01-ML01DP3 模块实物如图 3.2 所示。E01-ML01DP3 模块引脚及尺寸下图 3.3 所示。模块与模块之间采用 2.4G 无线网络频段通信,其电路原理图如图 3.4 所示。无线NRF24L01 模块与 MCU 之间连接口如表 3-1 所示。图 3.2温州大学城市学院本科
23、毕业设计(论文)7图 3.3图 3.4表 3-1MCU 引脚 NRF24L01 引脚 功能PA3 CE 使能发送或接收PA4 CSN SPI 片选信号PA5 SCK SPI 时钟信号PA6 MOSI SPI 数据输入脚温州大学城市学院本科毕业设计(论文)8PA7 MISO SPI 数据输出脚(1)模块简介E01-ML01DP3 模块引脚描述引脚序号 名称 方向 描述1 GND / 地线,连接到电源参考地2 VCC / 供电电源,必须 2.0-3.6V 之间3 CE 输入 模块控制引脚4 CSN 输入 模块片选引脚,用于开始一个 SPI 通信5 SCK 输入 模块 SPI 总线时钟6 MOSI
24、输入 模块 SPI 数据输入引脚7 MISO 输出 模块 SPI 数据输出引脚8 IRQ 输出 模块中断信号输出,低电平有效E01-ML01DP3 模块的参数序号 参数名称 参数数值 备注1 模块尺寸 15*27mm 不含 SMA 天线座2 接口方式 2.54*2*4 可使用 2.54 标准杜邦线,可用于万能板3 供电电压 2.0-3.6V 注意:高于 3.6V 电压,将导致模块永久损毁4 通信电平 0.7VDD-5V VDD 指模块供电电压5 实测距离 1157m 条件:市区,空旷,30,可视,阴天,250K6 最大功率 20dBm 约合 100mW7 空中速率 250K,1M,2M 三种速
25、率可以软件调节8 关断电流 1uA nRF24L01P 设置为掉电,CE 低电平9 功率等级 4 级可调 PA 芯片功率不可调10 发射电流 95mA 峰值11 接受电流 20mA CE=112 天线接口 SMA 外螺内孔型13 天线要求 SMA 内螺内针,2.4G 频段,50 欧姆阻抗14 通信接口 SPI 最高速率 10Mbps15 发射长度 32 字节 单个数据包 32 字节最大,3 级 FIFO16 接收长度 32 字节 单个数据包 32 字节最大,3 级 FIFO17 RSSI 支持 不支持 仅支持简单的丢包统计18 工作温度 -3085 无19 工作湿度 #include #inc
26、lude #include #include sbit RLED=P05; /p05 为p0口的第六位sbit GLED=P06;sbit LKEY=P47;sbit RKEY=P34;float temp1=0; volatile int idata ay,ax,by,bx;volatile int idata cy,cx,dy,dx;volatile float idata battery;unsigned char idata TxBuf20=0;unsigned char idata RxBuf20=0;void IO_and_Init();#if 1typedef unsigned
27、char uint8_t;/typedef为类型定义typedef unsigned short int uint16_t;typedef unsigned int uint32_t;/typedef unsigned _int64 uint64_t;int Throttle;/油门门int Roll; /横滚角int Pitch; /仰俯角int Yaw; /自旋角温州大学城市学院本科毕业设计(论文)16int Throttle_Calibra=1500;/风门校准int Pitch_Calibra =1500;/反转校准int Roll_Calibra =1500;/横滚校准int Yaw
28、_Calibra =1500;/偏航校准typedef uint32_t u32;typedef uint16_t u16;typedef uint8_t u8;#define AmericaMode 1 /左手油门。u32 Mytest=0;/获取AD转换平均值。u16 Get_Adc_Average(u8 ch,u8 times)u32 temp_val=0;u8 t;for(t=0;t=2000)?2000:Throttle; 温州大学城市学院本科毕业设计(论文)17Pitch= 1000+(1000*(float)(Get_Adc_Average(3,15)/256)-Pitch_Ca
29、libra);Pitch=(Pitch=2000)?2000:Pitch; Roll= 1000+(1000*(float)(Get_Adc_Average(2,15)/256)-Roll_Calibra);Roll=(Roll=2000)?2000:Roll; Yaw= 1000+(1000*(float)(Get_Adc_Average(0,15)/256)-Yaw_Calibra);Yaw=(Yaw=2000)?2000:Yaw; #else/*右手油门*/Throttle=1500 - (Throttle_Calibra - (1000 + (1000*Get_Adc_Average(
30、1,15)/4096);Throttle=(Throttle=2000)?2000:Throttle; Pitch= 1500 - (Pitch_Calibra-(1000 + (1000 - (1000*Get_Adc_Average(3,15)/4096);Pitch=(Pitch=2000)?2000:Pitch; Roll= 1500 - (Roll_Calibra - (1000 + (1000*Get_Adc_Average(0,15)/4096);Roll=(Roll=2000)?2000:Roll; Yaw= 1500 - (Yaw_Calibra - (1000 + (100
31、0*Get_Adc_Average(2,15)/4096);Yaw=(Yaw=2000)?2000:Yaw; #endif /校准摇杆。void controlClibra(void)static u8 i;温州大学城市学院本科毕业设计(论文)18uint16_t sum4=0,0,0,0;/ static unsigned char lednum=1;static unsigned char clibrasumNum = 20;for(i=0;i8); /发送遥控器数据。void CommUAVUpload(uint8_t cmd)sendCnt=0;uart8chk($);uart8chk
32、(M);uart8chk(=255)温州大学城市学院本科毕业设计(论文)23TxBuf1=255; /用上电记录的数据对采样数据进行修正,保证摇杆中位时数据为128else if(dy-by)=255)TxBuf2=255;else if(dx-bx)=255)TxBuf3=255;else if(cx-ax)=0)TxBuf3=0;elseTxBuf3=cx-ax;温州大学城市学院本科毕业设计(论文)24/油门:TxBuf4/Yaw :TxBuf3/俯仰:TxBuf1/横滚:TxBuf2TxBuf4=cy; /油门通道不需处理,直接发送AD检测的8位数据即可,根据AD采样原理易知读取的AD采
33、样数据不可能为负也不可能大于255if(RKEY=0) TxBuf5=1; elseTxBuf5=0;if(LKEY=0) TxBuf6=1; else TxBuf6=0;TxBuf0+;LoadRCdata();/获取摇杆数据。CommUAVUpload(MSP_SET_4CON);/nRF24L01_TxPacket(TxBuf);/发射数据os_wait(K_IVL,2,0); /给一定延时让数据发送完成/IO初始化。void IO_and_Init()P1M0=0x00; /P1设为高阻模式P1M1=0xFF;温州大学城市学院本科毕业设计(论文)25P0M0=0XFF; /其他I/O口
34、设置为准双向,弱上拉模式P0M1=0X00;P2M0=0X00;P2M1=0X00;P3M0=0X00;P3M1=0X00;P4M0=0X00;P4M1=0X00;P5M0=0Xff;P5M1=0X00;LKEY=1; /拉高按键检测I/O口电平,按键为低电平触发RKEY=1;init_NRF24L01(); /初始化无线模块adc_init(); /初始化AD检测模块ax=(getADCResult(0);temp1=(float)ax/256)*1000-500;Roll_Calibra=temp1;/ax*1000-500; /记录上电时摇杆的数据作为中位修正,因为摇杆中位要为128即2
35、56/2Delay(10);by=getADCResult(3);temp1=(float)by/256)*1000-500; /通道1,是油门值。Pitch_Calibra=temp1;Delay(10);bx=getADCResult(2);Yaw_Calibra=(float)bx/256)*1000-500; /校准。 Delay(10);由于本次毕业设计关于姿态控制部分没有完善,采取用四个LED灯来模拟上下左右。发射端代码#include “led.h“#include “delay.h“#include “key.h“#include “sys.h“#include “lcd.h“#include “usart.h“