四轴飞行器无线通讯模块及上位机设计

上传人:无*** 文档编号:86644715 上传时间:2022-05-08 格式:DOC 页数:22 大小:274KB
返回 下载 相关 举报
四轴飞行器无线通讯模块及上位机设计_第1页
第1页 / 共22页
四轴飞行器无线通讯模块及上位机设计_第2页
第2页 / 共22页
四轴飞行器无线通讯模块及上位机设计_第3页
第3页 / 共22页
点击查看更多>>
资源描述
-四缺少封面和*协议轴飞行器无线通讯及上位机设计摘要四轴飞行器,又称四旋翼飞行器,因其起飞和降落所需空间少,在障碍物密集环境下的超控性高,以及它飞行姿态保持平稳能力强的优点,在民间和军事领域有广泛的应用前景。其中,小型四轴飞行器的研究近年来趋成熟,并未自动控制,先进传感器技术以及计算机科学等诸多技术领域的融合研究提供了一个平台。本文通过对四轴飞行器的性能指标的分析,明确设计思路及原理,围绕四轴飞行器无线通讯系统、上位机程序等的设计展开讨论,并确定可行方案。最终提出使用以2.4MHz2.4GHz的无线遥控对其四轴飞行器进展通讯,使用的是NRF24L01无线通讯模块,四轴飞行器的上位机则用QT进展设计以达成目的。本次毕业设计主要通过设计上位机控制的飞行器,掌握控制系统的一般设计方法,熟悉常用的元器件,对所学单片机知识进一步强化,了解电路调试仿真的根本方法,培养综合应用所学理论知识来指导设计的能力。关键字:四轴飞行器,无线通讯,计算机科学Quadrotorswireless munications and software designAbstractA*is aircraft, also known as four-rotor aircraft,Rotary-wing air-crafts have many military and civilian applications due to their requiring small areas for taking off and landing,great maneuverability in Obstacle-heavy environment and great ability to maintain the position and orientation.The research of small scale quad rotors,one kind of rotary wing air-crafts,have gradually bee mature in recent years,and also provided an important platform for investigations in such fields as the autonomous control,advanced sensor technology and puter science. This paper analyzes the performance of four-a*is aircraft, a clear design ideas and principles, around quadrocopter wireless munications system designed PC program like to discuss and identify possible options. Finally proposes the use of a wireless remote control aircraft 2.4MHz its a*is of munication, using wireless munication module NRF24L01, four aircraft of the PC is used to achieve the purpose of designing QT.The graduation project is mainly controlled by the PC design aircraft, master control system design methods are generally familiar with mon ponents, to further strengthen the learning MCU knowledge to understand the basic method of circuit simulation and debug, develop prehensive application theoretical knowledge ability to guide the design.Key words: Quadrocopter, Wireless munication, puter Science目录第一章 绪论41.1 四轴飞行器的开展和现状41.2 无线通讯概念41.3 上位机概念5第二章 单片机下位机设计72.1 主要芯片72.2 无线模块82.2.1 主要特点82.2.2 引脚功能82.2.3 工作模式102.2.4 工作原理102.2.5 配置字112.2 SPI协议122.3 单片机的通讯技术132.3.1并行通信132.3.2 串行通信142.4 串行通信的方式162.4.1 单工模式162.4.2 半双工模式162.4.2 全双工模式172.3 系统电路设计182.4.1 控制器无线模块182.4.2 四轴飞行器无线模块192.4 下位机程序设计21第三章 基于QT的上位机设计223.1 Qt工具简介223.2 Qt窗口部件233.3 Qt对象模型233.4 Qt的容器类243.5 Qt2D绘图243.5.1根本图形的绘制和填充253.5.2 坐标系统253.5.3 其他绘制26第四章 系统整体调试274.1 系统整体流程设计274.2系统调试294.3 调试结果分析29第五章 完毕语30小四 宋体第一章 绪论1.1 四轴飞行器的开展和现状章节标题参考qq群里格式文档四轴飞行器是四桨、非共轴多旋翼飞行器,属于多旋翼飞行器的一种,是一种典型的、完全利用电子控制手段取代机械控制手段的飞行器之一。四轴飞行器的空气动力学原理与传统固定翼飞行器及基于桨距控制的直升机系统有很大的区别:在动力来源上,四轴飞行器直接由旋翼产生升力,而不是由机翼产生升力;在姿态控制上,四轴飞行器不是通过改变机翼或者旋翼的空气动力学构造,而是通过协调各旋翼转速而实现飞行器的姿态控制。四轴飞行器使用电子飞行器控制系统,因而彻底抛弃了传统飞行器复杂的机械控制部件,在相当程度上简化了飞行器构造和重量,也极大的降低了制造本钱及装配难度;除此之外,其独特的空气动力学原理也使之具备里垂直起降能力,能够完成对其他飞行器而言非常困难甚至不可能完成的任务。正是由于四旋翼飞行器在机体体积、隐蔽性、垂直起降、定点悬停和低速飞行等方面表达出来的不可置疑的优势,因而在侦查监视、同性中继、电子干扰、武器攻击等军事领域和交通监视和应用价值,已经成为目前除了扑翼飞行器外最有前途、最有潜力的微型飞行器之一。1.2 无线通讯概念无线通讯的原理是电磁波信号可以在空气中可以传播的特性进展信息交换的一种通讯方式。本次毕业设计利用的无线通讯模块是NRF24L01如图1.1,它是一款新型单片射频收发器件,工作的频率在2.4 GHz2.5 GHz ISM之间。里面包含了频率合成、功率放大、晶体振荡、调制等功能,并具有增强型ShockBurst技术。nRF24L01优点是耗电低,发射时和接收时候的工作电流分别只有9mA跟16mA。NRF24L01具有自动重发丧失数据包的功能和自动产生应答信号的功能。这能够确保信号发射成功。NRF24LO1具有SPI接口 ,可以和具有硬件SPI功能的单片机连接或者单片机I/O口进展模拟。方便与51这类没有硬件SPI的单片机进展连接。图1.1 NRF24L011.3 上位机概念上位机是指可以直接发出操控指令的计算机,一般是PC机,屏幕上显示温度,压强,高度,等信号。下位机是从现在设备或者传感器或取信息的仪器一般是PLC或者单片机。上位机发送指令给下位机,下位机受到指令后执行指令,一般是读取现场设备的状态。就好比PC机发送信号给单片机然后单片机发送信号给四轴飞行器,控制它完成各种动作。同时四轴飞行器也可以转化成相应的数据反应给上位机。上下位机都需要编程。都有专门的开发系统。在概念上上位机是用来控制和提供效劳的,相反来说,下位机是被控制者和被提供效劳者。也可以理解为主机和从机的关系,但是上位机和下位机是可以转化的。工控机、上位机、工程师站等都是自控术语,工控机是负责现场控制的机器,从字面上就能看出来,上位机的管理功能要高于工控机,上位机就是工控机的管理机构,可以由工程师或者管理人员来操作,具有对工控机修改参数、简单程序,统计多台工控机数据和报表功能的管理计算机。图1.2上下位机的通讯一般都由下位机来决定,TCP/IP一般是支持的,下位机一般它都具有自己很独特的通讯协议,而它的通讯协议一般都在你买下位机附带的光碟里面,通过观看便可以知道它的通讯协议。实际上它们的通讯协议仅仅是API函数的不同,它们都有支持多语言的功能,也支持高级语言为上位机语言。通常上下位机的通讯可以采用不同的协议可以有串口RS232通信协议或者也可以采用串口RS485通信协议。通信协议可以采用封装好的开发工具就可以实现下位机和上位机之间的通信,但是也可以自己编写驱动类的程序协议编写上下位机之间的通信。本次课题是运用RS232作为上下位机的通信协议来控制上下位机之间的通信。第二章 单片机下位机设计2.1 主要芯片本课题使用的是由INTEL公司生产的STC89C52单片机和意法半导体公司生产的STM32芯片来控制NRF24L01无线模块,STC89C52作为控制器的芯片如图2.1,而STM32则作为四轴飞行器的主芯片,两者之间通过NRF24L01来通讯。STC89C52芯片是对于单片机初学者来说最适合的一款芯片,简单易学。它具有32个双向的I/O口,3个16位的定时计数器,还具有部512K的数据储存器8K片程序储存器,还具有中断功能。具有空闲掉电的模式,这可以之时芯片在部工作时候耗电量更少。STM32是32位的微型控制器,它的功能十分强大,耗能也极低,非常适合四轴飞行器的主芯片。本课题采用的是STM32F103如图2.1增强型芯片,它具有72MHz的时钟,2.0到3.3V的供电电压和I/接口的驱动电压。除此之外它也具有低功耗的模式,比方掉电模式,待机模式,和空闲模式。本身自带ADC转换模块,不再需要添加ADC转换芯片,极大的节省了空间同时最多具有112I/O口,这致使它能够实现很复杂的功能。同时具有11个定时器和3个SPI通道。可直接利用其SPI功能与NRF24L01进展通讯。所以是四轴飞行器主芯片的不二之选。 图2.12.2 无线模块NRF24.L01中选取无线模块时候,起初有两个方案,一个是HC-05蓝牙模块,二就是本次最终选择的NRF24L01模块,不选择HC-05蓝牙模块是因为传输距离不够,而且有手机限制。而NRF24L01模块传输距离短则几十米长则上千米,而且价格低廉。它还具有自动重发的功能。而四轴飞行器的无线通讯对距离有很大的要求。所以NRF24L01非常适合作为四轴飞行器的无线通讯模块。2.2.1 主要特点NRF24L01具有自动应答和自动再发射功能;它的片会自动生成CRC校验码;数据传输率为l Mb/s或2Mb/s;SPI速率为0 Mb/s10 Mb/s;NRF24L01有125个频道:兼容其他NRF24L01系列的射频模块;1.9 V3.6 V为它的供电电压。2.2.2 引脚功能CE:使能发射或者接收;CSN,SCK,MOSI,MISO,SPI引脚端,微处理器可通过此引脚配置NRF24L01;IRQ:中断标志位;VDD电源输入端;VSS电源地;*C1,*C2:晶振振荡器引脚;ANT1,ANT2:天线接口;VDD_PA:为功率放大器供电,输出为1.8V;IREF:参考电流输入。如图2.2。三个图,使用三个不同的图号:图2.2 图2.3 图2.4图2.22.2.3 工作模式通过配置存放器可将nRF241L01配置四种工作模式如表一所示。表1 NRF24L01工作模式工作模式PWR_UPPRIM_R*CEFIFO存放器状态承受模式111发射模式101数据在T* FIFO 存放器发射模式10 10停留在发送模式,直至数据发送完待机模式101T* FIFO 为空待机模式1-0无数据传输掉电模式0-在调试程序时候可以将它在不工作时候转为待机模式1,在这个模式下它的晶振是不工作的;待机模式2进入的要FIFO存放器为空加上把CE置高;在待机模式下,所有的配置字都会跟着保存。所有模式下掉电模式功耗最小,nRF24L01在此模式下不工作,但配置存放器的值会保存。2.2.4 工作原理当快要发射信号时候把nRF24L01配置为发射方式:然后将有效数据T*_PLD和节点地址T*_ADDR依照SPI的时序写入NRF24L01的缓冲区当中,当CSN为低时T*_PLD写入缓冲区,并且T*_ADDR写入一次就可以了,然后把CE置成高电平并且要让它持续的时间为10s以上才有效,之后要延迟130s后发射数据;当发射数据后NRF24L01会自动的进入承受模式,等待承受对面发来的应答信号。如果接收到应答信号的话,则这一次通讯就算是成功了。之后T*_DS会自动的置高,T* FIFO中的T*_PLD会去除。如果没有收到应答信号,NRF24L01会一直重新发射数据,当重发数据的次数到达一定上限,MA*_RT置高,T* FIFO中的数据会保存住等待下次发送;当MA*_RT或T*_DS置高时,IRQ变低,产生中断,通知MCU。发射成功时,CE为低则进入空闲模式1;假设发送堆栈中有数据且CE为高,则进入下一次发射;假设发送堆栈中无数据且CE为高,则进入空闲模式2。接收数据时,首先配置为接收模式,接着延迟130s进入接收状态等待数据的到来。当接收方检测到有效的地址和CRC时,就将数据包存储在R* FIFO中,同时中断标志位R*_DR置高,IRQ变低,产生中断,通知MCU去取数据。假设此时自动应答开启,接收方则同时进入发射状态回传应答信号。最后接收成功时,假设CE变低,则nRF24L01进入空闲模式1。2.2.5 配置字SPI口为同步串行通信接口,最大传输速率为10 Mb/s,传输时先传送低位字节,再传送高位字节。但针对单个字节而言,要先送高位再送低位。相应的状态和数据信息是从MISO输出给MCU。 nRF24L0l所有的配置字都由配置存放器定义,这些配置存放器可通过SPI口访问,常用的配置存放器如表2所示。表2 配置存放器地址H存放器名称功能00CONFIG设置24L01工作模式01EN_AA设置接收通道及自动应答02EN_R*ADDR使能接收通道地址03SETUP_AW设置地址宽度04SETUP_RETR设置自动重发数据时间和次数07STATUS状态存放器,用来判定工作状态0A0FR*_ADDR_P0P5设置接收通道地址10T*_ADDR设置发送地址先写低字节1116R*_PW_P0P5设置接收通道的有效数据宽度2.2 SPI协议SPI是串行、全双工、同步、基于字符通道的四线外围接口。它主要应用与单片机同各外围器件间的通信,或者主机系统中的MCU之间的通信。当处理器的片I/O功能或存储器缺乏以供系统使用时,也用SPI扩展I/O功能。这也是扩展I/O功能的最方便,最简单的方法,突出的优点是需要3到4条线就能够实现扩展I/0口功能。主要特点有:(1) 可被编程为主模式或从模式。(2) 支持主、从模式。(3) 全双工,四线同步传输。(4) 支持多主模式。(5) 可编程的相位时钟和极性时钟。(6) 可发送的完毕中断标志。SPI协议是四线同步通讯协议。其四条信号线是:MISO,MOSI,SCLK,SPISEL,如图3.1。图2.1在通讯时SPI可以被初始化为主模式或者从模式。当SPI工作在主模式是,SPI产生从模式的SPI使能信号SPISEL和同步时钟信号SCLK:当SPI工作在从模式时,SPI承受外部的SPISEL和SCLK信号。SPISEL信号由SPI的SPISEL端参数,接到SPI的SPISEL端。当SPI工作在主模式时,这个信号端不用,否则会参数错误。这个信号端是用于使能SPI从机。工作在从模式的SPI的SPISEL端,收到低电平信号后,在时钟SCLK节拍下,开场工作。包括发生移位存放器,承受移位存放器,发送FIFO,承受FIFO。当工作模式时的SPI的SPISEL端,收到一个高电平后停顿工作,不再理会同步时钟信号。1MOSI SPI总线主机输出/ 从机输入SPI Bus Master Output/Slave Input。2MISO SPI总线主机输入/ 从机输出SPI Bus Master Input/Slave Output)。3SCLK SPI时钟信号,由主设备产生。4CS 从设备片选信号。2.3 单片机的通讯技术计算机之间的通信方式有并行通信和串行通信两种。在单片机系统中,一般都是采用串行通讯方式,因为它只需要2根线,极大节省了空间。2.3.1并行通信并行通讯特点是每一位都要通过数据线相连,还有询问应答信号线如图2.1所示。黑底框图打印出来非常难看有时间修改为白底黑字,可使用PS等画图工具 图2.18位数据总线的通信系统,一次传送8位数据,需要8根数据线,此外还需假设干条控制信号线。这种通信方式只适用于短距离数据传送。并行通信的特点是控制简单、传输速度快,但由于传输线较多,所以长距离传送本钱高,而且通信双方的各位同时和发送存在困难。2.3.2 串行通信串行通信是将数据分成一位一位的形式在一条传输线上依次传送,这种传送方式只需要一条数据线、一条公共信号线和假设干条控制信号线。因为一次只能传送一位,所以对于一个字节的数据,至少要传送8次才能完成一个字节数据的传送,如图2.2所示。图2.2串行通信的必要过程是:发送时,需要把并行数据转换成串行数据发送到传输线上,接收时,要把串行数据转换成并行数据,这样计算机才能处理,因为计算机部的数据总线是并行的。串行通信的特点是传输线少,长距离传送本钱低,但数据的传送控制比并行通信复杂。串行通信又分两种方式:异步通信和同步通信。异步通信是指通信的发送与接收设备使用各自的时钟控制数据的发送和接收过程 。在异步通信方式中,数据是以字符构成的帧为单位进展传输的,字符与字符之间的间隙是任意的,但每个字符中的各位是以固定的时间传送的,即字符之间不一定有“位间隙的整数倍关系,但同一字符的各位之间的距离均为“位间隔的整数倍。异步通信方式中,一帧信息由四局部组成:起始位、数据位、校验位、停顿位,如图2.3所示。 图2.3在异步通信方式中,首先发送起始位,起始位用“0表示数据传送的开场;然后再发送数据,从低位到高位逐位传送;发送完数据后,再发送检验位也可以省略;最后发送停顿位“1,表示一帧信息发送完毕。起始位占用一位,用来通知接收设备一个字符要发送,准备接收。线路上不传送数据时,应保持为“1。接收设备不断检测的状态,假设在连续收到“1以后,又收到一个“0,就准备接收数据。数据位可根据情况取5位、6位、7位、或8位,但通常情况下为8位,方式时低位在前,高位在后。校检位通常是奇偶校检占用一位,在数据传送中也可不用,由用户自己决定。停顿位用于向接收设备表示一帧字符信息发送完毕。停顿位通常可取1位、1.5位或2位。在异步通信方式中,两相邻字符帧之间可以没有空闲位,也可以假设干空闲位,由用户决定。异步通信的特点是不要求收发双方时钟严格一致,实现容易,设备开销小,但每个字符要附加2-3位,用于起始位、校检位和停顿位,各帧之间还可能有间隙,因此传输效率不在单片机与单片机之间,单片机与计算机自己通信时,通常采用异步串行通信。同步通信时要建立发送方时钟对接收方时钟的直接控制,使双方到达完全同步。在同步通信中,数据开场传送前用同步字符使收发双方取得同步,然后传送数据。同步传送时字符与字符之间没有间隙,也不用起始位与停顿位,仅在数据块开场时用同步字符SYNASCII码位16H指示,CRC为校验码。同步通信数据帧格式如图2.4所示。图2.42.4 串行通信的方式2.4.1 单工模式在单工制式下,通信线的一端接发送器,一端接接收器,只允许一个方向的数据传送,不能实现反响传输。如图2.5所示。 图2.52.4.2 半双工模式在半双工制式下,系统的每个通信设备都由一个发送器和一个接收器组成,使用一条或一对传输线,如图2.6所示。半双工制式允许两个方向传输数据,但不能同时传输,需要分时进展,如当S1闭合时,数据从A到B;当S2闭合时,数据从B到A。图2.62.4.2 全双工模式全双工制式通信系统的每端都有发送器和接收器,使用两条或两对传输线,允许两个方向同时进展数据传输 ,如图2.7所示。图2.72.3 系统电路设计PC通过USB转串口与STM32相连。PC上位机程序将数据通过USB转串口传给单片机,单片机设置好NRF24L01的工作状态后将数据帧通过SPI接口传给NRF24L01.NRF24L01便会自动发送。PC 51 NRF24L01NUF24L01 STM32接收端MCU从NRF24L01数据缓冲区获得数据帧后,进展数据完整性校验合格后解帧将数据发往USB,假设不合格则令其重发。合格数据通过USB2.0全速接口又上位机程序接收处理。四轴飞行器STM32单片机控制的,STM32单片机通过无线模块与51单片机进展通信,再经过串口和PC机电脑上位机进展通信,这样构成一个整体。2.4.1 控制器无线模块控制器无线模块主芯片是STC89C52单片机,上文已介绍。最小系统由复位模块,电源模块,以及12M晶振构成。电源模块直接引出VCC,GND由串口供电。晶振电路产生时钟频率,单片机中要实现中断功能则必须具有晶振。无线模块NRF24L01硬件接口与51单片机的硬件接口对应为:CEP1.5;CSNP1.0;SCKP1.4;MOSIP1.1;MOISP1.3;IRQP1.2。通过51单片机I/O口模拟SPI时序来驱动NRF24L01工作。同时将发送给四轴飞行器的数据通过51单片机控制的显示模块NOKIA5110如图2.8显示出来。图2.8NOKIA5110显示模块可以显示15个汉字和30个字符,价格低廉,相比与LCD1602和LCD12864来说性价比更高。除此之外NOKIA5110的I/O接口只有8个,仅仅4跟线就可以驱动。NOKIA5110的速度比LCD1602和LCD12864的速度都要快。NOKIA5110显示屏连接STC89C52的P0口。根据这些硬件关系,利用D*P软件绘制原理图跟PCB图。2.4.2 四轴飞行器无线模块四轴飞行器无线模块主芯片型号STM32103C8T6,上文已介绍。四轴飞行器起飞是一个很复杂的任务。因此所需要的芯片要求功能强大,耗电量小,体形轻薄。STM32芯片完全符合该要求。四轴飞行器无线模块由STM32芯片最小系统、无线模块NRF24L01、显示模块NOKIA5110、电源模块构成。STM32最小系统同STC89C52单片机最小系统一样由复位电路、电源电路、8M晶振电路构成。电源模块加了一个LM1117电压调节器。以便提供3.3V电压给STM32芯片供电。除此之外,还能够给电压要求3.3V的NRF24L01无线模块供电。根据此硬件关系绘制原理图跟PCB图图2.8图2.92.4 下位机程序设计无线模块的数据提取信息并打包发送给串口开场下位机初始化等待数据有数据输入串口数据判断格式正确上位机数据打包入无线模块发送完毕下位机的功能就是实时发送四轴飞行器的一些需要直观检测的数据同时还要接收上位机的数据命令将数据发送给四轴飞行器来到达控制命令与接收命令的双重功能。其程序流程图如图3.1所示。图3.1第三章 基于QT的上位机设计Qt上位机软件的设置主要实现的功能是接收下位机单片机的实时数据并且在界面上显示出来并且绘制波形图。同时可以随时发送数据包指令给下位机控制命令。3.1Qt工具简介在PC机上安装了Qt 4.8.4版本的SDK,包含了几个很有用的工具,分别是Qt AssistantQt助手,Qt DesignerQt 设计师,Qt E*maples and Demos(Qt演示程序与例如)和Qt Linguist(Qt语言家)。1Qt Assistant助手 Qt Assistant是可配置且可重新发布的文档阅读器。Qt Assistant已经被整合进Qt Creator。它的功能有:定制Qt Assistant并与应用程序一起重新发布;快速查找关键词、全文本搜索、生成索引和书签;同时为多个帮助文档集合建立索引并进展搜索;在本地存放文档或在应用程序中提供在线帮助。(2) Qt Designer(Qt设计师)Qt Designer是强大的跨平台GUI布局和格式构建器。由于使用了与应用程序中将要使用的一样部件,可以使用屏幕上的格式快速设计、创立部件以及对话框。使用Qt Designer创立的界面样式功能齐全可以预览。(3) Qt E*maples and Demos(Qt演示程序与例如)这里列举了Qt自带的所有例如程序和演示程序。其中,例如程序就是前面讲到的Qt Creator欢送模式中的例如程序。(4) Qt Linguist(Qt语言家) Qt Linguist提供了一套加速应用程序翻译和国际化的工具。Qt使用单一的源码树和单一的应用程序二进制包就可同时支持多个语言和书写系统,主要功能有:收集所有UI文本并通过简单的应用程序提供翻译人员;语言和字体感知外观;通过智能的合并工具快速为现有应用程序增加新的语言;Unicode编码支持世界上大多数字母;在运行时可切换从左向右或从右向左的语言;在一个文档中混合多种语言。3.2 Qt窗口部件Qt Creator中所有的窗口部件都继承自QWidget。QWidget类是所有用户界面对象的基类,被称为根底窗口部件。本设计中用到的窗口部件有QFrame类、QLabel类、按钮部件QCheckBo*、标准按钮QPushButton、行编辑器QLineEdit,文本编辑器QTe*Edit类。3.3 Qt对象模型标准C+在对象模型可以在运行时非常有效地支持对象式,但是它的静态特性在一些问题领域中不够灵活。图形用户界面编程不仅需要运行时的高效性,还需要高度的灵活性。为此,Qt在标准C+对象模型的根底上添加了一些特性,形成了自己的对象模型。信号和槽用于两个对象之间的通信,信号和槽机制是Qt的核心特征,也是Qt不同于其他开发框架的最突出特征。在GUI编程中,当改变了一个部件时总是希望其他部件也能了解到该变化。更一般来说,我们希望任何对象都可以和其他对象进展通信。例如,如果用户单击了关闭按钮,则希望可以执行窗口的close()函数来关闭窗口。为了实现对象之间的通信,一些工具包中使用了回调callback机制,而在Qt中使用了信号和槽来进展对象间的通信。当一个特殊的事情发生时便可以发射一个信号,比方按钮被单击;而槽函数就是一个函数,他在信号发射后被调用来响应这个信号。Qt的部件类中已经定义了一些信号和槽,但是更多的做法是子类化这个部件,然后添加自己的信号和槽来实现想要的功能。声明一个信号要用关键字signals,在signals前面不能使public,privateProtected等限定符,因为只有定义该信号的类及其子类才可以发射该信号。而且信号只用声明也不能对于它进展定义实现。还要注意,信号没有返回值,只能是void类型的。然后是声明一个槽,声明一个槽需要使用slots关键字。一个槽可以是private,public,protected类型的,槽也可以声明为虚函数,这与普通的成员函数是一样的,也可以像调用一个普通函数一样来调用槽。槽的最大特点就是可以和信号关联。对与信号和槽必须使用SIGNAL()和SLOT()宏,它们可以将其参数转化为const char*类型。3.4 Qt的容器类1Qt库基于模版的容器类这些容器类可以用来存储指定类型的工程,例如,如果需要一个QString类型的可变大小的数组,则使用QVector。Qt提供了一些顺序容器:Qlist、QLinkedList、QVector、QStack和QQueue。因为这些容器都是一个接一个线性存储的,所以被成为顺序容器。对于大多数应用程序而言,使用最多的就是QList,虽然它是作为一个数组列表,但是它在头部和尾部进展添加操作是很快速的。如果需要使用一个链表,则可以使用QLinkedList;如果希望数据项可以占用连续的存空间,可以使用QVector。而QStack和QQueue作为便捷类,分别提供了先进后出LIFO和先进先出FIFO语义。2遍历容器类遍历一个容器可以使用迭代器iterators来完成,迭代器提供了一个统一的方法来访问容器中的工程。Qt的容器类提供了两种类型的迭代器:JAVA风格迭代器和STL风格迭代器。如果只是按顺序遍历一个容器中的工程,则还可以使用Qt的foreah关键字。每一个容器类都有两个JAVA风格迭代器数据类型:一个提供只读访问一个提供读写访问。STL风格迭代器兼容Qt和STL的通用算法,而且在速度上进展了优化。对于每一个容器类,都有两个STL风格迭代器类型:一个提供了只读访问另一个提供了读和写访问。3.5 Qt2D绘图Qt中提供了强大的2D绘图系统,可以使用使用一样的API在屏幕和绘图设备上进展绘制,主要基于QPainter、QPaintDevice和QPaintEngine这3个类。其中QPainter用来绘图操作;QPaintDvice提供绘图设备,是一个二维空间的抽象,可以使用QPainter在其上进展绘制;QPainteEngine提供了一些接口,可以用于QPainter在不同的设备上进展绘制。它们三者的关系如图3.2所示。QPainterdeiceQPainterengieQPainter图3.23.5.1根本图形的绘制和填充绘制系统中由QPainter来完成具体的绘制操作,提供了大量高度优化的函数来完成GUI的编程所需的大局部绘制工作。QPainter可以绘制一切想要的图形,从最简单的一条直线到其他任何复杂的图形还可以用来绘制文本和图QPainter可以在继承自QPaintDevice类的任何对象上进展绘制操作。QPainter一般在一个部件重绘事件的处理函数中绘制,首先要建立QPainter对象,再进展图形的绘制,最后销毁QPainter对象。3.5.2 坐标系统Qt的坐标系统是由QPainter类控制的,而QPainter是在绘图设备上绘制的。绘图设备类QPainterDevice是所有可以绘制的对象的基类,它的子类主QWidget、QPi*map、QPicture、QImage和QPainter等。一个绘图设备的默认坐标系统中原点0,0在其坐上角,*坐标向右增长,y坐标向下增长。在基于像素的设备上,默认的单位是一个像素,而在打印机上的默认单位是一个点(1/72英寸)。QPainter的逻辑坐标与绘图设备的物理坐标之间的映射由QPainter的变换矩阵、窗口和视口处理。逻辑坐标与物理坐标是默认一致的。QPainter也支持坐标变换例如旋转和缩放。1根本变换默认的,QPainter在相关的设备的坐标系统上进展操作,但是完全支持仿射affine坐标变换。绘图时可以使用QPainter:scale()函数缩放坐标系统,使用QPainter:rotate()函数顺时针旋转坐标系统,使用QPainter:translate()函数平移坐标系统,可以使用QPainter:shear()围绕原点来扭曲坐标系统。坐标系统的2D变换由QTransform类实现,可以使用前面提到的那些便捷的函数进展坐标变换,当然也可以通过QTransorm类实现;而且QTransform类对象可以存储多个变换操作,当同样的变换需要屡次使用时,建议使用QTransform类对象。坐标系统的变换是通过变换矩阵实现的,可以在平面上交换一个点到另一个点。进展所有变换操作的变换矩阵都可以使用QPainter:worldTransform()函数获得,如果要设置一个变换矩阵,可以使用QPainter:setWorldTransform()函数,这两个函数也可以分别使用QPainter:transformation()和使用QPainter:setTransform()函数来代替。2窗口视口转换使用QPainter绘制时会使用到逻辑坐标,然后再转换为绘图设备的理坐标。逻辑坐标到物理坐标的映射由QPainter的worldTransform()函数、QPainter的viewport()以及window()函数进展处理。其中,视口表示物理坐标下制定的一个任意矩形,而窗口表示逻辑坐标下的一样矩形。默认的,逻辑坐标和物理坐标是重合的,都相当于绘图设备上的矩形。3.5.3 其他绘制1绘制文字除了绘制图形之外,还可以使用QPainter:drawTe*t()函数来绘制文字,也可以使用QPainter:setFont()设置文字所用的字体,使用QPainter:fontInfo()函数可以获得字体的信息,它返回QFontInfo类对象。在绘制文字时会默认使用抗锯齿。2绘制路径如果要绘制一个复杂的图形,尤其是要重复绘制这样的图形,则可以使用QPainterPath()来进展绘制。QPainterPath类为绘制操作提供了一个容器,可以用来创立图形并且进展重复使用。一个绘图路径就是有多个矩形、椭圆、线条或者曲线等组成的对象,一个路径可以是封闭的,例如矩形和椭圆;也可以是非封闭的,例如线条和曲线。3绘制图像Qt提供了4个类来处理图像数据:QImage、QPi*map、QBitmap和QPicture,都是常用的绘图设备。其中QImage主要用来进展处理I/O处理,对I/O处理操作进展优化,而且也可以用来直接访问和操作像素;QPi*map主要用来在屏幕上显示图像,它对于在屏幕上显示图像进展了优化;QBitmap是QPi*map的子类,是一个便捷类,用来处理颜色深度为1的图像,即只能显示黑白两种颜色QPicture用来纪录并重演QPainter命令。第四章 系统整体调试4.1 系统整体流程设计上位机与无线通讯模块设计的主要目的就是为了通信,实现远程可操控四轴飞行器的姿态以及飞行路线等。人只要坐在电脑旁边就能实时观察飞行器飞行的根本情况。一系列的数据以及故障分析都是由上位机来处理的,上位机设计以及无线模块通信设计给予开发者极大的方便,从而缩短了开发周期,节省开发时间,方便的操作,可直观的分析。其整个系统的整体流程如图4.1所示。完毕开场是否发送下位机是否收到数据格式是否正确串口翻开参加头文件建立信号读数据包将数据包发送出去将数据绘制2D图处理数据设置报警机制直观显示在文本框无线模块的数据提取信息并打包发送给串口开场下位机初始化等待数据有数据输入串口数据判断格式正确上位机数据打包入无线模块发送完毕图4.14.2系统调试上位机开场通过设计界面,翻开串口,开场判断是否有数据发送命令如果有则将数据命令包发送出去,再判断下位机是否接收成功,如果没有则再次发送。如果没有数据发送命令,则连续读取下位机的数据包将接收到的数据包解析出来,将不同数据段的数据分别在上位机特殊功能的窗口部件上得以显示或者绘制出2D波形曲线图。然后循环重复的操作。下位机初始化开场后,开场等待数据的到来,如果数据包是上位机的数据命令,则单片机将数据解析出来,然后再将命令发送个四轴飞行器,并给予上位机返回值,如果是无线模块发送过来的实时数据包,则单片机将数据包解析,并且将数据包发送给上位机,然后在上位机上显示出来或者绘制出波形曲线。4.3 调试结果分析经过改良的上位机版本,和下位机的调试后。将数据进展比照,发现上位机和下位机的通信是完全可以实现的。上位机接收以及发送的数据或者命令都是完全符合要求,经过大量的实验证明了上位机的成功运行,完全符合设计者的要求,为开发过程提供了很大的帮助。第五章 完毕语四轴飞行器通过无线模块进展通信,然后通过PC监控数据。通过Qt设计出的四轴飞行器上位机,可以实现实时接收和发送数据,极大程度上减轻了制作者的体力劳动,只需要做在电脑旁边就可以分析和设置数据,节省了开发的周期和劳动,是一种很好的工作模式,使得整个四轴飞行器的制作过程中效率提高了,不会再靠人工的直观经历重复的调试复杂的数据过程,可以准确得到飞行器的数据,经过简单的运算就可以给定可靠的数据命令,从而到达很好的控制水平。在本设计中,主要对四轴飞行器的无线通讯及其上位机进展设计,在无线通讯这一模块遇到了很多问题,由于通讯需要两个单片机,在进展硬件设计上比拟麻烦,由于两块芯片型号完全不同,虽然实现的功能是一样的,但是软件的编写却有不同,为了克制此困难,花费了很大局部的时间去了解各个芯片的程序编写。除此之外,NRF24L01芯片资料了解不充分导致在两个单片机实现无线通讯上也遇到了很多困难,不过经过在网上查资料和向教师同学求教最终实现了两者之间的通讯。参加致谢参考文献1晓杰.基于视觉的微小型四旋翼飞行器位姿估计研究与实现D.:大学,2009.3朝青单片机原理及接口技术M:航空航天大学出版,19974霍亚飞.Qt Creator快速入门/霍亚飞编著.:航空航天大学,2012.5.5C+程序设计/闵联营, 何克右主编:清华大学,20106C语言程序设计吴德成主编 邓 . 等 编著:清华大学出版 社,20117C语言设计界面大全/ 论等编:机械工业,19938数据构造:C语言描述/王爱民,杰主编:清华大学,20119单片机原理及应用:使用Freescale S12*构建嵌入式系统/任勇, 王永东, 何伟编著:清华大学,201210单片机C语言编程根底与实践/同法编著:航空航天大学出版社,200911单片机C语言轻松入门/周坚编著:航空航天大学,200612单片机C语言Windows环境编程宝典/马忠梅 . 等 编著:航天航空大学,200313单片机C语言编程与实例/亮, 侯国锐编著:人民邮电出版社,2003. z.
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 管理文书 > 施工组织


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!