sophiaの書

なんか書く

赤外線リモコン受信モジュールがヘルメットに見える

赤外線リモコン受信モジュールを見たとき、私は潜水服や宇宙服のヘルメットを連想しました。そのため赤外線リモコン受信モジュールに頭以外を取り付けて人型にしてみました。ついでに赤外線リモコン受信モジュールの動作確認をしました。

使用するもの

1.今回はこの赤外線リモコン受信モジュール(OSRB38C9AA)を使います。

akizukidenshi.com

2.この赤外線リモコン受信モジュールに入力する信号は秋月電子通商で売っている赤外線リモコン(オプトサプライ赤外線リモコン)により生成します。

akizukidenshi.com

3.頭以外はポリウレタン銅線を使って作ります。手元にあったのでこのポリウレタン銅線を使いましたが、線が太くて曲げにくく、作業がしにくかったです。そのためこれより細いポリウレタン銅線を使うべきです。

akizukidenshi.com

4.その他マイコンやブレッドボードなど必要なもの。

作業手順

まず、図1のように赤外線リモコン受信モジュールを用意します。図1において上側の部分が受光部です。今回はこの部分が頭部になります。下側の三本足は左から順に出力端子、GND、電源です。

赤外線リモコン受信モジュールをじっと見つめていると、潜水服や宇宙服のヘルメットに棒が3本突き刺さっている様子に見えてきます。未来の生き物のようにも見えてきます。

図1. 赤外線リモコン受信モジュール

図1. 赤外線リモコン受信モジュール

次に赤外線リモコン受信モジュールにポリウレタン銅線を巻きつけて頭以外を作ります。ポリウレタン銅線はぴかぴかしていてきれいですし、絶縁されているので赤外線リモコン受信モジュールに直接巻き付けてもショートしません。赤外線リモコン受信モジュールはただの飾りではなく、本来の用途である赤外線リモコン受信モジュールとして使用したいので、3本の端子が巻き付けたポリウレタン銅線から突き出した状態にしなければなりません。

図2に頭部と頭以外を前から見た様子を、図3に頭部と頭以外を後ろから見た様子を示します。

図2. 現場猫ポーズ 前側

図2. 現場猫ポーズ 前側

図3. 現場猫ポーズ 後ろ側

図3. 現場猫ポーズ 後ろ側

次に巻き付けたポリウレタン銅線から突き出している3本の端子をブレッドボードに突き刺します。そして同じブレッドボードにマイコンや電源などに必要な回路を構成します。図4に配線後のブレッドボードの様子を示します。

赤外線リモコン受信モジュールや赤外線リモコンの商品名を検索すると、先人たちが使い方を分かりやすく説明してくれているブログがいくつか見つかります。必要な回路に関する詳細はそれらのブログを参考にしましょう。秋月電子通商のホームページからダウンロードできるデータシートも参考になります。私も先人たちのブログやデータシートにお世話になりました。

図4. そいつはブレッドボードの角に座っている

図4. そいつはブレッドボードの角に座っている

次にマイコン用のプログラムを作成します。私が今回作成したプログラムの概要を簡単に説明します。言葉だけで説明しても分かりにくいでしょうから読み飛ばしてください。

赤外線リモコンのボタンを押したら出力される赤外線の信号が赤外線リモコン受信モジュールに入力されます。すると赤外線リモコン受信モジュールから電気信号が出力され、その電気信号がマイコンに入力されます。マイコンは外部割込みにより関数を呼び出し、その関数内で電気信号1つ分すなわち赤外線リモコンのボタンを1回押したら出力される赤外線の信号に相当する電気信号を読み取り、関数を抜けます。ここで、外部割込みにより呼び出される関数を受信関数と呼ぶことにします。電気信号1つ分は複数のパルス波で構成されており、受信関数内でそれらの時間的な長さを計ります。その際にある工夫をしています。その工夫とはタイマ割り込みと符号なし32bit整数のglobal変数のインクリメントです。タイマ割り込みで0.1msごとに関数を呼び出し、その関数の中で符号なし32bit整数のglobal変数をインクリメントします。するとそのglobal変数は10kHzで+1されていきます。その程度の速さでインクリメントしているだけでは符号なし32bit整数はなかなかオーバーフローしません。今回はその符号なし32bit整数のglobal変数を0.1ms刻みの時計として使います。ここでタイマ割り込みにより呼び出される関数を時計関数と呼ぶことにします。最後に、電気信号1つ分をマイコンが認識したら、赤外線リモコンのどのボタンが押されたのか判別し、シリアル通信でパソコンに送信します。パソコンではターミナルにどのボタンが押されたかを表示します。受信関数と時計関数の割り込み優先度は時計関数を1番目、受信関数を2番目に設定します。

このプログラムを書くのはとても大変でした。しかし、外部割込みなどの洒落たことをしなければ先人たちの知恵を借りるだけで済みます。そもそも外部割込みをしようがしまいが結果は変わらない気がするのでやらなくてよかったかもしれません。

プログラムを書く段階でも先人たちのブログに大変お世話になりました。

結果

最後に、必要なプログラムをマイコンに書き込んで実行します。図5にターミナルにどのボタンが押されたかを表示している様子を示します。このときはAボタン、Bボタン、上矢印ボタン、白ボタン、右矢印ボタン、下矢印ボタン、左矢印ボタンの順に赤外線リモコンのボタンを押しました。うまくマイコンで識別できています。

図5. ターミナルに結果を表示

図5. ターミナルに結果を表示

まとめ

  • 面白い見た目の電子部品がある。
  • 赤外線リモコン受信モジュールの動作確認ができた。
  • 外部割込みプログラムが書けた。

おまけ

ちなみに、Twitterで誰かがツイートしてましたがLEDはくらげに見えます。もちろん足が2本しかないLEDはくらげには見えにくいです。しかし足が多いとくらげに見えやすくなります。例えば足が4本あるRGBフルカラーLEDはどうでしょうか。

akizukidenshi.com