基于树莓派的四轴飞行器设计

2020-07-04 02:27田东波徐鹏程张德俊周琦杨云露
智能计算机与应用 2020年3期
关键词:树莓派

田东波 徐鹏程 张德俊 周琦 杨云露

摘要:传统四轴飞行器只能通过远程遥控的方式工作,在实际运用中存在很大的局限性。针对上述问题本文提出并设计了一款基于树莓派的四轴飞行器,其与传统的飞行器相比多了一个智能控制模块,该模块可以代替人工控制。飞行器采用STM32F103作为飞控模块的核心芯片,采用树莓派3B模块作为智能控制模块,通过MPU9250模块获取飞行器的姿态信息,通过GPS模块获取飞行器的位置信息,通过WiFi或4G实现对飞行器的远程遥控。手机或PC端通过基于TCP/IP的协议向飞行器的智能控制模块发送控制指令从而实现对飞行器的控制,而智能控制模块通过SPI总线以及相关协议对飞控模块进行控制。实验测试表明,本文所提出的四轴飞行器设计方案具有可行性,值得进一步研究。

关键词: 四轴飞行器; 树莓派; STM32; TCP/IP; SPI

【Abstract】 The traditional four-axis aircraft can only work by remote control, which has great limitations in practical use. In response to the above problems, this paper proposes and designs a four-axis aircraft based on the Raspberry Pi. Compared with the traditional aircraft, it has an intelligent control module, which can replace the manual control. The aircraft adopts STM32F103 as the core chip of the flight control module, adopts the Raspberry Pi 3B module as the intelligent control module, acquires the attitude information of the aircraft through the MPU9250 module, acquires the position information of the aircraft through the GPS module, and realizes the remote control of the aircraft through WiFi or 4G.  The mobile phone or PC transmits control commands to the intelligent control module of the aircraft through a TCP/IP-based protocol to control the aircraft, and the intelligent control module controls the flight control module through the SPI bus and related protocols. The experimental test shows that the design scheme of the four-axis aircraft proposed in this paper is feasible and worthy of further study.

【Key words】  quadcopter; Raspberry Pi; STM32; TCP/IP; SPI

0 引 言

四轴飞行器最初被发明是用于军事领域,随着近些年半导体以及嵌入式行业的发展,四轴飞行器的制作成本以及开发难度大大降低,其应用逐渐走向民用领域。在日常生活中,四轴飞行器最常见的用途是航拍,而此类用途对飞行器的功能要求并不是特别高,仅需要支持无线遥控。随着近些年网购的兴起,四轴飞行器甚至被用来运送快递,在此类应用中四轴飞行器仅仅支持无线遥控远远是不够的,还需要其具有智能控制功能。传统的四轴飞行器仅仅采用一块MCU芯片作为控制单元的核心,无法满足相关智能控制算法运行的硬件要求,因此需要进一步研究和开发。

1 相关理论

1.1 四轴飞行器工作原理

四轴飞行的机身布局通常有2种模式,分别是十字模式和X模式。在实际应用中,四轴飞行器通常会携带摄像头等视频图像采集设备,为保证视线的良好,四轴飞行器大多采用X模式的机身布局。X模式的机身布局如图1所示。

2 总体设计方案

2.1 系统设计方案

四轴飞行器的系统设计方案如图2所示。本设计采用树莓派3B模块作为智能控制模块,并且通过UART接口在树莓派上扩展GPS模块以及通过USB接口扩展摄像头模块;采用STM32F103作为飞控模块的控制芯片,该芯片分别对4个电调模块提供PWM输出,并且通过I2C接口扩展MPU9250模块。手机或PC端通过TCP/IP来向四轴飞行器的智能控制模块发送控制指令,智能控制模块通过SPI向飞控模块下发飞行状态指令。

由图2可知,对于系统中各主要模块的设计功能可做概述如下:树莓派3B模块是英国树莓派基金会开发的一款卡片式电脑,该模块内部集成有高性能的SOC芯片以及WiFi、蓝牙等通信模块,除此之外该模块还具有丰富的外设接口以及供二次开发的GPIO接口[8-9];GPS模块采用的是移远科技的L80R模块;STM32F103芯片是意法半导体的一款32位ARM架构的MCU;MPU9250是一款高性能的位姿传感器模塊,内部集成有 3轴陀螺仪、3轴加速度计以及3轴磁力计。

2.2 电源设计方案

本设计采用16.8 V的锂电池作为输入电源,同时为满足不同模块的供电要求,采用DCDC先将16 V降压到5 V,然后再通过DCDC将5V降压到3.3 V。16 V降5 V采用的是MP2225芯片,该芯片可以最大提供5 A的电流输出;5 V降3.3 V采用的是AMS117-3.3,该芯片最大提供1A的电流输出。系统的供电方案如图3所示。

3 硬件设计

四轴飞行器的硬件设计部分包括:电源电路设计、STM32F103最小系统设计、电机驱动电路设计、MPU9250电路设计等。这里,对其中主要电路的设计拟展开研究论述如下。

3.1 电源电路设计

16.8 V降压到5 V采用的是MP2225电源芯片,5 V降压到3.3 V采用的是AMS1117-3.3电源芯片,电源电路设计如图4所示,图4中PWR_5 V_EN与树莓派相连用于控制系统电源的通断。

3.2 STM32F103最小系统设计

STM32F103的最小系统设计如图5所示。该芯片共有48个引脚,采用3.3 V直流供电,由一个8 MHz的无源晶振提供主时钟以及一个32 768 Hz的无源晶振提供实时时钟,14、15是SPI接口引脚,21、22是I2C接口引脚,31、32是UART接口引脚,42、43、45、46引脚是PWM输出引脚。

3.3 MPU9250电路设计

MPU9250的电路设计如图6所示,该模块采用3.3 V直流供电,MPU9250_SDA是I2C接口的数据线,MPU9250_SDL是I2C接口的时钟线,与STM32F103芯片的I2C接口相连。

4 软件设计及测试

本文设计的飞行器与传统的四轴飞行器相比,增加了智能控制模块。智能控制模块的主要功能是接收和解析用户通过手机或PC端发送的指令并执行相应的控制程序,通过SPI向飞控模块发送控制指令实现对四轴飞行器的运动控制。为实现上述功能,需指定相关的协议,本节主要对相关协议的制定、软件的设计以及测试做详细探讨与描述。

4.1 相关通信协议的制定

4.1.1 基于TCP/IP的控制协议

手机或PC端对四轴飞行器的控制协议是基于TCP/IP传输层协议的透明传输协议,一条报文的定义见表1。由表1分析可知,一条报文中各组成部分的含义可做阐释分述如下。

(1)报文头:一条报文的起始标志,约定为“0xbbee”。

(2)指令:四轴飞行器的控制指令,取值在0x00-0xff之间,最多可表示255条控制指令,具体见表2。

(3)设备号:用于区别不同的设备。

(4)命令参数:控制指令相关的参数,具体定义见表2。

(5)报文尾:一条报文的终止标志,约定为“0xeedd”。

四轴飞行器的回复报文定义见表3,由于篇幅有限,回复报文的详细定义不再赘述。

4.1.2 基于SPI的控制协议

智能控制模块通过SPI向飞控模块发送指令,控制飞行器的飞行状态(控制指令)、获取飞行器的状态参数(读指令)、设置相关参数(写指令)。控制指令和读指令的长度都是2个字节、共16位,指令的定义见表4。bit15-14是指令位,用来区分不同的指令。控制指令中bit13以及读写指令的bit8都是奇偶校验位,用来进行指令帧数据的校验。控制指令中bit12-8是指令参数位,其中bit12代表“启/停”,bit11代表“顺/逆”,bit10代表“左/右”,bit9代表 “前/后”,bit8代表“上/下”。读写指令中bit13-9是读写地址位,用来区分不同的参数。写指令bit7-0为写数据位,用来存放写入的数据。

4.2 通信软件的设计

根据所制定的协议对相关通信软件进行设计,软件设计主要包括树莓派中的命令解析执行软件以及STM32F103中指令解析执行程序。由于篇幅有限,本小节只对MCU中相关程序设计做详细介绍。研究中采用SPI接收中断来处理相关指令,中断的处理程序如下:

u16RecData = SPI_I2S_ReceiveData(SPI1);//讀取数据帧

cmdFrame.cmd = (u16RecData & 0xC000) >> 14;//解析命令

switch(u8Cmd)

{

case CMD_CONTROL://控制指令

cmdFrame.cmd_C_data = (u16RecData & 0x3E00) >> 9;//解析控制参数

vControl(cmdFrame.cmd_C_data);//执行控制程序

break;

case CMD_READ://读指令

cmdFrame.cmd_RW_address = (u16RecData & 0x3E00) >> 9;//解析读地址

SPI_I2S_SendData(SPI1, u16GetData(cmdFrame.cmd_RW_address));//返回读的结果

break;

case CMD_WRITE://写指令

cmdFrame.cmd_RW_address = (u16RecData & 0x3E00) >> 9;//解析写地址

cmdFrame.cmd_W_data = u16RecData & 0x01FF;//解析写数据

vWriteData(cmdFrame.cmd_RW_address, cmdFrame.cmd_W_data);//执行写操作

break;

default:

break;

}

4.3 软件测试

为进一步验证本设计方案的可行性以及通信协议的可靠性,本文进行了软件测试,软件测试的过程如图7所示。

控制端软件通过TCP/IP协议将控制指令发送给设备管理服务器端,服务器端再将命令转发给设备,设备在接收到控制指令后解析并执行相关操作,本测试中为更好地体现命令解析和执行的结果,将设备端的执行结果通过串口发送到PC端。测试结果表明,飞行器设备能够很好地执行控制端软件发送过来的指令,达到了预期的效果。

5 结束语

本文主要提出了一种基于树莓派的四轴飞行器设计,包括硬件电路的设计以及通信软件的设计。该飞行器在传统四轴飞行器上增加了一个智能控制模块,智能控制模块通过SPI及相关协议对飞控模块进行控制。另外,该飞行器可以通过手机端或PC端进行远程控制,其控制指令是基于TCP/IP来传输。文中对四轴飞行器的主要硬件部分进行了设计,同时对2个主要的通信协议的制定做了详细的研究论述。文章最后对主要的控制软件进行了设计和调试验证,仿真结果表明本设计方案有着良好的可行性,为后续四轴飞行器的研究和开发提供了参考。

参考文献

[1] 吴勇,罗国富,刘旭辉,等. 四轴飞行器DIY:基于STM32微控制器[M]. 北京:北京航空航天大学出版社,2016.

[2]唐懋. 基于Arduino兼容的Stm32单片机的四旋翼飞行器设计[D]. 厦门:厦门大学,2014.

[3]刘杰. 四轴飞行器研究与设计[D]. 南京:南京邮电大学,2013.

[4]常国权,戴国强. 基于STM32的四轴飞行器飞控系统设计[J]. 单片机与嵌入式系统应用,2015(2):29.

[5]彭琰舉,宋文学,王晋,等. 基于MPU9250的示教航行姿态研究[J]. 电子设计工程, 2018,26(16):29.

[6]刘峰,吕强,王国胜,等. 四轴飞行器姿态控制系统设计[J]. 计算机测量与控制, 2011,19(3):583.

[7]叶树球,詹林. 基于PID的四旋翼飞行器姿态控制系统[J]. 计算机与现代化, 2015(5):117.

[8]袁博,陈昕,高铭. 基于四旋翼飞行器的航拍增稳云台系统的控制算法[J].  数字技术与应用,2016(1):116.

[9]陈振,胥光申. 基于RPi的面曝光快速成形机控制系统[J]. 轻工机械,2015,33(6):60.

猜你喜欢
树莓派
基于微信端的智能家居监控系统的设计与实现
智能安全防盗探测小车
基于嵌入式技术的农村医疗系统设计