一種基于WiFi控制的四旋翼飛行器設(shè)計與實現(xiàn)
掃描二維碼
隨時隨地手機看文章
引 言
2014 年 11 月,李克強總理出席首屆世界互聯(lián)網(wǎng)大會時指出,互聯(lián)網(wǎng)是大眾創(chuàng)業(yè)、萬眾創(chuàng)新的新工具。2015 年 3 月,李克強總理在十二屆全國人大三次會議上首次提出“互聯(lián)網(wǎng) +” 行動計劃,推動移動互聯(lián)網(wǎng)、云計算、大數(shù)據(jù)、物聯(lián)網(wǎng)等與現(xiàn)代制造業(yè)結(jié)合,引導(dǎo)互聯(lián)網(wǎng)企業(yè)拓展國際市場[1]。
基于以上背景,本文設(shè)計一個基于WiFi 控制的四旋翼飛行器控制系統(tǒng),將網(wǎng)絡(luò)通信 TCP 協(xié)議運用到系統(tǒng)中。該系統(tǒng)用傳統(tǒng)的遙控手柄模擬標(biāo)準(zhǔn)的遙控器,遙控手柄與PC 機相連, 四旋翼上添加帶有WiFi 模塊的RT5350,該設(shè)備運行嵌入式Linux 操作系統(tǒng),可與PC 機建立無線連接,從而遙控手柄通過網(wǎng)絡(luò)通信將遙控信號傳遞給四旋翼飛控系統(tǒng),達到控制四旋翼飛行的目的。本研究對計算機網(wǎng)絡(luò)的學(xué)習(xí)有一定的指導(dǎo)意義。
1 系統(tǒng)方案
本系統(tǒng)的總體結(jié)構(gòu)圖如圖 1所示,系統(tǒng)可分為用戶PC 客戶端、服務(wù)器、PWM控制器和飛控板四個部分。用戶將控制信號通過客戶端發(fā)給服務(wù)器,服務(wù)器接收到信號后通過串口通信將信號轉(zhuǎn)給PWM控制器,PWM控制器生成輸入信號, 飛控板收到信號后控制電機旋轉(zhuǎn)。
2 整體設(shè)計
系統(tǒng)劃分為兩部分,一部分為硬件設(shè)計,另一部分為軟件設(shè)計。其中硬件部分主要是各模塊的開發(fā)板的選擇及開發(fā)和 組裝,軟件部分主要實現(xiàn)控制端和服務(wù)器端的通信以及各模 塊之間的通信。
2.1 硬件總體結(jié)構(gòu)
本系統(tǒng)的硬件總體結(jié)構(gòu)設(shè)計如圖 2 所示,硬件總體結(jié)構(gòu) 是按照模塊化思想設(shè)計的。服務(wù)器端主要由 RT5350 模塊和 PWM 控制器組成,飛行器主要由飛控板、電機驅(qū)動和直流電 機組成 ,客戶端主要由 PC 和遙控手柄組成。
飛行器驅(qū)動層的主要設(shè)備是飛控板和 PWM 控制器,其 中飛控板采用簡單的 KK 飛行控制板。其功能簡單,易于調(diào)節(jié), 價格便宜,便于二次開發(fā)。PWM 控制器主要作用是向飛控板 發(fā)送指定的 PWM 波形,飛控板根據(jù) PWM 脈沖波對利用 I/O 口直接控制電機。由于飛控板的 I/O 口輸出電流為 mA 級,無 法驅(qū)動直流電機轉(zhuǎn)動,因此需要使用電機驅(qū)動模塊驅(qū)動電機。 直流電機選用的是減速直流電機,因為減速直流電機的輸出 力矩較大,可以適應(yīng)復(fù)雜地形。調(diào)節(jié)四個電機不同轉(zhuǎn)速用來改變飛行器的飛行動作。
服務(wù)器端的主要任務(wù)是接收客戶端的控制信號,并將信 號傳給 PWM 控制器,PWM 控制器將信號傳給飛控板。其中 開發(fā)板選用 RT5350,如圖 3 左所示。其運行的是一個嵌入式 Linux 操作系統(tǒng),帶有 WiFi 模塊和 RS 232 串口模塊,便于 和客戶端以及 PWM 控制器進行通信。PWM 控制器使用的是 艾爾賽舵機控制器(LCSC),如圖 3 右邊所示。LCSC 擁有 16 路舵機 PWM 脈沖信號輸出,可以同時對 16 個舵機進行任意 角度和精確時間的控制。該舵機控制器可以接收串口命令,適 合任何含標(biāo)準(zhǔn)串口(RS 232 電平)的系統(tǒng),如個人電腦、PLC、 51系列單片機、DSP、FPGA,ARM 等等。
客戶端主要由遙控手柄和 PC 組成,PC 需帶有無線網(wǎng)卡, 便于和服務(wù)器進行通信。標(biāo)準(zhǔn)遙控器采用 2.4 GHz 無線通信, 可以提供 8 通道甚至 16 通道的控制選擇。其功能強大、性能 穩(wěn)定、操作方便,缺點是價格昂貴。本文采用市面上常見的遙 控手柄,價格便宜,可以模擬出 4 個通道信號并產(chǎn)生控制信號。 2.2 軟件設(shè)計
軟件的總體結(jié)構(gòu)主要包括 3 個部分 :搖桿客戶端、服務(wù) 器端和 PWM 控制器。遙感控制客戶端主要是將搖桿的模擬 信號轉(zhuǎn)化成數(shù)字信號并通過 TCP 協(xié)議發(fā)送給服務(wù)器,服務(wù)器 端接收客戶端發(fā)送的命令并轉(zhuǎn)發(fā)給 PWM 控制器,PWM 控制 器將其轉(zhuǎn)化為 PWM 信號傳給飛控端,飛行控制端收到 PWM 信號后控制電機轉(zhuǎn)動。
2.2.1 客戶端控制算法設(shè)計
客戶端主要產(chǎn)生飛行器的飛行信號。游戲手柄客戶端的 實現(xiàn)原理是在 Linux 系統(tǒng)下讀取手柄的鍵碼值 [2],再通過一定 的數(shù)學(xué)計算,將鍵碼值映射 PWM 模塊可識別的指令。首先 在 Linux 系統(tǒng)下安裝驅(qū)動后會在 /dev/input 生成 js0。然后通 過 js0 接口來獲取遙控手柄的控制信息。當(dāng)用戶操作手柄時, 驅(qū)動發(fā)送 js_event 的結(jié)構(gòu)給應(yīng)用程序以通知用戶做了哪些操 作。js_event 有如下定義 :
struct js_event {unsigned int time ;/* event timestamp in milliseconds */short value ;/* value */unsigned char type ;/* event type */unsigned char number ;/* axis/button number */ } ;
其次,我們還應(yīng)了解手柄按鍵的分布 [3] :
1-4 號鍵的鍵值分布表 1 所列。
對于左側(cè)四個鍵,有兩種情況 :
當(dāng) ANALOG 鍵關(guān)閉時:上鍵和下鍵的 number 值均為 1, 左鍵和右鍵的 number 值為 0。其他值不變。
當(dāng) ANALOG 鍵按下時,鍵值會隨著手指按下和松開的 不同狀態(tài)來做出相應(yīng)的分布。不同狀態(tài)下的鍵值分布如表 2 所列。
當(dāng)旋轉(zhuǎn)時,相當(dāng)于向系統(tǒng)傳送一系列的 value 值漸變的 js_event。
根據(jù)以上原理,系統(tǒng)可以獲取手柄的按鍵值以及搖桿的 位置,得到手柄的遙控信息,并將此信息封裝為固定的格式 傳給服務(wù)器。
2.2.2 服務(wù)器設(shè)計
服務(wù)器運行在嵌入式 Linux 操作系統(tǒng)中,采用 Linux C 語言編程實現(xiàn),與客戶端之間建立 TCP 通信協(xié)議 [4]??蛻舳?通過掃描手柄設(shè)備文件讀出手柄按鍵碼,將其映射為 PWM 指令發(fā)送至服務(wù)器。服務(wù)器收到指令后通過串口通信將指令 發(fā)送給 PWM 控制器,PWM 產(chǎn)生指定波形驅(qū)動飛控板,從而 改變飛控 4 個電機轉(zhuǎn)速,控制飛行器飛行動作。
其客戶端與服務(wù)器之間的通信流程圖如圖 4 所示。
2.2.3 PWM 控制器
PWM 控制器接收到服務(wù)器的控制指令后,通過解析控 制指令產(chǎn)生 PWM 信號,并將此信號發(fā)送給飛控輸入端。其控 制指令格式如下:
命令格式 :#<ch>P<time>!
<ch> 表示所控制的是第幾路舵機,共 16 路(00~15)。
P :指令格式中固定符號,不可缺少。
<time> 表示 PWM 信號的寬度,為單位,
!:指令的結(jié)束符號,表示一條指令的結(jié)束,不可缺少。
本系統(tǒng)產(chǎn)生 4 路控制信號,分別控制四旋翼的四個電機, 其中 <ch> 表示控制哪一路電機,<time> 表示 PWM 信號寬度, 映射為電機旋轉(zhuǎn)的速度。飛控接收到 PWM 信號后,分別控 制四個電機轉(zhuǎn)動。
3 系統(tǒng)測試結(jié)果與分析
3.1 測試環(huán)境
本系統(tǒng)的測試環(huán)境如下:
系統(tǒng)環(huán)境 :嵌入式 Linux、Linux mint 17、Windows7;
硬件環(huán)境:嵌入式 Linux 開發(fā)板、PC、游戲手柄、四旋翼、 PWM 控制器 ;
網(wǎng)絡(luò)環(huán)境 :WiFi 網(wǎng)絡(luò),IP 地址塊 192.168.1.0/24。
3.2 測試結(jié)果
經(jīng)過測試系統(tǒng)達到設(shè)計需求。在 WiFi 網(wǎng)絡(luò)環(huán)境下,游 戲手柄能控制飛行器的飛行,并能在空中完成懸停、旋轉(zhuǎn)、起伏、 跌落、翻轉(zhuǎn)等動作。飛行器具有拋出之后保持平衡懸停,連 續(xù)飛行時間達到 10min 左右,載重輕量物體等性能。圖 5 為 飛行器實物圖。圖 6 為客戶端調(diào)試運行示意圖。
3.3 結(jié)果分析
本系統(tǒng)最終能夠通過遙控手柄控制四旋翼飛行,達到預(yù) 期的目的。但是本系統(tǒng)還存在以下幾個問題 :手柄控制飛行器 穩(wěn)定性較差,由于手柄自身按鍵原因和數(shù)據(jù)處理的誤差因素, 致使不能精確地映射出遙控器的所有行程 ;手柄靈活性也次 于遙控器,從而使得手柄的控制精準(zhǔn)度低于遙控器 ;KK 飛控 板相對簡單,易操作,但其對飛行器姿態(tài)控制要求較低,自 穩(wěn)能力差;無線網(wǎng)絡(luò)覆蓋范圍小,造成控制范圍小,易于失控。
由于本系統(tǒng)存在上述幾個問題,所以后期將對本系統(tǒng)做 進一步的更改。首先,將搖桿手柄換成標(biāo)準(zhǔn)的遙控器或進一 步優(yōu)化手柄控制算法,使其控制更加準(zhǔn)確靈活。其次,可以 使用性能更好的飛控板,提高飛行器的自我調(diào)節(jié)能力。另外, 建立無線局域網(wǎng),擴大飛行器的飛行范圍。
4 結(jié) 語
本次設(shè)計采用模塊化的硬件和軟件設(shè)計方法,成功實現(xiàn) 了使用搖桿手柄,通過網(wǎng)絡(luò)傳遞控制信息來控制飛行器的飛 行,實現(xiàn)了預(yù)期的功能。
本設(shè)計的創(chuàng)新點具有以下幾點 :
(1)通過搖桿手柄替代標(biāo)準(zhǔn)的遙控器,操作簡單,并且 大大降低了開發(fā)成本。
(2)采用無線網(wǎng)絡(luò)通信協(xié)議來完成遙控信息的傳遞,成 功將物聯(lián)網(wǎng)技術(shù)運用到本課題中。
(3)將嵌入式 Linux 操作系統(tǒng)運用到飛行器上,可以在 其中添加其它應(yīng)用,比如加載攝像頭用于航拍等。