田東波 徐鵬程 張德俊 周琦 楊云露
摘要:傳統(tǒng)四軸飛行器只能通過遠程遙控的方式工作,在實際運用中存在很大的局限性。針對上述問題本文提出并設計了一款基于樹莓派的四軸飛行器,其與傳統(tǒng)的飛行器相比多了一個智能控制模塊,該模塊可以代替人工控制。飛行器采用STM32F103作為飛控模塊的核心芯片,采用樹莓派3B模塊作為智能控制模塊,通過MPU9250模塊獲取飛行器的姿態(tài)信息,通過GPS模塊獲取飛行器的位置信息,通過WiFi或4G實現(xiàn)對飛行器的遠程遙控。手機或PC端通過基于TCP/IP的協(xié)議向飛行器的智能控制模塊發(fā)送控制指令從而實現(xiàn)對飛行器的控制,而智能控制模塊通過SPI總線以及相關協(xié)議對飛控模塊進行控制。實驗測試表明,本文所提出的四軸飛行器設計方案具有可行性,值得進一步研究。
關鍵詞: 四軸飛行器; 樹莓派; 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 引 言
四軸飛行器最初被發(fā)明是用于軍事領域,隨著近些年半導體以及嵌入式行業(yè)的發(fā)展,四軸飛行器的制作成本以及開發(fā)難度大大降低,其應用逐漸走向民用領域。在日常生活中,四軸飛行器最常見的用途是航拍,而此類用途對飛行器的功能要求并不是特別高,僅需要支持無線遙控。隨著近些年網(wǎng)購的興起,四軸飛行器甚至被用來運送快遞,在此類應用中四軸飛行器僅僅支持無線遙控遠遠是不夠的,還需要其具有智能控制功能。傳統(tǒng)的四軸飛行器僅僅采用一塊MCU芯片作為控制單元的核心,無法滿足相關智能控制算法運行的硬件要求,因此需要進一步研究和開發(fā)。
1 相關理論
1.1 四軸飛行器工作原理
四軸飛行的機身布局通常有2種模式,分別是十字模式和X模式。在實際應用中,四軸飛行器通常會攜帶攝像頭等視頻圖像采集設備,為保證視線的良好,四軸飛行器大多采用X模式的機身布局。X模式的機身布局如圖1所示。
2 總體設計方案
2.1 系統(tǒng)設計方案
四軸飛行器的系統(tǒng)設計方案如圖2所示。本設計采用樹莓派3B模塊作為智能控制模塊,并且通過UART接口在樹莓派上擴展GPS模塊以及通過USB接口擴展攝像頭模塊;采用STM32F103作為飛控模塊的控制芯片,該芯片分別對4個電調(diào)模塊提供PWM輸出,并且通過I2C接口擴展MPU9250模塊。手機或PC端通過TCP/IP來向四軸飛行器的智能控制模塊發(fā)送控制指令,智能控制模塊通過SPI向飛控模塊下發(fā)飛行狀態(tài)指令。
由圖2可知,對于系統(tǒng)中各主要模塊的設計功能可做概述如下:樹莓派3B模塊是英國樹莓派基金會開發(fā)的一款卡片式電腦,該模塊內(nèi)部集成有高性能的SOC芯片以及WiFi、藍牙等通信模塊,除此之外該模塊還具有豐富的外設接口以及供二次開發(fā)的GPIO接口[8-9];GPS模塊采用的是移遠科技的L80R模塊;STM32F103芯片是意法半導體的一款32位ARM架構的MCU;MPU9250是一款高性能的位姿傳感器模塊,內(nèi)部集成有 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的電流輸出。系統(tǒng)的供電方案如圖3所示。
3 硬件設計
四軸飛行器的硬件設計部分包括:電源電路設計、STM32F103最小系統(tǒng)設計、電機驅動電路設計、MPU9250電路設計等。這里,對其中主要電路的設計擬展開研究論述如下。
3.1 電源電路設計
16.8 V降壓到5 V采用的是MP2225電源芯片,5 V降壓到3.3 V采用的是AMS1117-3.3電源芯片,電源電路設計如圖4所示,圖4中PWR_5 V_EN與樹莓派相連用于控制系統(tǒng)電源的通斷。
3.2 STM32F103最小系統(tǒng)設計
STM32F103的最小系統(tǒng)設計如圖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接口的數(shù)據(jù)線,MPU9250_SDL是I2C接口的時鐘線,與STM32F103芯片的I2C接口相連。
4 軟件設計及測試
本文設計的飛行器與傳統(tǒng)的四軸飛行器相比,增加了智能控制模塊。智能控制模塊的主要功能是接收和解析用戶通過手機或PC端發(fā)送的指令并執(zhí)行相應的控制程序,通過SPI向飛控模塊發(fā)送控制指令實現(xiàn)對四軸飛行器的運動控制。為實現(xiàn)上述功能,需指定相關的協(xié)議,本節(jié)主要對相關協(xié)議的制定、軟件的設計以及測試做詳細探討與描述。
4.1 相關通信協(xié)議的制定
4.1.1 基于TCP/IP的控制協(xié)議
手機或PC端對四軸飛行器的控制協(xié)議是基于TCP/IP傳輸層協(xié)議的透明傳輸協(xié)議,一條報文的定義見表1。由表1分析可知,一條報文中各組成部分的含義可做闡釋分述如下。
(1)報文頭:一條報文的起始標志,約定為“0xbbee”。
(2)指令:四軸飛行器的控制指令,取值在0x00-0xff之間,最多可表示255條控制指令,具體見表2。
(3)設備號:用于區(qū)別不同的設備。
(4)命令參數(shù):控制指令相關的參數(shù),具體定義見表2。
(5)報文尾:一條報文的終止標志,約定為“0xeedd”。
四軸飛行器的回復報文定義見表3,由于篇幅有限,回復報文的詳細定義不再贅述。
4.1.2 基于SPI的控制協(xié)議
智能控制模塊通過SPI向飛控模塊發(fā)送指令,控制飛行器的飛行狀態(tài)(控制指令)、獲取飛行器的狀態(tài)參數(shù)(讀指令)、設置相關參數(shù)(寫指令)??刂浦噶詈妥x指令的長度都是2個字節(jié)、共16位,指令的定義見表4。bit15-14是指令位,用來區(qū)分不同的指令。控制指令中bit13以及讀寫指令的bit8都是奇偶校驗位,用來進行指令幀數(shù)據(jù)的校驗。控制指令中bit12-8是指令參數(shù)位,其中bit12代表“啟/停”,bit11代表“順/逆”,bit10代表“左/右”,bit9代表 “前/后”,bit8代表“上/下”。讀寫指令中bit13-9是讀寫地址位,用來區(qū)分不同的參數(shù)。寫指令bit7-0為寫數(shù)據(jù)位,用來存放寫入的數(shù)據(jù)。
4.2 通信軟件的設計
根據(jù)所制定的協(xié)議對相關通信軟件進行設計,軟件設計主要包括樹莓派中的命令解析執(zhí)行軟件以及STM32F103中指令解析執(zhí)行程序。由于篇幅有限,本小節(jié)只對MCU中相關程序設計做詳細介紹。研究中采用SPI接收中斷來處理相關指令,中斷的處理程序如下:
u16RecData = SPI_I2S_ReceiveData(SPI1);//讀取數(shù)據(jù)幀
cmdFrame.cmd = (u16RecData & 0xC000) >> 14;//解析命令
switch(u8Cmd)
{
case CMD_CONTROL://控制指令
cmdFrame.cmd_C_data = (u16RecData & 0x3E00) >> 9;//解析控制參數(shù)
vControl(cmdFrame.cmd_C_data);//執(zhí)行控制程序
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;//解析寫數(shù)據(jù)
vWriteData(cmdFrame.cmd_RW_address, cmdFrame.cmd_W_data);//執(zhí)行寫操作
break;
default:
break;
}
4.3 軟件測試
為進一步驗證本設計方案的可行性以及通信協(xié)議的可靠性,本文進行了軟件測試,軟件測試的過程如圖7所示。
控制端軟件通過TCP/IP協(xié)議將控制指令發(fā)送給設備管理服務器端,服務器端再將命令轉發(fā)給設備,設備在接收到控制指令后解析并執(zhí)行相關操作,本測試中為更好地體現(xiàn)命令解析和執(zhí)行的結果,將設備端的執(zhí)行結果通過串口發(fā)送到PC端。測試結果表明,飛行器設備能夠很好地執(zhí)行控制端軟件發(fā)送過來的指令,達到了預期的效果。
5 結束語
本文主要提出了一種基于樹莓派的四軸飛行器設計,包括硬件電路的設計以及通信軟件的設計。該飛行器在傳統(tǒng)四軸飛行器上增加了一個智能控制模塊,智能控制模塊通過SPI及相關協(xié)議對飛控模塊進行控制。另外,該飛行器可以通過手機端或PC端進行遠程控制,其控制指令是基于TCP/IP來傳輸。文中對四軸飛行器的主要硬件部分進行了設計,同時對2個主要的通信協(xié)議的制定做了詳細的研究論述。文章最后對主要的控制軟件進行了設計和調(diào)試驗證,仿真結果表明本設計方案有著良好的可行性,為后續(xù)四軸飛行器的研究和開發(fā)提供了參考。
參考文獻
[1] 吳勇,羅國富,劉旭輝,等. 四軸飛行器DIY:基于STM32微控制器[M]. 北京:北京航空航天大學出版社,2016.
[2]唐懋. 基于Arduino兼容的Stm32單片機的四旋翼飛行器設計[D]. 廈門:廈門大學,2014.
[3]劉杰. 四軸飛行器研究與設計[D]. 南京:南京郵電大學,2013.
[4]常國權,戴國強. 基于STM32的四軸飛行器飛控系統(tǒng)設計[J]. 單片機與嵌入式系統(tǒng)應用,2015(2):29.
[5]彭琰舉,宋文學,王晉,等. 基于MPU9250的示教航行姿態(tài)研究[J]. 電子設計工程, 2018,26(16):29.
[6]劉峰,呂強,王國勝,等. 四軸飛行器姿態(tài)控制系統(tǒng)設計[J]. 計算機測量與控制, 2011,19(3):583.
[7]葉樹球,詹林. 基于PID的四旋翼飛行器姿態(tài)控制系統(tǒng)[J]. 計算機與現(xiàn)代化, 2015(5):117.
[8]袁博,陳昕,高銘. 基于四旋翼飛行器的航拍增穩(wěn)云臺系統(tǒng)的控制算法[J]. ?數(shù)字技術與應用,2016(1):116.
[9]陳振,胥光申. 基于RPi的面曝光快速成形機控制系統(tǒng)[J]. 輕工機械,2015,33(6):60.