【導(dǎo)讀】AOA協(xié)議是Android平臺下通過USB總線與Android配件相互通信的協(xié)議,這種協(xié)議在設(shè)備控制和數(shù)據(jù)采集領(lǐng)域發(fā)揮了極其重要的作用。本文就提出了基于Android開放配件AOA協(xié)議,實現(xiàn)PWM信號控制系統(tǒng)的設(shè)計。
系統(tǒng)基于Android開放配件協(xié)議,通過操作Android手機界面控制PWM 信號的周期和占空比。首先介紹了系統(tǒng)構(gòu)成,然后給出了Android終端軟件的具體實現(xiàn),最后以驅(qū)動舵機為例進行系統(tǒng)測試。系統(tǒng)實現(xiàn)了Android手機產(chǎn)生參數(shù)可控的PWM信號。
PWM(Pulse width Modulation,脈沖寬度調(diào)制)是一種調(diào)壓技術(shù)也是一種變頻技術(shù),由于其具有經(jīng)濟、節(jié)約空間、抗噪性能強等優(yōu)點 ,已廣泛應(yīng)用于測量、通信、功率控制與變換等領(lǐng)域中。目前,嵌入式PWM 控制應(yīng)用廣泛采用單片機,如簡單應(yīng)用可選用PIC、AVR等系列單片機,比較復(fù)雜的應(yīng)用可選用DSP,要求更高的可以選用ARM等。但是,PWM 控制應(yīng)用中選用Android智能手機還未見相關(guān)實例。
Android是一種全新的開源手機操作系統(tǒng),具有強大的應(yīng)用層API和傳感器功能,廣泛應(yīng)用于手機、平板電腦等移動設(shè)備中。Android智能手機具有優(yōu)越的用戶交互性、接口資源開放性、移動性以及便攜性等特點,隨著其處理速度、存儲容量、穩(wěn)定性、網(wǎng)絡(luò)訪問能力等性能的逐漸提高,Android智能終端與工業(yè)應(yīng)用的結(jié)合將會得到很大發(fā)展。2011年Google推出Android開放配件協(xié)議(Android Open Accessory Protocol,AOA,Protoco1)及配件開發(fā)工具包(Accessory Development Kit,ADK),提供了Android設(shè)備與Android配件通過USB或藍牙進行通信的API,進一步拓寬了Android終端的應(yīng)用范圍?;谝陨蠗l件,本文介紹了一種基于AOA協(xié)議,通過Android手機USB控制Android配件生成PWM信號的系統(tǒng)。
1 AOA協(xié)議
AOA協(xié)議用于Android配件通過USB或藍牙與Android終端進行通信?;贏OA協(xié)議實現(xiàn)Android終端USB通信方式稱為配件模式。此模式下,與Android終端通信的另一端設(shè)備稱為Android配件,兩者都必須支持AOA協(xié)議。在USB通信過程中,Android終端充當USB從機,Android配件充當USB 主機并為總線供電。Android配件需具有USB主控制器功能并移植有AOA 協(xié)議。ADK開發(fā)板是常見的Android配件。采用ADK 開發(fā)板的Android配件模式示意如圖1所示.
圖1 Android配件模式
AOA協(xié)議基于USB協(xié)議,它規(guī)定了配件如何檢測、枚舉Android設(shè)備,并與設(shè)備建立通信的方法。AOA協(xié)議的工作流程如圖2所示。
圖2 AOA協(xié)議工作流程
2 系統(tǒng)設(shè)計與實現(xiàn)
2.1 系統(tǒng)設(shè)計
系統(tǒng)以Android手機控制Android配件(ADK 開發(fā)板)產(chǎn)生等脈寬PWM,并控制一舵機為例,采用的Android配件為英國飛特蒂亞公司(FTDI)公司生產(chǎn)的Android平臺USB主控模塊UMFT311EV。在該模塊的核心芯片內(nèi)集成了USB協(xié)議和AOA協(xié)議,并支持4路PWM。系統(tǒng)框圖如圖3所示。
2.2 軟件開發(fā)
本系統(tǒng)采用的UMFT311EV 開發(fā)板由于集成了AOA 協(xié)議,因此無需開發(fā)Android配件端的程序。此外,F(xiàn)TDI公司針對UMFT311EV 為Android終端程序開發(fā)提供了底層API?;赨MFT311EV 的Android手機端PWM 控制程序結(jié)構(gòu)如圖4所示。
圖3 系統(tǒng)框圖
圖4 程序結(jié)構(gòu)
在圖4所示的結(jié)構(gòu)中,PWM 驅(qū)動層為FTDI公司提供的與UMFT311EV開發(fā)板通信的方法集合,PWM 驅(qū)動層通過如表1所列的兩個類與開發(fā)板進行USB通信。① 配置Android Mainfest文件,設(shè)置Android USB配件模式。設(shè)定 元素及android.hardware.usb.a(chǎn)ccessory屬性值,聲明使用USB配件API;設(shè)置最小SDK版本為12(Android從該版本后支持USB配件模式);增加元素,并指定android.hardware.Usb.action.USB_ACCESSORY_ATTACHED意圖,用于當USB配件連接后向用戶發(fā)出提示。增加元素并使其指向一個外部的XML資源文件accessory_filter.xml,該文件用于聲明希望Android設(shè)備檢測的USB配件的描述信息。
② 配置accessory_filter.xml文件。增加元素,并指定manufacturer、model、version三個屬性。在Android配件的固件程序中,同樣包含以上三個屬性值。根據(jù)AOA協(xié)議,當Android配件連接到Android設(shè)備上時,配件會發(fā)送該屬性值到Android設(shè)備。Android程序?qū)⑽ㄒ豁憫?yīng)與其accessory_filter.xml中指定的屬性值匹配的Android配件。
本系統(tǒng)的accessory_filter.xml的配置如下:
< usb—accessory model=”FTDIPWMDemo”
Manufacturer=”FTDI”
version= ”1.0”/>
Android手機端程序流程如圖5所示。
圖5 程序流程
3 系統(tǒng)測試及結(jié)果
本系統(tǒng)的測試場景如圖6所示。
將ADK開發(fā)板通過USB數(shù)據(jù)線連接至Android手機上,此時,手機界面將彈出授權(quán)對話框,提示打開系統(tǒng)軟件。軟件界面如圖7所示。
點擊“輸出”按鈕,輸出PWM 信號。在輸出信號的過程中,可以通過滑動條動態(tài)調(diào)整PWM 信號的周期和占空比。經(jīng)過測試,本系統(tǒng)能夠?qū)崿F(xiàn)Android手機通過USB接口控制產(chǎn)生PWM 信號。由于實驗設(shè)備(Android手機和ADK開發(fā)板)的性能限制,本系統(tǒng)能夠?qū)崿F(xiàn)PWM 信號的參數(shù)調(diào)節(jié)范圍如表3所列。
圖6 測試場景
圖7 軟件界面
經(jīng)過在小米2手機上的反復(fù)測試,通過手機能夠產(chǎn)生的PWM信號周期范圍為1~250 ms,占空比范圍為5%~95%,系統(tǒng)總體延遲小于5 ms。系統(tǒng)實現(xiàn)了通過Android手機USB控制Android配件生成參數(shù)可控PWM信號的功能,并且可以通過操作Android手機界面實現(xiàn)動態(tài)調(diào)節(jié)PWM信號。項目組正開發(fā)多種PWM信號的控制系統(tǒng),并在深入研究和探討本系統(tǒng)與工業(yè)應(yīng)用的結(jié)合。相關(guān)閱讀:
有PWM占空比,分分鐘搞定LED亮度線性變化
新手進階:幾種由占空比與PWM結(jié)合的簡單電路
學(xué)習(xí):5種開關(guān)電源PWM的反饋控制設(shè)計