micro:bit光線銃プロジェクト




少年の夢w「光線銃SP」


1960年代の話です。任天堂から「光線銃SP」という玩具が発売されていました。銃から出た光にターゲットの光電池が反応して、ターゲットのライオンの目が光ったりする、当時としてはハイテクで、子どもたちのハートを鷲掴みにしたものです。安くはないものなので親にねだっても買ってもらえず、涙を飲んだ小学生男子も多かったでしょう。
参考:光線銃SP(Googleの画像検索
その後任天堂は、各地のボウリング場などに業務用の「レーザークレー」を展開していきます。
参考:山崎功さんによる「任天堂初の大型レジャー施設レーザークレー秘話」の内容まとめ@レトロゲームアラカルト
丁度、ゴルフの室内練習場のような設備で、前面のスクリーン上に映し出された風景の中をクレーの標的が飛んでいきます。これを光線銃のショットガンで狙い撃ちするシステムでした。ショットガンは木製の台座と鉄の銃身で重量のあるリアルなもので、高校生の当時、友人たちと近所のボウリング場で楽しんだ憶えがあります。あれが任天堂の経営危機の、文字通り引き金を引いたとは知りませんでしたが...

その後世の中はビデオゲーム全盛となり、任天堂もファミコンで息を吹き返します。
自分は齢とともにゲームもしなくなっていたのですが、ここ数年micro:bitやプログラミング教育に関わる中で、今ならあの恨みを飲んだ「光線銃SP」を再現できるのではないか、結構よいSTEM教材になるのではないか、と思えてきました。
先行や類似の製品はいろいろありますが、なるべく自前で作ることで学ぶ。車輪の再発明であっても学べることは多そうです。

◆赤外線センサーを使う


かつての光線銃SPは可視光線を使っていましたが、可視光線は周囲の明るさに影響されるため、動作を安定させるのが難しくなります。そのため現在の家電のリモコンはほとんど赤外線を利用しています。リモコン草創期には可視光や超音波を利用したものがありましたが、いずれもノイズによる誤動作の問題が解決できずに廃れていきました。
家電で大量に使われているため、リモコン用の赤外線LEDとセンサーは安価で入手しやすいパーツになっています。
左が赤外線LED「OSI5FU5111C-40」。1個20円くらい。
右が赤外線リモコンセンサー「OSRB38C9AA 」
1個50円くらい。

リモコンでは自然の赤外線と判別するため、赤外線に一定の変調をかけることになっています。リモコンのセンサーもこの変調がかかった赤外線しか認識しません。
参考:赤外線リモコンの通信フォーマット
  :赤外線リモコンの作り方
基本は赤外線LEDから出る光を周波数38KHzで変調、つまりLEDを毎秒38000回点滅してやります。38KHzの1周期は1/38000秒≒26.5μ秒となります。ただし、ON/OFFのデューティー比は1:1(50%)でなく、1:2(33%)程度で構わないようで、これはLED点灯のための電池の節約が理由のようです。具体的には点灯が8.5μ秒、消灯が18μ秒を反復することになります。
<図1>


上記の参考資料のリンクを見ていただくとわかるように、実際のリモコンではこの38KHzで変調した光(サブキャリアと言います)をさらにリモコンのコードで変調しています。かなり複雑なフォーマットなので、Arduinoなどには簡単に実装できるライブラリが用意されています。
光線銃としては、とりあえずセンサーが赤外線に照射されたことさえ判定できればよいので、サブキャリアの変調だけ実装することにします。

<既成のmicro:bit用の製品>としては
スイッチサイエンス 赤外線発光器セット
スイッチサイエンス micro:bit用赤外線受信モジュールキット
があります。
発光器セットは、前述の38KHzの変調をタイマーICでハード的に行っています。micro:bitからは発光器にデジタル出力するだけなのでプログラムが簡単になりますが、変調の仕組みがブラックボックスになってしまいますので、STEM的には以下のように自前でハードからつくってプログラムする方が得るものは多いと思います。

◆ハードウェアを作る


<受信側>
まずは受信側。今回使用した赤外線リモコンセンサー「OSRB38C9AA」は3本の足があり、正面から見て左が信号線、中央がGND、右が電源になります。電源は2.7V~5.5Vが使用できるため、micro:bitと3V の電源を共通にできます。
参考:OSRB38C9AA データシート(秋月電子通商)
信号線は負論理で、赤外線が検知されないときはHiで、電源電圧が出力されます。赤外線が検知されるとLoになり0.2V程度になります。
この電圧変化をmicro:bitのポートで利用するために、FETのスイッチ回路を使用します。
FETは汎用のMOSFETである2N7000を使用しました。ドレイン・ソース間最大電圧60V、最大電流200mAですので、今回の用途には問題なく使用できます。秋月電子通商などで、1個20円程度で入手できます。
<図2>

赤外線がセンサーに当たっていない時、センサーの出力はHiになり、FETのゲートに3Vほどの電圧がかかります。ドレイン・ソース間は導通状態となり、micro:bitのポートは接地状態になります。micro:bitから見るとデジタル入力=0の状態です。

赤外線がセンサーに当たると、センサーの出力はLoになります。FETのゲート電圧は0V付近になり、ドレイン・ソース間が絶縁され、micro:bitのポートには3.3Vの電圧がかかるようになります。micro:bitから見るとデジタル入力=1の状態になります。

R1はスイッチした瞬間に出力電圧が細かく変動する(リンギング)のを抑制するため、R2は入力がオープンになった場合に、ゲートを接地して出力を安定させるための抵抗です。値は厳密でなくてもR1は100~1KΩ、R2は10K〜1MΩあたりで大丈夫です。
R3はプルアップ抵抗で、FETスイッチがONになった場合に電流を制限するものです。
参考:FETの使い方ガイド(マルツオンライン)
回路図では省略していますが、当然GNDはmicro:bitのGND端子と接続して、共通にする必要があります。

<送信側>
送信側はmicro:bitのポートに電流制限抵抗とLEDを直接接続するだけです。使用したLEDは順方向電圧(Vf)=1.35Vですので、電源となる3.3Vとの差は約2Vです。
流せる電流は、LEDの最大定格は100mAですが、micro:bitのポートが最大90mAなのでこれ以下になります。とりあえず40mA程度流すとすると、2÷0.04=50Ωの制限抵抗を入れることになります。E6系列の抵抗で一番近い値の47Ωを使用します。
<図3>

参考:赤外線LED
ついでに、当たった時に音が出てわかるように、圧電スピーカーをmicro:bitのあいているポートにつけておきます。秋月電子通商で1個30円程度で入手できます。
参考:圧電スピーカー


試作品はmicro:bitサイズのユニバーサル基板に実装して、ビスでmicro:bitのポートと接続しています。



あとはレゴなどで適当にピルトルっぽく作った本体に、micro:bitとセットした基板と電池ボックスを取り付けるだけです。
親指でBボタンを押しやすい位置に取り付けるのがよろしいでしょう。


もっとそれらしくしたいなら、おもちゃのピストルを改造する方法もあります。この例はダイソーのBB弾のピストルのトリガーにマイクロスイッチをつけたものです。マイクロスイッチをP0と3Vに接続して、トリガーを引くとP0がHighになってトリガーを検知します。若干工作が必要ですが、スイッチの感触が良い感じになります。
赤外線LEDは銃口部分に取り付けて、電池はボタン電池を基板上にホルダーをはんだ付けして装着してあります。


◆ソフトウェアを作る


ハードができたところで、micro:bitのプログラムを考えます。

受信側のソフトはシンプルで、ポートのデジタル入力=1になれば赤外線が照射された、銃にヒットされたの判定でOKです。この例ではP0にセンサーの出力(上記回路図のJ2)が接続されています。
P2に圧電スピーカーを接続して、ヒットと同時に音を出すようにしています。
<図4>


一方、送信側はP1に接続したLEDを、38KHzで点滅させる必要があります。上記<図1>に示したように、点灯8μ秒、消灯18μ秒のサイクルを反復するようにプログラムすることになります。反復の回数は試行して決めていきます。
<図5>


このほかに弾数の制限や、ヒットされたときのライフ表示などゲームとして必要な要素を組み込んでいきます。

◆ターゲットを工夫したい


「光線銃SP」のターゲットは、命中するとライオンの壁掛けの目が光るものが有名でした。他にも命中するとビール瓶の形の的がふっとぶとか、ルーレットが回るとか、物理的なものがありました。やはり物理的なものは面白いですね。
参考:昭和View 昭和の音と美と技とエナジー!
とりあえず、いくつかプロトタイプを作ってよさげなものを探したいと思います。

案1:命中すると倒れるターゲット

命中するとサーボを駆動して、的が倒れるパターン。縁日の射的のイメージですね。人型にしておくとSWATの訓練みたいですが、物騒なので控えておきますw。
↓画像のクリックで動画が見られます



プログラムはこんな感じで。


案2:命中すると景品がもらえるw

これも縁日みたいですが、景品がもらえると嬉しいので。
以前別件で作ったキャンデー自動販売機の模型とセットにしました。プログラムは倒れるターゲットと同じで、命中するとサーボを回してキャンデーを落とすだけです。
↓画像のクリックで動画が見られます


案3:サバイバルゲームもどき

複数人で組になって、体にターゲットをつけます。撃ち合って被弾するとライフ表示が代わり、弾切れになるかライフが無くなると終了、というゲーム。これこそ物騒かもしれませんがw、広めのところでやると密を避けながら運動になるんじゃないかと。
自衛隊も「バトラー」というこれのガチなシステムを演習に使っています。
参考:レーザー交戦装置(Wikipedia)
↓画像のクリックで動画が見られます


銃の方のプログラムは残弾数表示をつけています。


ターゲットの方はライフ表示をつけています。別に数字でも良いのですが、グラフィカルな方が遠くから視認性がよいので。


◆ハードをかためる

いろいろ試作してみて、なんとなく形が見えてきたので、プリント基板を起こしたくなってきました。
いくつか試行錯誤のあと、基板化し、銃本体もMDFで切り出してキットにしました。

◆Maker Faire Kyoto2023での展示とキット販売を行いました


To be continued