文化祭は自作電子銃でサバゲ― 第1回

第1回 救世主との出会いから完成まで

はじめに~救世主・桐朋学園電子研との出会い

この記事は、都立高校に通う電子工作初心者の高校生たちが、部活(デジクリ部)で文化祭の企画として電子銃を使ったサバゲ―(っぽいゲーム)をやりたい!ということで始めました。ネットで探しても「こんなことやったよ」という紹介記事はあるものの、初心者が真似できるような詳しい作り方がのっているサイトはほとんどありませんでした。やはり自分たちだけでは無理なのか…。
そんな時、デジクリ部の外部指導員(CQ出版の中の人)の先生から桐朋学園の電子研を紹介されたのでした。


目次

どんな仕組みにするか

最初はネットで見つけたサイトを参考にして、M5StampC3を使った方法で制作を進めました。

送信側:電子銃(テレビのリモコンを利用)
受信機:M5StampC3で電子銃の赤外線を受信➡得点集計用のM5Stampと通信
得点集計:味方と敵のM5Stampを分けて、電子銃の赤外線がヒットするとゲージが減る仕組み

桐朋電子研の先生に教わりながら進めていましたが、M5Stampでの通信は想像以上に難しく、なかなかうまくいきません。そうこうしている間に時間ばかり経っていき、いよいよ文化祭1週間前になってしまいました。

途中まではうまくいっていたが・・・

リモコンで撃たれるとHPゲージが減っていきます

まさかの方針変更

M5Stampの扱いは電子工作未経験者の私たちにはハードルが高く、時間もなくなってきてしまいました。Micro:bitなら扱いやすい!と考えたものの予算オーバー。
そこで、元々持っていた「ELEGOO Arduino用UNO R3スターターキット」に入っているArduino UNO R3を使うことにしました。

赤外線受信モジュールやLED、ブザーやジャンパ線など必要なものは全て揃っています。部活で4セット買ってもらったいたためサバゲ―に必要な数も足ります。

ELEGOO Arduino用UNO R3スターターキット

作り方・考え方

通信は諦め、赤外線が当たってブザーが鳴ったら終了、先にフラッグを取るか、敵を倒したら勝ちというシンプルなルールに変更しました。銃も当初はリモコンを分解してボタンを短絡して、と色々考えましたが既成のおもちゃの銃(音と光が出るタイプ。弾は出ない)に直接リモコンを貼り付けるという超シンプル思考に変更。

おもちゃの銃にリモコンを取り付け

Arduino UNO R3に赤外線受信モジュールLEDライトブザーを取り付けるだけのシンプル構成です。電子工作に慣れている人からみたら簡単すぎると思いますが、初心者にとっては赤外線受信モジュールが製品によって足の配置が違っているため幾つもモジュールをダメにしたり(発熱にびっくりしました)、教室の蛍光灯にセンサーが反応してブザーが鳴りまくったりと調整するのは結構大変でした。

受信機の構成

最初のキットに入っていた赤外線受信モジュールは基盤付でわかりやすかったのですが、文化祭1日目終了した時点で4つのうち2つが壊れてしまいました。

ELEGOOのキット付属の赤外線受信モジュール

トラブル1 素人泣かせ―さまざまな赤外線受信モジュールを試すことに

いただきものの赤外線受信モジュール
秋月で購入

最初にキットに付属していた赤外線受信モジュールが壊れたため、他のに交換することになりました。簡単だと思っていたら製品によって足の配置が違う!できれば規格を統一して欲しいです。

トラブル2 ブザーが鳴り響く

なんとかマイコンに繋ぎ、ArduinoIDEでプログラムも書きこめました。リモコンを当てるとブザーが鳴り、LEDも光ります!やったー!完成!!

ところが、ゲームのバランスやルール確認の段階になって問題が発生。赤外線受信センサーがリモコン以外の照明などに反応して鳴ってしまうのです。何もせず受信キットを置いておくだけでも鳴ってしまうので対策する必要がありました。部屋を暗くする方法もありますが、同じ部屋にはマイクラで遊ぶコーナーもあるため、照明を落とすことができません。

プログラムで修正

まずはプログラムの方で照明対策をしました。数値をシビアにしすぎると今度はリモコンに反応しにくくなるので、テストしながら調整しました。

// --- 動作調整 ---
const uint8_t  MIN_RAW_LEN  = 24;   // これ未満のUNKNOWNは無視(照明対策)
const uint16_t COOLDOWN_MS  = 60;   // 連射間隔(小さいほど速射)
const uint16_t REACT_MS     = 200;  // ヒット時のLED/ブザー継続時間
const uint16_t BUZ_HZ       = 1200; // ブザー周波数

物理的な対策

プログラムだけではなく物理的な対策もしてみました。受信機の赤外線センサーが出るところに厚紙と黒ガムテで作ったフードを取り付けただけですが、それなりに効果があったようです。

フードを取り付けた受信機

その他のトラブル

最初、受信機は帽子に取り付けていましたが、リハーサル時に「自分が撃たれたのかどうか分からない」という問題が発生。ブザー音は結構大きいのですが、頭の上にあるとよく聞こえないようです。また、LEDが光ったことも当然わかりません。そこで、帽子はやめて胸から下げることにしました。

電子工作初心者のためのメモ

部品は多めに用意しておこう

マイコンは高いので必要枚数しか用意できなくても、赤外線受信モジュールやブザー、LEDライトなどは多めに用意しておけるといいです。また、できるだけ同じ物を用意した方が交換が楽になります。

今回、途中で赤外線受信モジュールを交換することになりましたが、交換用のモジュールも(さまざまな事情から)何種類もあったため、足の配置が違うことで何個も発熱させてダメにしてしまいました。同じ製品で揃えておけばよかったと後悔。また、次に使う時のために足の配置はメモにして残しておくといいと思います。
秋月電子通商などで購入した場合は、製品のデータシートがあるので繋げる前に必ず確認しておこう!

ジャンパ線の色も揃えるとわかりやすい

電子工作に慣れている人には笑われるかもしれませんが、同じ構成のものをいくつか作る場合、ジャンパ線の色も揃えておくとわかりやすいです。「LEDの足の長い方ってどっちに挿すんだっけ?」というのが減り、トラブル防止になります。

LEDの足の見分け方

簡単な覚え方として、以下を参考にしてください。

短い方 ➡️ マイナス(-) ➡️ GND側
長い方 ➡️ プラス(+) ➡️ 電源側(Arduinoだと数字の書いてあるところ)

ブザー

今回使用しやブザーは電圧をかけるだけで鳴るタイプ(圧電ブザー)にしました。ELEGOOのキットに入っているものを使いましたが、同じ物を秋月でも買えます。

  • 長い足 → +(プラス / VCC)
  • 短い足 → −(マイナス / GND)

Arduinoなどに接続する場合

  • GNDピン → 短い足(−側)
  • デジタルピン(例: 8番ピンなど) → 長い足(+側)

作成にあたり以下のサイトを参考にしたました

ショップ一覧・便利なリンク

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

目次