Untitled Document

RSからの技術記事とお知らせ

RSのご利用は初め
てですか?

RSオンラインにご登録いただくとRSより最新の製品及び技術情報をお届けします。

ANDROIDスイッチインターフェース

Jos van Kempen氏

低コストのAndroidフォンは、ハイエンドユーザインターフ ェイス又はマイクロコントローラ回路のリモートコントロール の優れたベースとなります。 この記事では、Bluetoothシ ールド付きのArduinoボードを使用して、さまざまなワイヤ レスセンシング機能とスイッチング機能を実装する方法に ついて説明します。

何らかの制御を行うことを意図したほとんどすべてのマイクロコントローラ回路 は、ユーザインターフェイスのフォームを持っています。 これには、いくつか のボタンやノブ、LED、LCDモジュールなどがあります。 本当に洗練され た方法で何かを実行するには、タッチスクリーンを使用する場合も あります。 リモートコントロールは、ハンディで、できれば正確さ に重点を置く必要がないものであることが望ましいでしょう。 ただし、このタイプの「豪華な」インターフェイスは通常コスト が高く、実装するのが困難になります。 このようなことは避 けなければなりません。 知っての通り、魅力的なリモートコ ントロールのユーザインターフェイスは、高価なもので ある必要はなく、プログラミングが簡単である必要も ありません。 Bluetooth機能を持つスマートフォン があれば、優れたリモートコントロールユニットとし て使用するいいチャンスです。 マイクロコントロー ラボードによってはBluetooth機能が内蔵されて いるものがあり、アダプタ又はシールドを購入し てこの機能を追加するものもあります。 この記 事では、この記事用に設計された小さなI/Oシ ールドを追加した、Bluetoothシールドを持つ 小型のArduinoボード(ITead、15ポンド前 後)を使用します。

ハードウェアとマイクロコントローラソフトウェア

BluetoothシールドはArduinoボードに フィットします。 UARTインターフェイス で通信を行います。 Bascomでは、「入 力」と「印刷」命令を使用して、コマンド を受信し、データをArduinoボードから 送信することができます。

このプロジェクト用に、LED(デジタル出力)付きリレーのペアと、PWM出力 とFET (「アナログ」出力)、スイッチ(デジタル入力)、アナログセンサ(アナロ グ入力)としてのNTCサーミスタを備えたシンプルなシールドを開発しまし た。 図1はその回路図です。この回路のために設計したPCBレイアウトは図 2にあります。 このシールドは、Bluetoothを使用した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 Connectivityタイプの MT2-C93401又はOMRON タイプのG5V-2-H1など) 619-2981
237-5328
S1 = コンタクト用プッシュボ タン(B3F-1000など) 686-6847
PCB # 120075-1 ([1]を参照)


図 1. I/Oシールドの回路図は、LEDとリレーのペア、NTCサーミスタ、プッシュ ボタン、FETとインジケータLEDを備えたPWM出力で構成されています。


図 2. 印刷レイアウ トは、コネクタが 標準のArduino ボードと組み合わ された状態です。

マイクロコントローラソフトウェア(Bascomが作成)は、次の動作を実行しま す。 文字が受信されたかどうかのループチェックを行います。 Arduino が「R」を受信した場合は、D11が作動します(LED1が 点灯し、リレーRE1が通電します)。 「r」を受信した場合 は、LED1とRE1の通電が解除されます。 出力D13と2番 めのLEDとリレーは同様に動作しますが、文字「O」と「o」 に反応します。 「P」(「PWM」の短縮形’)を受信した場合 は、ルーチン「Input」が値を待ちます(スマートフォンは値 の後に文字列「\r\n」を送信する必要があります)。この値は PWM出力の駆動に使用されます。 FET T3の最大定格は 60 V/0.5 Aです。 LED3はPWMレベルを示します。 NTCサーミスタセンサR9の測定値は「T;adc(0);t」のフォ ーマットで印刷され、プッシュボタンS1が接続されている入 力D7の信号レベルが高(「1」)の場合には「G」が、低(「0」) の場合には「g」が印刷されます。 インターフェイスは標準デ ータレートの9600 ボーで設定されており、これは値の送信 後の待ち時間が短い(約30~40 ms)必要があることを意味 します。

必要なソフトウェア

Androidスマートフォンのアプリケーションをプログラムする のに必要な次のソフトウェアは、無料でダウンロードできます。

  1. プログラミングにはJava言語が使用されます。 Java開発 キット(JDK)はOracleのWebサイトからダウンロードでき ます[2]。
  2. Androidソフトウェア開発キット(SDK)は[3]で入手可能です。
  3. EclipseのADTプラグインは同じサイトからダウンロード可能 です。フォルダを覚えておいてください。
  4. Eclipse Classic 3.6.2を統合開発環境(IDE)として使用し ます。 からダウンロードできます[4]。 (注: 執筆時点の最新の AndroidプラグインはADT12で、Eclipse 3.7と互換性が あります。)
  5. Eclipseをインストールしたら、Androidプラグインを インストールする必要があります(Help | Install new software | Archive の下)。 ADT zipファイルを 選択して、名前として「Android」を入力します。 次に Windows | Preferencesに移動して、抽出された Android SDKを検索します(「Tools」などの下位フォルダ)。 Go to Windows | Android SDK and AVD Managerに 移動して、New (Virtual Device)を選択し、バージョン2.3.3 のGingerbread (又はSamsung_GIO、又は同等のもの)を 選択して、必要に応じてスマートフォンなしでもPC上でプログラ ムをシミュレートできるようにします。
  6. Bluetoothインターフェイスサンプルプロジェクトを含むフォルダ を[1]からダウンロードします。ただし、それをEclipseワークスペ ースには置きません。

Bluetoothインターフェイスプロジェクト

Bluetoothデバイスが他のBluetoothデバイス を探してコンタクトを確立し、メッセージを交換で きるようにするソフトウェアは複雑なものになりま すが、幸いなことに、サンプルがAndroid SDK に含まれています。 しかし残念ながら、それは多く のBluetoothデバイスで正しく機能しません。 交 換ファイルの1つ(BluetoothRfcommClient. java)がインターネット上にあります。 宣言を修 正したら、この問題が解決されます([5]と[6]を 参照してください)。 これで、プロジェクトを使用 して独自のインターフェイスを作成できるように なりました。Eclipseを起動したら、File | New |Android project |を選択して、新しいプロジ ェクトを作成します(おそらくサンプルに基づい て)。ただし、このケースではEclipseワークス ペースにインポートするプロジェクトがすでにあ ります。 インポートするには、File | Import.. | Existing Projects in Workspaceを選択し ます。 必ずCopy projects into workspace をチェックしてください。そうでないと元のプロ ジェクトが上書きされます。 ダウンロードした BluetoothInterfaceプロジェクトに配置したフ ォルダを参照します。

プロジェクトファイル構造には、さまざまな.java 及び.xmlファイルがあります(図3)。 関連するフォ ルダを表示するには、それをクリックする必要があ ります。 興味を引くのはBluetoothChat.java (メインプログラム)、main.xml (スマートフォンス クリーンインターフェイス)、strings.xml (インタ ーフェイスで使用する変数の宣言)です。


図 3. Bluetoothインターフェイスプロジェク トのファイル構造

インターフェイスの実装

main.xmlをダブルクリックして、スマートフォンス クリーンインターフェイスを表示します(図4を参照 してください)。 画面レイアウト下のタブを使用し て、グラフィカルレイアウトを切り替え、自動的にコ ードを生成することができます。


図 4. インターフェイススクリーンレイアウト 多くの場 合、Outlineペインにコントロールを配置するのが簡単です。

アプリケーションをダウンロードしてテストした ら、左下のメニューボタンをクリックして接続を 確立して、使用するBluetoothデバイスを選 択します(connect to device –secureを 選択します)。 すべてが正常に機能した場合は、 メッセージ「connecting」と、しばらくしてから 「connected: <device name>」が表示さ れます。

これで、インターフェイスを自分の好みにあわせ て調整することができます。 Elektor Webサイ トからダウンロードできるものには、完成したアプ リケーションファイル(.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/jpn/ をご覧ください。 Designspark.com はRSが運営するエンジニアのためのコミュニティーサイトです。

ページの先頭へ