構想編3
赤外線受信モジュールをarduino UNOに接続してSampleCodeを実行してみます。
受信モジュールの接続
受信モジュール付属のケーブルの端子はarduino UNOに実装されているものと同じ仕様の3極のピンソケットです。一旦ピン端子で受けてそれぞれ必要な端子に配線する必要があります。私の実験用arduino UNOは、基板横にブレッドボードを配置しているので、それを利用する事にしました。
3極のピン端子はそのままではブレッドボードに挿さらないので、各ピン端子を抵抗のリードで延長しました。
それをブレッドボードに差して、ブレッドボードを介してarduino UNOの端子へ配線しました。ピンの並びは以下のとおりです。
黒:GND
赤:5V
水:信号出力
信号出力は、SampleCodeの信号入力の設定に合わせてポート2に配線しました。
動作確認
arduino UNOはPCとUSBで接続します。統合開発環境ソフトIDEを実行してSampleCodeを読み込みます。赤外線モジュールの出力信号をモニタする為にオシロスコープも準備しました。(本記事のアイキャッチ写真参照)まずはSampleCodeをそのままコンパイルしてみました。
当たり前ですが問題なくコンパイルは完了します。次はコンパイル後の実行バイナリをarduino UNOへ転送しました。転送完了後実行スタートしていますので、付属のリモコンでコードを送ってみました。下記は、各種キーを押した際のシリアルモニタ画面です。
押したキーに応じた表示がされています。この時の受信モジュールの出力波形も確認してみました。
先頭部分がLeaderに相当します。前回の記事で確認したとおり、点灯時が'L'となっていました。16T+8TのLeadetに続きカスタマコード波形が確認できます。波形を見るとカスタマコードは1011 1111 0000 0000:48896となっていますが、サンプルコードの一致確認はなぜか14bit(11 1111 0000 0000:16128)で上位の2bitは確認していません。とりあえず動作はするので深追いしない事にします。キーの長押しをしてみました。受信波形は以下のとおりです。
仕様どおりのRepeat波形が確認できました。さらに波形を拡大してみました。
正しく出力されています。ちなみに、付属リモコンでは、どのキーを長押ししてもRepeatコードが送信されています。リモコンユニット内蔵のマイコンは、各キーに割り当てられた機能は関知せずにキー操作に忠実にコードを送信しているようです。次にPanasonicのディーガのリモコンを使ってみました。SampleCodeがError表示するのは仕方がないですが、カスタマコードも正しく受信できていません。波形は以下のとおいです。
Leader先頭の点灯期間が3.4msとなっている事から、家製協フォーマットを採用しているようです。Panasonicのリモコンをしばらく操作していると、SampleCodeがハングアップします。一旦リセットして操作をすると、かならずキー操作12回目に暴走するようです。
前回の記事でSampleCode解析を行いましたが、RemoteVerify関数の最後でカスタマコードが不一致の場合の処理が気になりました。リトライの為に自身をコールしている関数を実行しています。カスタマーコード不一致が続くといずれはスタックがオーバーフローしてしまいます。試しにリトライ処理をコメントアウトすると問題はなくなりました。
これで一通り動作確認はできました。次回はDACユニットに赤外線リモコン受信機能の追加を検討します。
つづく(構想編4)