いろいろ作るよ!

ものづくりの記録

赤外線サバゲシステムを作ってみた

撃つ!避ける!倒す!FPSゲームのようなハイテク光線銃システムを作ってみました。完成品とモノづくりのポイントを紹介します。 f:id:neet2121:20211005223250p:plain

なぜ作ったか

海外製の光線銃を使って遊ぶイベント(https://k-7.jp/)があり、スポーツライクでかなり楽しめました。我が家でも水鉄砲遊びがブームだったので、家族で遊べる光線銃が欲しくなりました。 コンセプトは3つです。

  • 安全で痛くない銃撃戦
  • 基本要素の「撃つ」「当たる」「当てられる」がしっかり楽しめる
  • 3歳児が遊べる大きさ、手軽さ、そして堅牢さ

何を作ったか

完成品の動画です。

f:id:neet2121:20200118145850p:plain
赤外線ハンドガンのトリガーを引くと、銃口から赤外線信号が照射されます。赤外線センサで信号を受信すると、被弾判定されるシステムです。スマートグラスユニットを追加することで、まさにFPSゲームのように対戦できます。

赤外線通信の確立

技術的なポイントのひとつが、赤外線通信です。
f:id:neet2121:20200118145856p:plain
赤外線LEDを使い、凸レンズで集光する方法を採用しました。M5Stackが赤外線LEDを制御し、受光モジュールで信号を読み取ります。

f:id:neet2121:20200118145859j:plain
ハードの開発では、凸レンズの入手が課題でした。100円ショップでレンズを買い集め、焦点距離を比較したところ、ダイソーの「とげ抜きルーペ」がいい感じでした。

(レンズの選定手法はこちら) neet2121.hatenablog.com

次はプログラムの実装です。光線銃システムの特性上、次の課題がありました。

  • 敵味方の識別が可能な"データ"の送信が必要
  • 一方で、手ブレやターゲットの動きでも通信失敗しないように、短時間で通信を完了する必要がある
  • データ送信と同時に射撃演出(LCD、効果音、テープLED)を行ため、送信処理落ち対策が必要
  • 射撃演出中でもデータ受信(被弾)ができる必要あり

f:id:neet2121:20200118145907p:plain
光線銃に適した赤外線通信フォーマットを策定し、5msecで通信完了できるようにしました。

f:id:neet2121:20200118145910p:plain
M5StackはCPUがデュアルコアになっています。タスクをそれぞれのコアに割り振ることで、安定して赤外線通信を行えるようになりました。

(プログラムの実装方法はこちら) neet2121.hatenablog.com

全方向赤外線センサの開発

f:id:neet2121:20200115214141p:plain
受光モジュールは受信できる角度に制限があります。受光モジュールに自作の反射鏡を組み合わせ、全方位から受信できるようにしました。

f:id:neet2121:20200115221257p:plain
反射鏡の製作過程の概要です。

  1. 反射鏡の形状をExcelで解析して求める
  2. Fusion360に座標を読み込ませ、型をモデリングする
  3. 3Dプリンタ(Adventurer3)で型を出力する
  4. バキュームフォームで型形状をミラー塩ビ板に写し取る

(反射鏡の計算手法や、製作過程の詳細はこちら) neet2121.hatenablog.com

テープLEDによる演出

初号機ではテープLEDが無く、相手に当たったかどうか分かりにくい問題がありました。「撃つ」「当たる」「当てられる」が分かりやすく楽しめるように、テープLEDを追加しました。 動画でご覧ください。

f:id:neet2121:20200118145934j:plain
真正面からでもLEDが見え、かつ射撃時に自分は眩しくない形状を狙っています。

外装設計と部品の配置

f:id:neet2121:20200118145937j:plain
工具のような機能美デザインを目指しました。今回3Dプリンタを購入したのですが、一部はMDF素材を使用しています。デザイン上の理由もありますが、モノコックボディのように高い剛性が得られる利点があります。

f:id:neet2121:20200118145946p:plain
初号機のフレームは軽量化を狙って薄板形状にしたところ、ABSフィラメントの特性に由来する熱変形に苦しめられました。2号機はその反省から、できるだけ肉厚を増やし、スライサーの3Dインフィル機能で中空構造にすることで、熱変形の防止と軽量化を両立しています。また、3Dプリンタ出力部品で細かい部品を挟み込むことで、マウント用の部品点数を減らしています。

(ABSフィラメントの熱変形対策はこちら) neet2121.hatenablog.com

長時間の運用とバッテリー交換が簡単にできることを狙って、モバイルバッテリー(Anker PowerCore+ mini)を搭載しました。マガジンのように着脱でき、着脱の感触も良い感じです。グリップ内に収めることで重さを感じにくいように工夫しています。動画はこちら。

f:id:neet2121:20200118145951p:plain
赤外線センサとテープLEDの透明なケースは、バキュームフォームで作っています。

スマートグラスユニットの製作

f:id:neet2121:20200118145957j:plain
M5StickCをスマートグラス化する方法は、こちらに投稿した記事にまとめています。

www.shumi-tech.online

赤外線サバゲシステムに適用する際に、次の課題がありました。

  • 眼鏡をかけた状態でも使用できる
  • 着脱が簡単
  • 重量バランスが良く、しっかり頭にホールドされ、激しい運動でも落ちない
  • リフレクタの位置調整が手軽にできる

f:id:neet2121:20200118150003j:plain
そこで、帽子のツバ部分にスマートグラスをマウントすることにしました。

f:id:neet2121:20200118150007j:plain
重量バランスを考慮し、後頭部側にモバイルバッテリーを取り付けています。

f:id:neet2121:20200118145920p:plain
スマートグラスとハンドガンはBLE(Bluetooth Low Enegy)で同期しています。

スマートグラスユニットについては、とりあえず動くところまでできました。もう少し堅牢さの面で改善したいです。

子どもと遊んでみた

3歳児と遊んでみました。めっちゃ楽しい!

まとめ

3つのコンセプトから出発し、いくつかの要素開発を経て、赤外線サバゲシステムとして組み上げることができました。
どうすれば実現できるか?を技術要素にブレイクダウンし、丁寧に解決していくことが大切だと感じました。
モノづくり系のイベントで実演予定なので、ぜひ手に取って遊んでみてください!