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