摘要:本文介紹了一種以“安卓智能手機”和“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)生活成為各大手機制造商的共同目標。目前安裝有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ā)展相當迅速,如今Wi—Fi技術(shù)已經(jī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手機模塊主要完成基于安卓平臺下的應用程序的編寫及控制界面的生成,其作為客戶端,能夠被用戶控制,是人機信息交換平臺;Uart-wifi模塊主要進行無線通信,接收手機發(fā)出來的信號并將MSP430F149單片機返回的信號發(fā)送給手機;單片機模塊作為主控單元主要完成串口通信,并通過識別Wi—Fi模塊傳來的信號對執(zhí)行部件做出相應控制;電源及驅(qū)動模塊主要完成對各個硬件模塊的供電和穩(wěn)壓。這四大模塊相互配合構(gòu)成一個完整的系統(tǒng),各個模塊間的聯(lián)系都非常緊密,缺一不可,每一模塊必須正常運行,才能保證整個系統(tǒng)準確高效運轉(zhuǎn)。
2 安卓手機模塊
首先介紹一下安卓平臺和socket通信原理。
Android是以Linux為核心的開放式手機操作平臺,系統(tǒng)架構(gòu)和其它操作系統(tǒng)一樣,采用了分層的架構(gòu)。從架構(gòu)圖看,Android分為四個層,從高層到低層分別是應用程序?qū)?、應用程序框架層、系統(tǒng)運行庫層和Linux核心層。目前Android已經(jīng)允許開發(fā)者使用多種編程語言來開發(fā)Android應用程序,而不再是以前只能使用Java開發(fā)Android應用程序的單一局而,因而受到眾多開發(fā)者的歡迎,成為真正意義上的開放式操作系統(tǒng),被大多數(shù)的開發(fā)者視為最有潛力的手機操作系統(tǒng)。
Socket簡稱套接字,用于實現(xiàn)網(wǎng)絡(luò)上客戶和服務(wù)器之間的連接,也就是說網(wǎng)絡(luò)上兩個或兩個以上雙工方式通信的進程之間總有一個連接,這個連接的端點稱為套接字(見圖2)。套接字相當于由其名字連接起來的通信線路的端點,這種連接不僅適用于本地進程之間的通信,而且也適用于異地進程之間的通信。用套接字連接的兩個進程可雙向通信,且兩通信端點的工作方式是不同的,一端工作于服務(wù)方,另一端工作于客戶方。
手機模塊作為客戶端,主要完成人機信息的交換、控制命令的發(fā)出以及返回信息的接收。首先在安卓平臺的應用層編寫上位機程序,創(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ò)包括兩種類型的拓撲形式,基礎(chǔ)網(wǎng)(Infra)和自組網(wǎng)(Adhoc)。要說明無線網(wǎng)絡(luò)的拓撲形式,需要首先了解兩個基本概念:
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,當手機發(fā)出控制命令后,每一條機器魚(即每一個STA)都會接收到這個控制命令,從而做出相應的動作實現(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ò)標準的嵌入式模塊,內(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ò)。當Uart-Wifi模塊接收到網(wǎng)絡(luò)上傳輸過來的數(shù)據(jù)幀時它會將這些數(shù)據(jù)從幀格式轉(zhuǎn)換成流格式,這是比較容易的,也是大多數(shù)普通Wi—Fi模塊都能夠?qū)崿F(xiàn)的,但當模塊從串口接收單片機返回的數(shù)據(jù)即接收到流格式數(shù)據(jù)要將其轉(zhuǎn)換成幀格式發(fā)送出去時就比較困難了,它需要一定的規(guī)則進行約束。而Uart-Wifi模塊使用“自動組幀長度”和“自動組幀周期”來進行約束,能夠輕易的將數(shù)據(jù)從流的形式轉(zhuǎn)換成幀的形式。因此應用Uart-wifi模塊作為中間模塊進行手機和單片機間的通信能夠輕易地解決數(shù)據(jù)類型轉(zhuǎn)換難的問題(見圖3)。
4 單片機模塊
本項目采用MSP430F149單片機作為魚體控制芯片,它是一種高性能、低功耗的16位控制器,廣泛應用于通訊控制設(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)的擬合,可以認為魚體波曲線是魚體波幅包絡(luò)線和正弦曲線的合成,它開始于魚體的慣性。根據(jù)魚體波原理我們編寫下位機程序讓單片機計算出各個關(guān)節(jié)的轉(zhuǎn)動角度,產(chǎn)生相應的控制信號控制舵機的運作,使三個舵機相互配合產(chǎn)生相應的魚體波,推動機器魚前進。主控芯片的流程如圖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所示)。應用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ā)展也相當成熟,如今已經(jīng)廣泛的應用于各個領(lǐng)域。本文應用這兩項先進技術(shù)提出了一種以安卓平臺下的智能手機和Wi—Fi技術(shù)為基礎(chǔ)的操控系統(tǒng),該系統(tǒng)成功控制機器魚正常運轉(zhuǎn),且控制效果良好,可以相信該操控系統(tǒng)在軍用、民用和其他領(lǐng)域都有廣闊的應用前景。我們對它的控制方法的研究只是一個開始,但已經(jīng)向前邁出了重要的一步,相信在不久的將來一定會有廣泛的發(fā)展。
雖然我們在這方面取得了一些成果,但由于經(jīng)驗,技術(shù)以及經(jīng)費等各方面的原因,我們的研究還有許多計劃沒有實現(xiàn)(例如:我們希望在機器魚上安裝傳感設(shè)備和自動控制設(shè)備,使機器魚具有自動控制能力,希望通過手機聯(lián)網(wǎng)實現(xiàn)實時遠程控制),而且目前的研究成果也存在許多不太理想的地方,希望在下次設(shè)計中得以改進和完善。