摘要:本文介紹了一種以“安卓智能手機”和“802.11b技術(shù)”為基礎(chǔ)的新型機器魚操控系統(tǒng)。該系統(tǒng)以安卓平臺下的智能手機為操作平臺,通過對手機端編寫socket程序與802.11b模塊建立無線通訊連接,經(jīng)Wi—Fi轉(zhuǎn)串口模塊轉(zhuǎn)碼后將手機發(fā)出的控制指令傳送給單片機,單片機在接收到控制指令后通過編程產(chǎn)生PWM波實現(xiàn)對舵機的控制,從而實現(xiàn)對機器魚的操控。
關(guān)鍵詞:安卓手機;802.11b;socket;430單片機;機器魚
隨著科技的進步與技術(shù)的發(fā)展,手機已成為生活中不可或缺的一部分。增強手機功能方便人們的生產(chǎn)生活成為各大手機制造商的共同目標(biāo)。目前安裝有Android (安卓系統(tǒng))的手機越來越受到消費者的喜愛,調(diào)查顯示Android占據(jù)全球智能手機操作系統(tǒng)市場52.5%的份額,中國市場占有率為68.4%,安卓平臺下的智能手機已經(jīng)超越塞班成為全球最具影響力的手機操作平臺之一。
802.11b(即Wi—Fi技術(shù))是一種可以將個人電腦、手持設(shè)備(如PDA、手機)等終端以無線方式互相連接的技術(shù),它具有傳輸速度快、傳輸距離遠、網(wǎng)絡(luò)穩(wěn)定性和可靠性高、方便與以太網(wǎng)整合和組網(wǎng)成本低等特點?;谶@些特點Wi—Fi技術(shù)發(fā)展相當(dāng)迅速,如今Wi—Fi技術(shù)已經(jīng)相當(dāng)成熟并且廣泛應(yīng)用于手機電腦等終端設(shè)備。
以往機器魚都是用PC機來控制,但是靈活性差,且控制起來不方便,我們用安卓手機與Wi—Fi技術(shù)相結(jié)合的方法來控制機器魚,其靈活性得到了大大增強。隨著機器魚技術(shù)的深入發(fā)展,多魚協(xié)調(diào)操作會慢慢成為研究的熱點,而日益成熟的Wi—Fi技術(shù)可以實現(xiàn)一點對多點的控制,并且Wi—Fi技術(shù)也有功耗低、傳輸速度快等優(yōu)點,可以實現(xiàn)多魚協(xié)調(diào)操作。
1 系統(tǒng)總體架構(gòu)
系統(tǒng)的主體分為四大模塊,嵌有安卓操作系統(tǒng)的手機模塊、Uart-wifi模塊、單片機模塊和電源及驅(qū)動模塊。系統(tǒng)的總體構(gòu)架如圖1所示。
Android手機模塊主要完成基于安卓平臺下的應(yīng)用程序的編寫及控制界面的生成,其作為客戶端,能夠被用戶控制,是人機信息交換平臺;Uart-wifi模塊主要進行無線通信,接收手機發(fā)出來的信號并將MSP430F149單片機返回的信號發(fā)送給手機;單片機模塊作為主控單元主要完成串口通信,并通過識別Wi—Fi模塊傳來的信號對執(zhí)行部件做出相應(yīng)控制;電源及驅(qū)動模塊主要完成對各個硬件模塊的供電和穩(wěn)壓。這四大模塊相互配合構(gòu)成一個完整的系統(tǒng),各個模塊間的聯(lián)系都非常緊密,缺一不可,每一模塊必須正常運行,才能保證整個系統(tǒng)準(zhǔn)確高效運轉(zhuǎn)。
2 安卓手機模塊
首先介紹一下安卓平臺和socket通信原理。
Android是以Linux為核心的開放式手機操作平臺,系統(tǒng)架構(gòu)和其它操作系統(tǒng)一樣,采用了分層的架構(gòu)。從架構(gòu)圖看,Android分為四個層,從高層到低層分別是應(yīng)用程序?qū)印?yīng)用程序框架層、系統(tǒng)運行庫層和Linux核心層。目前Android已經(jīng)允許開發(fā)者使用多種編程語言來開發(fā)Android應(yīng)用程序,而不再是以前只能使用Java開發(fā)Android應(yīng)用程序的單一局而,因而受到眾多開發(fā)者的歡迎,成為真正意義上的開放式操作系統(tǒng),被大多數(shù)的開發(fā)者視為最有潛力的手機操作系統(tǒng)。
Socket簡稱套接字,用于實現(xiàn)網(wǎng)絡(luò)上客戶和服務(wù)器之間的連接,也就是說網(wǎng)絡(luò)上兩個或兩個以上雙工方式通信的進程之間總有一個連接,這個連接的端點稱為套接字(見圖2)。套接字相當(dāng)于由其名字連接起來的通信線路的端點,這種連接不僅適用于本地進程之間的通信,而且也適用于異地進程之間的通信。用套接字連接的兩個進程可雙向通信,且兩通信端點的工作方式是不同的,一端工作于服務(wù)方,另一端工作于客戶方。
手機模塊作為客戶端,主要完成人機信息的交換、控制命令的發(fā)出以及返回信息的接收。首先在安卓平臺的應(yīng)用層編寫上位機程序,創(chuàng)建操作界面,以實現(xiàn)人機信息的交換并把控制指令轉(zhuǎn)化為數(shù)據(jù)幀,然后Socket再把數(shù)據(jù)幀以數(shù)據(jù)流的形式傳送給傳輸層繼而傳送給網(wǎng)絡(luò)層和數(shù)據(jù)鏈路層,最后數(shù)據(jù)流傳送至物理層由手機Wi—Fi模塊發(fā)送出去,實現(xiàn)信息的發(fā)送。以下是socket通信的部分程序:
3 Wi—Fi模塊
Wi—Fi無線網(wǎng)絡(luò)包括兩種類型的拓?fù)湫问?,基礎(chǔ)網(wǎng)(Infra)和自組網(wǎng)(Adhoc)。要說明無線網(wǎng)絡(luò)的拓?fù)湫问剑枰紫攘私鈨蓚€基本概念:
AP:也就是無線接入點,是一個無線網(wǎng)絡(luò)的創(chuàng)建者,是網(wǎng)絡(luò)的中心節(jié)點。我們一般家庭或辦公室使用的無線路由器就一個AP。
STA:即站點,每一個連接到無線網(wǎng)絡(luò)中的終端(如筆記本電腦、PDA及其它可以聯(lián)網(wǎng)的用戶設(shè)備)都可稱之為一個站點。
Infra也稱為基礎(chǔ)網(wǎng),是由AP創(chuàng)建,眾多STA加入所組成的無線網(wǎng)絡(luò)。這種類型的網(wǎng)絡(luò)的特點是AP是整個網(wǎng)絡(luò)的中心,網(wǎng)絡(luò)中所有的通信都通過AP來轉(zhuǎn)發(fā)完成:Adhoc也稱為自組網(wǎng),是僅由兩個及兩個以上STA自己組成,網(wǎng)絡(luò)中不存在AP,這種類型的網(wǎng)絡(luò)是一種松散的結(jié)構(gòu),網(wǎng)絡(luò)中所有的STA都可以直接通信。
基于自組網(wǎng)中所有的STA都可以直接通信的特點,本文采用了自組網(wǎng)的形式建立手機與Uart-wifi模塊之間的通信。手機和所有裝有Uart—wifi模塊的機器魚都各自是一個STA,當(dāng)手機發(fā)出控制命令后,每一條機器魚(即每一個STA)都會接收到這個控制命令,從而做出相應(yīng)的動作實現(xiàn)對多魚的控制。
由于數(shù)據(jù)在網(wǎng)絡(luò)上是以數(shù)據(jù)幀的形式傳輸?shù)模诖谥惺且宰止?jié)流的形式傳輸?shù)?,我們要想把手機傳送的網(wǎng)絡(luò)數(shù)據(jù)通過串口傳送給單片機就要先進行數(shù)據(jù)類型的轉(zhuǎn)換。所以我們采用了嵌入式Uart-Wifi模塊。Uart-wifi模塊是基與Uart接口的符合Wi—Fi無線網(wǎng)絡(luò)標(biāo)準(zhǔn)的嵌入式模塊,內(nèi)置無線網(wǎng)絡(luò)協(xié)議IEEE802.11協(xié)議棧以及TCP/IP協(xié)議棧,能夠?qū)崿F(xiàn)用戶串口數(shù)據(jù)到無線網(wǎng)絡(luò)之間的轉(zhuǎn)換。通過Uart-Wifi模塊,傳統(tǒng)的串口設(shè)備也能輕松接入無線網(wǎng)絡(luò)。當(dāng)Uart-Wifi模塊接收到網(wǎng)絡(luò)上傳輸過來的數(shù)據(jù)幀時它會將這些數(shù)據(jù)從幀格式轉(zhuǎn)換成流格式,這是比較容易的,也是大多數(shù)普通Wi—Fi模塊都能夠?qū)崿F(xiàn)的,但當(dāng)模塊從串口接收單片機返回的數(shù)據(jù)即接收到流格式數(shù)據(jù)要將其轉(zhuǎn)換成幀格式發(fā)送出去時就比較困難了,它需要一定的規(guī)則進行約束。而Uart-Wifi模塊使用“自動組幀長度”和“自動組幀周期”來進行約束,能夠輕易的將數(shù)據(jù)從流的形式轉(zhuǎn)換成幀的形式。因此應(yīng)用Uart-wifi模塊作為中間模塊進行手機和單片機間的通信能夠輕易地解決數(shù)據(jù)類型轉(zhuǎn)換難的問題(見圖3)。
4 單片機模塊
本項目采用MSP430F149單片機作為魚體控制芯片,它是一種高性能、低功耗的16位控制器,廣泛應(yīng)用于通訊控制設(shè)備中。作為控制芯片,MSP430F149單片機顯著特點是高效、低耗。它的數(shù)據(jù)處理能力非常強大,雖然尋址方式廣泛(7種源操作數(shù),4種目的操作數(shù)),但只需要簡潔的27條指令即可完成,而且耗電量非常少,能夠有效延長機器魚下水的時間,非常適合做機器魚控制芯片。
MSP430F149單片機作為“魚體”的主控MCU,主要用來接收米自Uart-Wifi模塊的數(shù)據(jù)流和控制機器魚舵機的運轉(zhuǎn)。我們用的機器魚為三關(guān)節(jié)桿系機器魚,這種利用桿系結(jié)構(gòu)來模擬真魚的運動的操作比較簡單,只需要頭尾部的配重和魚尾各個關(guān)節(jié)轉(zhuǎn)動的角度即可。
機器魚的動力來自舵機部分,三關(guān)節(jié)機器魚有三個舵機,每個舵機由十五位的不同占空比的PWM波控制轉(zhuǎn)動不同的角度,繼而控制“魚體”擺動形成魚體波。魚體波是利用桿系機器魚對真實魚游動形態(tài)的擬合,可以認(rèn)為魚體波曲線是魚體波幅包絡(luò)線和正弦曲線的合成,它開始于魚體的慣性。根據(jù)魚體波原理我們編寫下位機程序讓單片機計算出各個關(guān)節(jié)的轉(zhuǎn)動角度,產(chǎn)生相應(yīng)的控制信號控制舵機的運作,使三個舵機相互配合產(chǎn)生相應(yīng)的魚體波,推動機器魚前進。主控芯片的流程如圖4所示。
5 電源及驅(qū)動模塊
電源模塊主要分為供電電源和穩(wěn)壓模塊,供電電源主要為機器魚的硬件部分提供電能,穩(wěn)壓模塊主要完成對各硬件模塊進行供電和穩(wěn)壓。
對于此項目穩(wěn)壓模塊主要完成3.3V和5V穩(wěn)壓。我們采用7805穩(wěn)壓器組成的輸出5V的電源電路完成5V穩(wěn)壓;采用M5237L外接晶體管VT1構(gòu)成的輸出1A/3.3V穩(wěn)壓電源電路完成3.3V穩(wěn)壓。其各部分穩(wěn)壓需求如圖5所示。
7805穩(wěn)壓器是一個輸出正5V直流電壓的穩(wěn)壓電源電路(穩(wěn)壓電路如圖6所示)。它具有使用方便、價格低廉、穩(wěn)壓精度高等特點,其輸出的電壓基本保持不變。選用它作為機器魚舵機的穩(wěn)壓電路能夠有效保證電壓的穩(wěn)定,為舵機提供穩(wěn)定的工作環(huán)境。M5237L是日本三菱公司生產(chǎn)的輸出電壓可變型穩(wěn)壓器驅(qū)動電路,通過與外接PNP型三極管的組合,可以構(gòu)成輸入輸出壓差小的三端穩(wěn)壓電路,其輸出電壓可在1.5—36V之間任意調(diào)節(jié),輸出電流可通過選擇不同的外接三極管來文現(xiàn)(穩(wěn)壓電路如圖7所示)。應(yīng)用M5237L來為Wi—Fi模塊穩(wěn)壓,極大的提高了供電電池和Wi—Fi模塊的工作效率,為整個系統(tǒng)的正常運轉(zhuǎn)提供了保障。
6 結(jié)束語
如今安卓智能手機和Wi—Fi都已非常普遍,甚至美國聯(lián)邦政府總務(wù)署都采購Android手機供政府人員使用,Android平臺已經(jīng)成為最具影響力的操作平臺之一。Wi—Fi技術(shù)的發(fā)展也相當(dāng)成熟,如今已經(jīng)廣泛的應(yīng)用于各個領(lǐng)域。本文應(yīng)用這兩項先進技術(shù)提出了一種以安卓平臺下的智能手機和Wi—Fi技術(shù)為基礎(chǔ)的操控系統(tǒng),該系統(tǒng)成功控制機器魚正常運轉(zhuǎn),且控制效果良好,可以相信該操控系統(tǒng)在軍用、民用和其他領(lǐng)域都有廣闊的應(yīng)用前景。我們對它的控制方法的研究只是一個開始,但已經(jīng)向前邁出了重要的一步,相信在不久的將來一定會有廣泛的發(fā)展。
雖然我們在這方面取得了一些成果,但由于經(jīng)驗,技術(shù)以及經(jīng)費等各方面的原因,我們的研究還有許多計劃沒有實現(xiàn)(例如:我們希望在機器魚上安裝傳感設(shè)備和自動控制設(shè)備,使機器魚具有自動控制能力,希望通過手機聯(lián)網(wǎng)實現(xiàn)實時遠程控制),而且目前的研究成果也存在許多不太理想的地方,希望在下次設(shè)計中得以改進和完善。