Indoor airplane world
 



 Androidアプリを勉強する気になったのは、前にも書いた通りスマートフォンでインドアプレーンを操縦できる送信機を作りたいから。

 Android端末に内蔵されているBluetoothが使えるとよいのですが、今のスキルではとても無理。そこでもっと簡単に実現できそうな、Android端末のイヤホンジャックを利用した赤外線送信機を開発します。



 スマートフォンに差し込んで使えるプラグは、画像左からモノラル、ステレオ、マイク端子付きの3種類。今回はモノラル用を使います。

 Android端末の左右の傾きでラダーをコントロールし、上下の傾きか画面のスライドタッチでスロットルをコントロールします。

 Android端末から出力するシリアルパルスのフォーマットは基本的に赤外線送信機と同じですが、どうしたらスマートフォンのイヤホン端子から、送信機のシリアルパルスを出力できるのでしょうか。

 入門書を数冊読んだくらいではわかるはずもありません。ネットを検索しては利用できそうなサンプルアプリを片っ端から一つ一つ試して、ヒントにつながりそうなきっかけを探しました。

 こちらに載っている矩形波作成を応用すれば作れそうな気がするのですが、具体的な方法がわかりません。もっとも、ほかのこともほとんどわかっていないのですが・・・。

 すでにスマートフォンでインドアプレーンを飛ばしている、N氏が採用しているパルスの作り方についてのアドバイスが、前進の大きなステップとなりました。感謝!



 そしてようやくスマートフォンのイヤホンジャックから、3チャンネルのシリアルパルスを出力することができました。感動!

 P-1D端末のイヤホンジャックに100kΩの抵抗を負荷つないだプラグをセットして、音量を最大にしたときの出力です。

 3チャンネル分のシリアルパルスが約27ms周期(毎秒約37回)で繰り返されていますが、時々割り込みが発生したような感じでパルスの欠落が発生します。

 いまのところまだ勉強不足でこの欠落を取り除くことはできませんが、毎秒30回程度の繰り返し周期なので、取りあえずこの出力で動作するPICプログラムを考えます。



 出力電圧が音量最大で約0.9Vp-pなので、このままではPICにつなげません。シリアルパルスのタイミングは、設定したAudioTrackのサンプリングレート(44100Hz)から算出できます。

 Androidアプリの勉強と並行して、いよいよイヤホンジャックにつなぐ赤外線送信プログラムに取り掛かります。

■覚え書き

//オーディオ出力の音量を最大にセットする
MainActivity.javaに

final int MUSIC = audio.getStreamMaxVolume(AudioManager.STREAM_MUSIC);
audio.setStreamVolume(AudioManager.STREAM_MUSIC, MUSIC, 0);  


//画面の向きを固定する
AndroidManifest.xmlに

<application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<activity
android:name="com.toko.nagano3.MainActivity"
android:label="@string/app_name"
android:screenOrientation="portrait" > ←この行を追加する

 
//画面をスリープモードにしない
MainActivity.javaに

getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);

 
 

 

コメント ( 0 ) | Trackback (  )
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする


«  日程 第170... Android端末... »
 
コメント
 
コメントはありません。
コメントを投稿する
 
名前
タイトル
URL
コメント
コメント利用規約に同意の上コメント投稿を行ってください。

数字4桁を入力し、投稿ボタンを押してください。