Untitled Document

RS Components 為您呈遞最新的工程資訊

還不是
RS Components
的用戶?

立即註冊,可收到最新的產品、
技術和推廣資訊。

Android 開關介面

作者: Jos van Kempen

低成本的安卓(Android)手機,為實現微控制器電路的高端用户介面或遙控器打下了良好的基礎。本文將介紹如何通過帶藍牙擴展板的Arduino板實現各種無線感應和開關功能。

所有旨在執行控制功能的微控制器電路,幾乎都具有某種形式的用户介面。此類形式通常涉及若干按鈕、旋鈕、LED和LCD模組。如果想獲得較好的效果,您甚至可以使用觸感屏幕。此外,遙控器使用起來也很便利——尤其是在那些對精度要求不高的場合。然而,這種“奢華”的介面通常花費更多且更難實現。當然事情也不是絕對的,正如下文所講,帶遙控器、具有吸引力的用户介面不一定昂貴,且程式設計相當容易。手裡隨便一台帶藍牙功能的智慧手機,都可用做很好的遙控裝置。部分微控制器板已內置了藍牙功能,如您使用其它微控制器板,也可另購適配器或擴展板來添置此功能。在本文中,我們使用的是帶藍牙擴展板的小型小型Arduino板(ITead,售價約為15英鎊),該板添置了一塊專為本文設計的小型輸入/輸出擴展板。

硬體和微控制器軟體

藍牙扩展板安裝在Arduino板上。它通過UART介面通信。在Bascom中,您可以使用“input”和“print”指令接收來自Arduino板的命令,並將資料發送到Arduino板。

針對此專案,我們還開發了一個簡單的擴展板,其包括一對LED的繼電器(數字輸出),一個帶FET的PWM輸出(“模擬”輸出)、一個開關(數字輸入)和一個作為模擬傳感器(模擬輸入)的NTC熱敏電阻。其原理圖如圖1所示,為此電路設計的印刷電路板佈局如圖2所示。Android智慧手機與使用藍牙的Arduino板之間的所有通信選項,均可通過該擴展板進行實驗。連接器K9上提供所有繼電器、開關和傳感器線路。

元件列表
電阻器 RS庫存序號
R1,R2,R3 = 560Ω 707-7644
R4 = 100Ω 707-7587
R5,R6 = 4.7Ω 707-7489
R7 = 10kΩ 707-7745
R8,R9 = 1kΩ 707-7666
半導體 RS庫存序號
D1,D2 = 1N4148 670-8858
LED1 = LED, 綠色, 5mm 255-8472
LED2 = LED, 紅色, 5mm 826-802
LED3 = LED, 黃色, 5mm 255-8450
T1,T2= BC547C 545-2248
T3 = BS170 671-4736
其它 RS庫存序號
K3,K4 = 8針管座 668-9533
K5,K6 = 6路管座插座 668-9769
K7,K8 = 8路管座插座 668-9772
K9 = 10路管座插座 668-9779
RE1,RE2 = 5V 微型繼電器(例如TE的MT2-C93401型號或歐姆龍的G5V-2-H1型號) 619-2981
237-5328
S1 = 帶接通觸點的按鈕(例如B3F-1000) 686-6847
PCB # 120075-1 (參見[1])


圖1: 輸入/輸出擴展板原理圖,包括一對LED和繼電器、一個NTC熱敏電阻、一個按鈕以及一路具有FET和LED指示燈的PWM輸出。


圖2: 印刷佈局的設計旨在匹配連接器與Arduino標準板。

用Bascom編寫的微控制器軟體工作原理如下: 是否已收到字元的一個循環檢測。如果Arduino收到“R”,將啟動輸出D11(LED1燈亮起且繼電器RE1通電)。如果它收到“r”,則LED1和RE1斷電。輸出D13、第二個LED和繼電器的行為方式類似,但它回應字元“O”和“o”。如果收到“P”(“PWM”的簡稱),則例行程式“Input”等待一個值(智慧手機必須在發送值之後再發送字串“\r\n”),該值用於驅動PWM輸出。FET T3具有60 V/0.5 A最大額定值。LED3可指示PWM電平。 NTC熱敏電阻感測器的測量值也使用“t;adc(0);t”格式印刷,如果是高電平(“1”),按鈕S1連接的輸入D7的信號電平印刷為“G”;如果是低電平(“0”),則印刷為“g”。其介面配置為9600波特標準資料速率,即發送值之後有必要等待片刻(約30至40ms)。

所需軟體

Android智慧手機編寫應用程式所需的以下軟體,可免費下載:

  1. Java語言用於程式設計。您可從Oracle網站[2]下載Java開發套件(JDK)。
  2. [3]上提供Android軟體發展包(SDK)。
  3. 可從同一網站下載Eclipse的ADT外掛程式,須注意下載時進入的文件夹。
  4. 我們使用了Eclipse Classic 3.6.2作為整合式開發環境(IDE),可從[4]下載。(注意:本文寫作時,最新Andriod外掛程式為ADT12,與Eclipse 3.7不相容。)
  5. 安裝Eclipse後,必須安裝Android外掛程式(在“幫助 | 安裝新軟體 | 存檔”下面)。選擇ADT zip檔並輸入名稱“Android”。然後轉至“Windows | 首選項”,查找包含精選Android SDK的文件夹(在下級文件夾中,包括“Tools”)。轉至“Windows | Android SDK 和AVD管理器”,選擇“新建”(虛擬裝置),為2.3.3版本選擇Fingerbread(或Samsung GIO及類似名稱),這樣如果必要,在沒有智慧手機時可在PC上模擬該程式。
  6. 從[1]下載包含藍牙介面示例專案的文件夹,但不要將它放在Eclipse工作空間中。

藍牙介面專案

允許藍牙設備查找其他藍牙設備、建立聯繫並交換資訊的軟體很複雜,幸運的是Android SDK隨附了一個實例。可惜它似乎無法與許多藍牙設備一起正常工作。其中一個檔(BluetoothRfcommClient.java)的替換檔,可以在互聯網上找到。在修改了聲明之後,這一問題迎刃而解(參見[5]和[6])。現在,您可以使用該專案製作自己的介面。在啟動Eclipse之後,您可以選擇“檔 | 新建 |Android項目|”以創建新專案(可基於實例創建),但在此情況下您已有了待導入Eclipse工作空間的專案。為此,請選擇”File | Import.. | Existing Projects in Workspace” (檔 | 導入…| 工作空間中的現有專案)。一定要勾選“Copy projects into workspace”(將專案複製到工作空間),否則原來的專案將被覆蓋。瀏覽放置下載BluetoothInterface項目的文件夹。 在專案檔案結構中可看到各種.java和.Xml文件(圖3)。您可能必須點擊相關文件夹才能看到它們,我們感興趣的檔是BluetoothChat.java(主程序)、main.xml(智慧手機屏幕介面)和strings.xml(介面中使用的變數聲明)。


圖3: 藍牙介面專案的文檔結構。

介面实现

按兩下main.xml以顯示智慧手機屏幕介面(見圖4)。屏幕佈局下的選項卡可用於在圖形佈局與自動生成的代碼之間切換。


圖4: 介面屏幕佈局。通常最容易將控制項放在“Outline”窗格中。

在下載和測試應用程式之後,按一下左下角的菜单按鈕,選擇所需的藍牙設備並建立連接(選擇“連接至設備 - 安全”)。如果一切順利,您將看到“正在連接”消息,稍後將顯示“已連接:<設備名稱>”消息。

現在,您應能夠按自己的喜好開始調整介面。Elektor網站上可供下載的內容包括一套完整的應用程式文檔(.apk)。您可以將該應用程式文檔直接下載到自己的智慧手機上,並在安裝之後試用本文描述的所有功能。

[1]www.elektor.com/120075
[2]http://www.oracle.com/technetwork/java/javase/downloads/
[3]http://developer.android.com/sdk/index.html
[4]http://www.eclipse.org/downloads/
[5]http://projectproto.blogspot.com/2010/09/android-bluetooth-oscilloscope.html
[6]http://code.google.com/p/android-bluetooth-oscilloscope/

瀏覽更多工程文章,請瀏覽 www.designspark.com, 是一個平台提供網上資源及設計支援給工程師,由RS提供。

回到頁首