いろいろ作るよ!

ものづくりの記録

光線銃のための赤外線通信(ハード編)

目的

赤外線通信を用いた光線銃を製作します。
必要なデバイスとその使い方を本記事にまとめます。
※赤外線通信のソフト編は次の記事にまとめます。

参考資料

  1. 赤外線を遠くて狭い範囲に照射する手段として、100均レンズによる集光方法を参考にしました。 wazalabo.com

  2. M5Stackで可視光LEDを点灯させる回路、プログラムを参考にしました。 qiita.com

準備

  1. M5Stack Basic
    ヒットポイントや残弾数を表示したかったので、画面が大きくてケース付きのマイコンモジュールを選びました。 www.switch-science.com

  2. 可視光LED (OSUB5111A)
    完成品には組み込む必要はないのですが、レンズの焦点距離の確認に、可視光の(普通の)LEDを使用します。
    指向性特性(照射角度)を赤外線LEDと合わせておきます。 akizukidenshi.com

  3. 赤外線LED (OSI5FU5111C-40)
    高輝度で照射角度が小さい(指向性が強い)仕様のものを選定します。 akizukidenshi.com

  4. 赤外線受光モジュール (OSRB38C9AA)
    秋月電子ではいくつかの赤外線受光モジュールが取り扱われています。
    SPS-***シリーズは、M5StackをLiPoバッテリーで運用している際に起動が不安定になりました。(起動電流が大きいため?)
    OSRB38C9AAは、M5Stack/M5StickCと組み合わせて動作確認済みです。
    akizukidenshi.com

  5. 赤外線LED電流制限用抵抗 47Ω
    抵抗値の計算は、秋月電子の資料が参考になります。
    http://akizukidenshi.com/download/led-r-calc.pdf
    M5Stackに搭載されているワンチップマイコンESP32では、GPIOから出力できる電流値は40mAと20mAの2通りがあり、GPIO毎に決まっているようです。
    できるだけ通信距離を稼ぐため、40mAが出力できるピンを選択し、40mAが出力される抵抗値を選定します。(赤外線LEDの最大定格電流は100mAなので、赤外線LEDのスペックとしてはまだ余裕があります)
    ESP32のGPIOの出力は3.3Vです。赤外線LEDの順方向電圧降下は、データシートによると1.35Vです。
    よって、(3.3[V]-1.35[V])/40[mA]*1000=48.75Ωとなり、市販されている47Ωを選択しました。

  6. 凸レンズ
    ダイソーで様々なレンズを買って試したところ、とげ抜きルーペのレンズ直径と焦点距離が最適でした。 getnavi.jp

レンズの焦点距離の計測

f:id:neet2121:20200112004948p:plain
赤外線LEDは半値角(※1)15度のためそれなりに狭い角度で照射されるのですが、シューティングゲームとしてもう少し難易度を上げたいので、凸レンズでさらに照射角度を小さくします。
f:id:neet2121:20200112004953p:plain
原理上は、凸レンズの焦点位置に光源があると、凸レンズを通過した光は平行光線になります。
100均レンズの焦点位置は分からないため、M5Stackで可視光LEDを駆動し、その光を凸レンズに通して光の広がり具合を確認することで、焦点距離を計測します。
※1:光出力がピーク値の半分になる角度。15度の外側にも多少の光が照射される、ということ。

可視光LEDをM5Stackから駆動できるように回路・プログラムを作成します。
f:id:neet2121:20200112004955p:plain
M5StackのGPIOはLCDやスピーカーのコントロールと共有されているものがあり、シンプルに使用できるGPIOは限られているため注意が必要です。 今回はGPIO26を使用します。 LEDの電流制限抵抗については、そこそこの明るさで良いので、とりあえず47Ωを入れています。

点灯プログラムについては、m5stackでLチカを参考に作成しました。本記事では詳細は割愛します。 f:id:neet2121:20200112004926j:plain
f:id:neet2121:20200112004912p:plain
f:id:neet2121:20200112004914p:plain
凸レンズと可視光LEDの距離を変えながら照射される光の大きさを計測したところ、焦点距離は53.5mm(レンズの端部で計測)で、1m先で径80mmの集光でした。
計算上の照射角は±1.6度となります。

送信側の製作

f:id:neet2121:20200112011951j:plain
レンズと赤外線LEDを図のように配置し、焦点距離を可視光LEDの調整結果に合わせます。
f:id:neet2121:20200112004942p:plain
赤外線LEDとM5Stackを図のように接続します。可視光LEDでの接続と同じです。

受信側の製作

f:id:neet2121:20200112004944p:plain
f:id:neet2121:20200112011936j:plain
f:id:neet2121:20200112011943j:plain
赤外線受光モジュールとM5Stackを図のように接続します。M5StackのGPIOと直結できるので簡単です。 この赤外線受光モジュールの電源Vccは2.7~5.5Vまで許容されており、出力される信号OUTPUTの電圧は電源電圧と同じになります。M5Stack(ESP32マイコン)のGPIOに印加できる電圧の上限は3.6Vのため、赤外線受光モジュールの電源Vccに3.3Vを接続します。 赤外線受光モジュールのデータシートにはノイズ対策のRCフィルタ回路が記載されていますが、今回は無くても綺麗な出力波形が出てきました。

まとめ

f:id:neet2121:20200112012851j:plain
光線銃のための赤外線通信システムの全体像です。

  • 光線銃を実現するためにはレンズによる赤外線の集光が必要です。
  • 可視光LEDを使って100均レンズの焦点距離を求めました。
  • 赤外線LEDとレンズを焦点距離で配置し、M5Stackに赤外線LEDと受光モジュールを接続しました。

動作の様子はソフト編に記載します。