microbit_raygun
PublicLoading…
micro:bit 射的ゲーム (microbit_raygun)
micro:bit と赤外線を使った射的ゲームです。銃・的・得点表示のすべてを micro:bit で組み、 基板は KiCad、筐体は 3D プリンタで自作できます。
- 銃 … トリガーを引くと赤外線(NEC)を発射。バレル内のモーターが振動して反動を演出します。
- 的 … 赤外線を受信すると NeoPixel が撃った人の色に光り、サーボで的が倒れます。
- 得点表示 … 無線で命中を受け取り、MAX7219 ドットマトリクスに得点を表示。25 秒の時間制限つき。
最大 3 丁(白 / 青 / 赤)の銃で対戦できます。
|
このページを共有するための QR コードです。 イベントや勉強会で、参加者に作り方を持ち帰ってもらうときに使ってください。 https://github.com/taikiishii/microbit_raygun |
📷 写真は準備中です。 完成写真と組み立て途中の写真は追って追加します。
目次
ゲームの流れ
- 得点表示 micro:bit の電源を入れると開始音(ソ・ソ・ソ・ド)が鳴り、ゲーム開始。
- 25 秒間、LED マトリクスに得点、micro:bit の 5×5 LED に残り時間が渦巻き状に表示されます。
- 銃のトリガーを引くと赤外線が発射され、micro:bit の LED にビーム状のアニメーションが出ます。
- 的に命中すると NeoPixel リングが撃った人の色に光り、ブザーが鳴ってサーボが的を倒します。
- 0〜3 秒のランダムな待ち時間のあと、的が起き上がって再び狙えるようになります。
- 25 秒経過で終了音が鳴りゲーム終了。ボタン A で得点をリセットして再スタートします。
システム構成
┌──────────────┐ 赤外線 (NEC) ┌───────────────┐
│ 銃 (raygun) │ ‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑> │ 的 (target) │
│ micro:bit │ 0x08F71FE0 他 │ micro:bit │
└──────────────┘ └───────┬───────┘
│ 無線 (group 141)
│ "white"/"blue"/"red"
v
┌───────────────┐
│得点 (counter) │
│ micro:bit │
│ + MAX7219 │
└───────────────┘
的の足元には 電源基板 (base) があり、電池 / USB-C から取った 5V をサーボへ、 降圧モジュールで作った 3.3V を的基板へ配ります。
赤外線コード(プレイヤー識別)
| プレイヤー | IR データグラム | NeoPixel の色 | 無線メッセージ |
|---|---|---|---|
| 白 | 0x08F71FE0 | WHITE | white |
| 青 | 0x08F71EE1 | BLUE | blue |
| 赤 | 0x08F71AE5 | RED | red |
BOM(部品表)
以下は 銃 1 丁 + 的 1 台 + 得点表示 1 台 の 1 セット分です。 銃・的を増やす場合はそれぞれの表を人数分・的の数だけ用意してください。
共通
| 部品 | 数量 | 備考 | 購入元 |
|---|---|---|---|
| micro:bit v2 | 3 | 銃 / 的 / 得点表示 に各 1 | www.switch-science.com/products/7952 |
銃 (raygun) — 1 丁分
KiCad プロジェクト: pcb/raygun/
| Ref | 部品 | 定数 / 型番 | 数量 | フットプリント | 備考 | 購入元 |
|---|---|---|---|---|---|---|
| D2 | 赤外線 LED | OSI5LA5113A | 1 | R_Vertical | 940nm / 5mm 砲弾型。P2 から駆動。基板に直付け(配線で延長しない) | akizukidenshi.com/catalog/g/g112612 |
| R2 | 抵抗 | 75 Ω | 1 | R_Hirizontal | 赤外線 LED の電流制限 | akizukidenshi.com/catalog/g/g125750 |
| R1 | 抵抗 | 750 Ω | 1 | R_Hirizontal | Q1 のベース抵抗 | akizukidenshi.com/catalog/g/g125751 |
| Q1 | NPN トランジスタ | 2SC1815 | 1 | TO-92 | 振動モーター駆動(P1) | akizukidenshi.com/catalog/g/g117089 |
| D1 | ダイオード | 1N4148 | 1 | DO-35 (7.62mm 横置き) | モーターの逆起電力保護 | akizukidenshi.com/catalog/g/g100941 |
| SW1 | スライドスイッチ | SPDT | 1 | 1×3 ピンヘッダ 2.54mm | 電源スイッチ | akizukidenshi.com/catalog/g/g115707 |
| Batt1 | ミニ端子台 | 2P / 2.54mm ピッチ | 1 | TB_2P_mini | 電池入力 | akizukidenshi.com/catalog/g/g114217 |
| Trig1 | ミニ端子台 | 2P / 2.54mm ピッチ | 1 | TB_2P_mini | トリガースイッチ | akizukidenshi.com/catalog/g/g114217 |
| Mot1 | ミニ端子台 | 2P / 2.54mm ピッチ | 1 | TB_2P_mini | 振動モーター | akizukidenshi.com/catalog/g/g114217 |
| — | トリガー用プッシュスイッチ | 1 | Trig1 に配線 | www.amazon.co.jp/dp/B0822GHZ36 | ||
| — | 振動モーター | Mini vibration motor 2.0mm | 1 | Mot1 に配線 | akizukidenshi.com/catalog/g/g116777 | |
| — | 電池ボックス | 単4×2(3V) | 1 | Batt1 に配線(micro:bit の 3V へ直結) | akizukidenshi.com/catalog/g/g100348 | |
| — | M3 皿ネジ | M3×15mm | 5 本 | 頭を micro:bit 側にして u1 の Ø4mm 穴で共締め(導通を兼ねる) | ||
| — | M3 ナット | M3 | 5 個 | 上記皿ネジと組で締結 |
🔌 端子台は XH コネクタ・ピンヘッダ・直付けでも代用できます。
Batt1 / Trig1 / Mot1 のフットプリント
TB_2P_miniは 2.54mm ピッチのスルーホール 2 個 (ドリル Ø1.0mm)なので、以下のどれでも実装できます。手持ちの工具に合わせて選んでください。
実装方法 必要な工具 特徴 2P ミニ端子台 精密ドライバー 工具のハードルが最も低い。BOM の既定 XH コネクタ(2.5mm ピッチ) 圧着ペンチ 着脱しやすく配線がすっきりする。作者はこれを使用 ピンヘッダ + コネクタ 圧着ペンチ 同上 配線をそのままはんだ付け はんだごてのみ 追加部品ゼロ。分解はしにくくなる XH は 2.5mm ピッチですが、2 極なら 2.54mm ピッチの穴にそのまま挿さります。 圧着工具がない場合は直付けで問題ありません。
電源基板の T1 も同じフットプリントなので、同じ 4 通りから選べます。 作者は T1 にも XH コネクタを使っていますが、問題は出ていません。 サーボの停動電流は 2.5A 前後ですが、的を倒して起こすだけの動作では停動状態が続かないため、 XH の定格 3A で足ります。配線材だけは細くしすぎないようにしてください。
⚠️ トリガーのスイッチは消耗品と考えてください。
トリガーに使っているプッシュスイッチは耐久性が高くありません。イベントなどで 一日中使うと接触不良を起こすことがあります(引いても発射されなくなる)。
長時間の運用が見込まれる場合は、次の 2 点を勧めます。
- 予備のスイッチを用意しておく(銃の数 + 数個)
- Trig1 を端子台か XH コネクタにしておく(上記の代替手段を参照)。 直付けにすると、交換のたびにはんだごてが必要になります
会場ではんだ付けをするのは現実的ではないので、抜き差しで交換できる状態にしておくと安心です。
🔋 電池ボックスのスイッチは使いません。
指定の電池ボックス(単4×2)にはスイッチが付いていますが、蓋付きでスイッチなしの製品が 見つからなかったための選択です。電源スイッチは基板の SW1 なので、電池ボックス側の スイッチは常時 ON のままにしておいてください。
micro:bit に付属の電池ボックスでも動きますが、専用コネクタを切り落として はんだ付けし直す必要があります。付属品を潰すことになるので、別途用意するほうを勧めます。
的 (target) — 1 台分
KiCad プロジェクト: pcb/target/
| Ref | 部品 | 数量 | フットプリント | 接続先 | 購入元 |
|---|---|---|---|---|---|
| J1 | ピンヘッダ 1×3 | 1 | 2.54mm | NeoPixel(GND / 3V / data=P0) | |
| J2 | ピンヘッダ 1×1 | 1 | 2.54mm | サーボ信号(P1) | |
| J3 | ピンヘッダ 1×3 | 1 | 2.54mm | 赤外線受信モジュール(signal=P2 / GND / 3V) | |
| J4 | ピンヘッダ 1×1 | 1 | 2.54mm | 3V 取り出し | |
| J5 | ピンヘッダ 1×1 | 1 | 2.54mm | GND 取り出し | |
| — | NeoPixel リング 24 球 | 1 | neopixel.create(P0, 24, RGB) | www.amazon.co.jp/dp/B0BJ51W6DT | |
| — | 赤外線受信モジュール | 1 | OSRB38C9AA | 38kHz / NEC プロトコル | akizukidenshi.com/catalog/g/g104659 |
| — | サーボモーター | 1 | MG996R | 90°=起立 / 160°=転倒 | akizukidenshi.com/catalog/g/g112534 |
| — | M3 皿ネジ | 5 本 | M3×20mm | 頭を micro:bit 側にして u1 の Ø4mm 穴で共締め(導通を兼ねる) | |
| — | M3 ナット | 5 個 | M3 | 上記皿ネジと組で締結 |
電源基板 (base) — 的 1 台分
KiCad プロジェクト: pcb/base/
| Ref | 部品 | 数量 | フットプリント | 接続先 | 購入元 |
|---|---|---|---|---|---|
| u1 | USB-C 電源コネクタ | 1 | USB-C_power_connector | 5V 入力(電源のみ) | akizukidenshi.com/catalog/g/g116895 |
| T1 | ミニ端子台 2P | 1 | TB_2P_mini(2.54mm ピッチ) | 電池入力(5V / GND) | akizukidenshi.com/catalog/g/g114217 |
| J2 | ピンヘッダ 1×3 | 1 | 2.54mm | DC-DC モジュール(3V / 5V / GND) | |
| J1 | ピンヘッダ 1×3 | 1 | 2.54mm | サーボ(signal / 5V / GND) | |
| J3 | ピンヘッダ 1×3 | 1 | 2.54mm | 的基板へ(signal / 3V / GND) | |
| — | M3 ネジ | 2 本 | M3×10mm | 的台側の Ø3mm 穴へねじ込み(ナット不要) | |
| — | 降圧モジュール | 1 | AMS1117-3.3 | 5V → 3.3V。J2(シルクはdcdc)に接続 | www.amazon.co.jp/dp/B07FZ17B7D |
| — | 電池ボックス(5V 系) | 1 | 単3×4(6V) | T1 に接続。USB-C 給電時は不要 | akizukidenshi.com/catalog/g/g103085 |
| — | USB-A → USB-C ケーブル | 1 | 給電用 | u1 に接続。電池ボックス使用時は不要 | |
| — | USB 充電器(AC アダプタ) | 1 | USB-A 出力 / 5V / 2A 以上 | 上記ケーブルに接続 |
サーボは 5V 系から直接、micro:bit は AMS1117-3.3 で作った 3.3V から給電します。 サーボの制御信号は電源基板を経由して的基板の P1 につながります。 基板のシルクは
3V表記ですが、実際の電圧は 3.3V です。
USB 給電について
USB-A → USB-C ケーブルと、USB-A 出力の充電器を使ってください。 作者もこの組み合わせで動作を確認しています。
充電器は 5V / 2A 以上を目安にしてください。サーボ(MG996R)と micro:bit、 NeoPixel 24 球を同時にまかなう必要があります。
📌 USB-C 同士のケーブルは使えません。 電源基板の USB-C コネクタ(u1)は 5V と GND の 2 ピンだけを配線した電源専用で、 CC(Configuration Channel)のプルダウン抵抗が基板上にありません。 USB-C の給電側は、受電側の CC ピンに 5.1kΩ があることを確認してから VBUS を出す仕様なので、 C-to-C ケーブルと USB-C 充電器の組み合わせでは電気が流れません。
USB-A 側は常時 5V が出ているため、この制約を受けません。 給電されない場合は、まずケーブルが USB-A → USB-C になっているか確認してください。
⚠️ 電池と USB-C を同時に接続しないこと
給電は電池ボックスか USB-C の「どちらか一方」だけにしてください。
電源基板では、電池端子(T1)と USB-C コネクタ(u1)が同じ電源ラインに直結されています。 逆流防止のダイオードやスイッチは入っていません。そのため両方をつなぐと、 電圧の高いほうから低いほうへ電流が流れ込みます。
| 状態 | 起きること |
|---|---|
| 電池が消耗(4.5V)< USB(5V) | USB から乾電池へ逆充電される |
| 電池が新品(6V)> USB(5V) | 電池から USB ポートへ逆流する |
単3アルカリ乾電池は充電できません。逆充電すると発熱・液漏れ・破裂のおそれがあります。 また USB ポート側へ電流が逆流すると、PC や USB 電源アダプタを傷めることがあります。
USB-C で給電するときは、電池ボックスの配線を T1 から外すか、電池を抜いておいてください。
micro:bit がリセットする場合の対策
的が倒れる瞬間に micro:bit がリセットしたり、NeoPixel がちらついたりする場合は、 サーボの突入電流による電圧降下が原因です。
MG996R は停動時に 2.5A 前後を消費します。単3アルカリ乾電池は内部抵抗が大きいため、 この電流が流れた瞬間に 5V ラインが大きく落ち込みます。同じラインから AMS1117-3.3 を 経由して micro:bit へ給電しているので、レギュレータの入力が不足して micro:bit がリセットに至ります。
対策として、5V ラインと GND の間に大容量の電解コンデンサを追加してください。 サーボが電流を要求した瞬間にコンデンサが放電して電圧降下を埋めます。
| 項目 | 推奨 |
|---|---|
| 容量 | 470〜1000 µF(大きいほど効果的) |
| 耐圧 | 16V 以上(6V 入力に対して十分な余裕を確保) |
| 取り付け位置 | T1(電池入力)または J2(dcdc)の 5V–GND 間、できるだけサーボの近く |
極性に注意してください。 電解コンデンサは向きを間違えると破裂します。 帯(マイナス表示)のある側を GND につなぎます。
それでも改善しない場合は、電池を内部抵抗の低いニッケル水素充電池に替えるか、 サーボ用と micro:bit 用で電源を分けてください(GND は共通にします)。
得点表示 (counter)
専用基板はありません。micro:bit にモジュールを直接配線し、3D プリント部品に固定します。
| 部品 | 数量 | 仕様 / 接続 | 購入元 |
|---|---|---|---|
| MAX7219 8×8 ドットマトリクス 4 連 | 1 | CS(LOAD)=P1 / DIN(MOSI)=P2 / CLK(SCK)=P0 | www.amazon.co.jp/dp/B084VP2J2T |
| 電池ボックス | 1 | 単3×2(3V) | akizukidenshi.com/catalog/g/g100327 |
| M3 皿ネジ | 5 本 | M3×15mm。3D プリント部品へ固定 | |
| M3 ナット | 5 個 | 上記皿ネジと組で締結 | |
| 丸型圧着端子(M3 用) | 7 個 | R1.25-3 等。配線をネジへ確実に留める(推奨) |
MAX7219 の MISO は使用しないため配線不要です(MakeCode のブロック上では P16 が
割り当てられていますが、MISO(not used) と表示されるとおり結線しません)。
使用する信号は P0 / P1 / P2 / 3V / GND の 5 本のみで、すべて micro:bit のリング端子に 出ています。したがってエッジコネクタのブレイクアウトは不要で、銃・的と同じく 皿ネジの頭を micro:bit 側に向けて Ø4mm 穴に通し、ネジ自体を配線として使えます。 MAX7219 と電池ボックスの配線は、ナットで締め付けて各ネジに共締めします。
配線の端は**丸型圧着端子(M3 用、R1.25-3 等)**にしておくと確実です。 被覆をむいた芯線をそのまま巻きつけるより接触が安定し、ナットを緩めても線が抜けません。 圧着ペンチが用意できる場合はこの方法を推奨します。用意できない場合は、 芯線をネジに時計回りに巻きつけ、ナットでしっかり締め付けてください。
必要な端子は 7 個です。
| ネジ | 接続する線 | 端子数 |
|---|---|---|
| P0 | MAX7219 CLK | 1 |
| P1 | MAX7219 CS | 1 |
| P2 | MAX7219 DIN | 1 |
| 3V | MAX7219 VCC + 電池ボックス(+) | 2 |
| GND | MAX7219 GND + 電池ボックス(−) | 2 |
🔋 電池は単3を使ってください。
MAX7219 のドットマトリクス 4 連は表示に電力を使うため、単4 では持ちが悪くなります。 容量の大きい単3×2 を推奨します。
得点表示には基板がなく電源スイッチもないため、電池ボックス側のスイッチがそのまま 電源スイッチになります(電源基板も同様です)。
3D プリント部品は counter.3mf(LED プレート、140 × 23 × 120 mm)です。
消耗品・材料(全体で共通)
基板やモジュールのほかに、以下が必要です。数量は 1 セット分の目安です。
| 部材 | 数量の目安 | 用途 | 購入元 |
|---|---|---|---|
| 配線材(AWG24〜26) | 各色 1〜2m | 各基板とモジュール間の接続 | |
| 強力両面テープ | 1 巻 | 電池ボックス・サーボ・MAX7219 を 3D プリント部品へ固定 | |
| 熱収縮チューブ | 適量 | はんだ付け部の絶縁。絶縁テープでも可 | |
| 結束バンド | 適量 | グリップ内の配線のまとめ | |
| はんだ | 適量 | ヤニ入り Ø0.6〜0.8mm | |
| PLA フィラメント | 約 500g | 3D プリント部品一式(3D プリント部品を参照) |
主な配線箇所は以下のとおりです。
| 対象 | 配線先 |
|---|---|
| 銃 | トリガースイッチ / 振動モーター / 電池ボックス / スライドスイッチ |
| 的 | NeoPixel リング / 赤外線受信モジュール / サーボ信号 |
| 電源基板 | 電池ボックス / 降圧モジュール / サーボ / 的基板 |
| 得点表示 | MAX7219 / 電池ボックス |
工具
詳細と選び方は 必要な道具 を参照してください。買い物リストとしては以下のとおりです。
必須 … 3D プリンタ / はんだごて・こて台 / ニッパー / ワイヤーストリッパー / プラスドライバー #2(M3 ネジ用)/ 精密ドライバー(ミニ端子台用)/ スパナ 5.5mm またはラジオペンチ / テスター / PC + データ通信対応 USB ケーブル
あると良い … 圧着ペンチ(丸型端子・XH 用)/ ピンセット / はんだ吸い取り線 / ヒートガンまたはライター / デザインナイフ・棒やすり / Ø3mm ドリルまたはリーマー
基板 (KiCad)
KiCad 10.0 で作成しています。3 枚とも 2 層基板、V-Cut による面付け済みです。
| プロジェクト | 基板サイズ | 面付け | パネルサイズ | ガーバー |
|---|---|---|---|---|
| pcb/raygun/ | 52 × 39.5 mm | 2 面付け | 52 × 89 mm | raygun.zip |
| pcb/target/ | 52 × 30 mm | 3 面付け | 52 × 90 mm | target.zip |
| pcb/base/ | 42 × 18 mm | 10 面付け (2×5) | 84 × 90 mm | base.zip |
回路図と基板レイアウト
| 銃 (raygun) | 的 (target) | 電源基板 (base) |
|---|---|---|
![]() | ![]() | ![]() |
![]() | ![]() | ![]() |
上段が回路図、下段が基板レイアウト(F.Cu / B.Cu / F.Silkscreen / Edge.Cuts)です。 画像をクリックすると原寸で表示されます。レイアウトは面付け後のパネル全体を示しています。
各 gerber/ ディレクトリの ZIP をそのまま基板製造サービスへ入稿できます。
注文時は「V-Cut あり」を選択してください。
⚠️ 現在のガーバーデータでは V-Cut が入らないことがあります(既知の問題・修正予定)
公開しているガーバーデータでは、PCB ベンダーによっては V-Cut を入れてもらえません。 V-Cut の位置を基板外形の外側にシルク文字(
V-Cut ->/<- V-Cut)で示しているだけで、 加工用のレイヤーに罫書き線を入れていないためです。外形線の外側のシルクは製造時に 削られることが多く、ベンダー側が位置を読み取れない場合があります。当面は次のいずれかで対応してください。
- 注文時の備考欄で V-Cut の位置を指示する(上のレイアウト画像が位置の目安になります)
- V-Cut なしで発注し、切り分けは自分で行う。基板は 1.6mm 厚なので、 PCB カッターや糸鋸で切断できます。切断後は断面をやすりで整えてください
V-Cut 加工に対応したガーバーデータは後日更新します。
micro:bit の取り付け
銃・的の基板には micro:bit のエッジコネクタのリング端子(P0 / P1 / P2 / 3V / GND、 中心から ±11.75mm / ±21.5mm)に合わせた Ø4mm のスルーホールが並んでいます。 micro:bit をこの上に重ねてネジ留めすると、固定と配線を同時に行えます。 コネクタもはんだ付けも不要で、micro:bit を無傷のまま何度でも付け外しできます。
締結の構造 — ネジ自体が配線になる
micro:bit と基板の間には 3D プリント部品が挟まります。樹脂は絶縁体なので、 信号はネジの軸そのものを通って micro:bit から基板へ伝わります。 上端の皿頭で micro:bit のリング端子に、下端のナットで基板のパッドに接触させる仕組みです。
▼ M3 皿ネジ(頭は micro:bit 側)
\__/ ← 導通点 1 : 円錐面がリング端子の穴縁に全周で密着
━━━━━━━━━━━ micro:bit(リング端子 Ø4mm)
▨▨▨▨▨▨▨▨▨▨▨ 3D プリント部品(絶縁スペーサー)
━━━━━━━━━━━ 基板(microbit_holes スルーホール Ø4mm)
▓▓ ← 導通点 2 : M3 ナットが基板のパッドに密着
銃・的とも積層順は micro:bit → 3D プリント部品 → 基板 → ナット で共通です。 ネジ長が銃 15mm / 的 20mm と異なるのは、間に挟まる 3D プリント部品の厚みの差によります。
ネジが指定より長くても導通と固定には影響しませんが、基板の裏側に軸が余分に突き出して配線や筐体と干渉します。手持ちで代用する場合も、できるだけ指定に近い長さを選んでください。
⚠️ 組み立て時の注意
- 皿ネジの頭は必ず micro:bit 側に向けること。逆向きに入れると円錐面がリング端子に 当たらず、導通が不安定になるか、まったく通じません。もっとも間違えやすい箇所です。
- ネジとナットは金属製を使うこと。軸が導体を兼ねるため、樹脂ネジでは動作しません。
- ナットは基板のパッドにしっかり締め付けること。緩いと接触抵抗が上がり、 誤動作や動作不良の原因になります。
- 5 本のネジはそれぞれ P0 / P1 / P2 / 3V / GND の独立した信号線です。 ワッシャーや金属片でネジ同士が短絡しないよう注意してください。
独自ライブラリ
一部のシンボル / フットプリントは独自ライブラリを使用しており、pcb/library/ に同梱しています。
各プロジェクトの sym-lib-table / fp-lib-table から相対パスで参照しているため、
clone 後に追加設定なしで基板を開けます。
| ライブラリ | 内容 |
|---|---|
00_MyLibrary | microbit_holes, TB_2P_mini, USB-C_power_connector |
00_MyFootPrintLibrary | 上記 +R_Hirizontal, R_Vertical |
詳細は pcb/library/README.md を参照してください。
3D プリント部品
model/ 以下に 3MF 形式で置いています。
| 外観 | ファイル | 名称 | 概略サイズ (mm) | 用途 |
|---|---|---|---|---|
| grip.3mf | グリップ | 106 × 60 × 113 | 銃のグリップ | |
| barrel.3mf | 銃身 | 30 × 250 × 30 | 銃身。長さが照準の難易度を決める | |
| muzzle.3mf | 銃口 | 36 × 10 × 40 | 銃口。赤外線の出口を絞る | |
| battery_box_plate.3mf | 電池ボックス取付板 | 18 × 60 × 26 | 電池ボックスの固定 | |
| microbit_base.3mf | micro:bit 台 | 52 × 5 × 6 | 基板下の受け(基板幅 52mm に対応) | |
| target.3mf | 的 | 105 × 27.5 × 172 | 倒れる的本体 | |
| base.3mf | 的台 | 160 × 30 × 70 | 的の土台(サーボ・電源基板を収納) | |
| counter.3mf | LED プレート | 140 × 23 × 120 | 得点表示の台(micro:bit と MAX7219 を保持) |
画像は 3MF から生成した参考イメージです。実物の色は使用するフィラメントによります。
推奨プリント設定
| 項目 | 値 |
|---|---|
| 材料 | PLA |
| レイヤー高さ | 0.2 mm |
| インフィル | 15 % |
| サポート | グリップ、ターゲットのみ必要 |
必要な道具
必須
| 道具 | 用途 |
|---|---|
| 3D プリンタ | model/ の 3MF を出力する。FDM で可 |
| はんだごて・はんだ・こて台 | 基板への部品実装と配線の接続 |
| ニッパー | 部品のリード切断、配線の切断 |
| ワイヤーストリッパー | 配線の被覆むき。ニッパーでも代用できるが芯線を切りやすい |
| プラスドライバー(#2) | M3 皿ネジの締結 |
| 精密ドライバー(マイナス 2mm 前後) | 2P ミニ端子台のネジ(銃の Batt1 / Trig1 / Mot1、電源基板の T1 の計 4 個)。ネジ頭の形状に合うものを用意 |
| スパナ(5.5mm)またはラジオペンチ | M3 ナットを押さえながらネジを締める |
| テスター(マルチメータ) | 導通確認。 下記の理由で本プロジェクトでは特に重要 |
| PC + micro:bit 用 USB ケーブル | プログラムの書き込み。充電専用ではなくデータ通信対応のものを使う |
📏 テスターは省略しないでください。 micro:bit と基板の接続は皿ネジとナットの締め付けだけで成り立っています (micro:bit の取り付けを参照)。 はんだ付けと違って目視で良否を判断できないため、組み立て後に P0 / P1 / P2 / 3V / GND の 5 本すべてで、micro:bit のリング端子と基板のパッド間の導通 を確認してください。動かない場合の原因は、ほぼここか皿ネジの向きです。
あると作業が楽
| 道具 | 用途 |
|---|---|
| 圧着ペンチ | 得点表示の丸型圧着端子、銃の XH コネクタを使う場合。なくても組める |
| ピンセット | 小さい部品の保持 |
| はんだ吸い取り線 | 付け直しのリカバリ |
| ヒートガンまたはライター | 熱収縮チューブの加熱 |
| デザインナイフ・棒やすり | 3D プリント部品のサポート除去とバリ取り |
| Ø3mm ドリルまたはリーマー | 3D プリント部品の穴の仕上げ(収縮で狭くなることがある) |
| 定規または金属板 | V-Cut の面付け基板を折り分けるときの当て木がわり |
基板は 3 枚とも V-Cut で面付けされています。溝に沿って手で折り分けられますが、 部品を実装する前に折っておくと作業が楽です。
消耗品
配線材・両面テープ・熱収縮チューブなどは BOM の「消耗品・材料」にまとめてあります。
はんだ付け部の絶縁は必ず行ってください。micro:bit を留めるネジ 5 本は P0 / P1 / P2 / 3V / GND の独立した信号線なので、短絡すると動作しません。
組み立て
※ このセクションは写真と併せて後で詳細化してください。
銃
- raygun 基板に抵抗・ダイオード・トランジスタ・端子台・ピンヘッダをはんだ付けする。
- 赤外線 LED(D2)は基板に直付けする(配線で延長しない。理由は下記)。
- micro:bit → 3D プリント部品 → 基板 → ナット の順に重ね、M3 皿ネジ 15mm ×5 で共締めする。 皿ネジの頭は micro:bit 側に向けること(ネジの軸が配線を兼ねる)。
- グリップ・銃身・銃口を組み、電池ボックスとトリガースイッチを取り付ける。
- Batt1 / Trig1 / Mot1 の各端子台に配線する。
🎯 赤外線 LED は基板に直付けします。 銃口まで配線を延ばしたくなりますが、そうしないでください。 赤外線 LED は指向性が広く、そのままだと大雑把に向けただけで的に当たってしまいます。 LED を基板上(銃身の根元)に置くと、銃身が長い筒として働いて赤外線の広がりを絞り、 きちんと狙わないと当たらなくなります。銃身の長さ 250mm がそのまま照準の難易度です。
難易度を変えたい場合は barrel.3mf の長さを調整してください。 長くすると狙いがシビアに、短くすると当たりやすくなります。
的
- target 基板にピンヘッダをはんだ付けする。
- micro:bit → 3D プリント部品 → 基板 → ナット の順に重ね、M3 皿ネジ 20mm ×5 で共締めする。 皿ネジの頭は micro:bit 側に向けること(ネジの軸が配線を兼ねる)。
- NeoPixel リング(J1)、赤外線受信モジュール(J3)、サーボ信号(J2)を配線する。
- 的台に base 基板を M3 ネジ 10mm ×2 で固定し(的台側の Ø3mm 穴へ直接ねじ込む)、 DC-DC モジュールとサーボを組み込む。
- base 基板の
targetコネクタと target 基板の 3V / GND / サーボ信号をつなぐ。 - 電池ボックス または USB-C から給電する(両方を同時に接続しないこと)。
得点表示
- micro:bit を 3D プリント部品に M3 皿ネジ 15mm ×5 で固定する(頭は micro:bit 側)。
- MAX7219 4 連ドットマトリクスを配線する(CS=P1 / DIN=P2 / CLK=P0)。MISO は配線不要。
- 電池ボックス(単3×2)を 3V / GND につなぐ。
ソフトウェアの書き込み
プログラムは Microsoft MakeCode for micro:bit で作成しています。 書き込み方法は 2 通りあります。
方法 1: MakeCode の共有リンクから開く(おすすめ)
以下のリンクを開くと、拡張機能が組み込まれた状態のプロジェクトがそのまま開きます。 「ダウンロード」を押して .hex を micro:bit に書き込むだけです。
| 書き込み先 | プロジェクト名 | 共有リンク |
|---|---|---|
| 銃の micro:bit | 光線銃 | https://makecode.microbit.org/S24150-85502-49446-25485 |
| 的の micro:bit | 射的の的(MG996R) マルチカラー | https://makecode.microbit.org/S01061-17411-65606-08903 |
| 得点表示の micro:bit | 射的のカウンタ(マルチカラー) | https://makecode.microbit.org/S24032-55875-93759-68092 |
複数の銃を作る場合は、銃のプロジェクトを開いてから赤外線コードを書き換え、 カスタマイズの手順で色ごとに .hex を作ってください。
方法 2: リポジトリのソースから作る
code/ の各ファイルを MakeCode の Python エディタに貼り付けてビルドします。 この場合は拡張機能を手動で追加する必要があります。
| ファイル | 書き込み先 | 必要な拡張機能 |
|---|---|---|
| code/raygun.py | 銃の micro:bit | MakerBit IR Transmitter |
| code/target.py | 的の micro:bit | MakerBit IR Receiver, NeoPixel, Radio |
| code/counter.py | 得点表示の micro:bit | MAX7219 マトリクス, Radio |
拡張機能の追加方法
MakeCode の「拡張機能」から以下を検索、または URL を直接入力して追加します。
| 拡張機能 | URL | 使う基板 |
|---|---|---|
| MakerBit IR Transmitter | https://github.com/1010Technologies/pxt-makerbit-ir-transmitter | 銃 |
| MakerBit IR Receiver | https://github.com/1010Technologies/pxt-makerbit-ir-receiver | 的 |
| MAX7219 マトリクス | https://github.com/alankrantas/pxt-MAX7219_matrix | 得点表示 |
| NeoPixel | 標準搭載 | 的 |
赤外線の送信と受信は別々の拡張機能です。銃には Transmitter、的には Receiver を追加してください。
どちらも makerbit 名前空間のブロックを提供します。
無線設定
的と得点表示は 無線グループ 141 で通信します。複数セットを同じ会場で使う場合は、
target.py と counter.py の radio.set_group(141) を揃えて別の番号に変更してください。
カスタマイズ
銃を増やす(プレイヤーを増やす)
code/raygun.py の送信コードを、銃ごとに書き換えてください。
makerbit.send_ir_datagram("0x08F71FE0") # 白
# makerbit.send_ir_datagram("0x08F71EE1") # 青
# makerbit.send_ir_datagram("0x08F71AE5") # 赤
的側 code/target.py はこの 3 コードに対応済みです。 4 人目以降を追加する場合は、的側の分岐と得点表示側の集計も追加してください。
ゲーム時間を変える
code/counter.py の if timer > 25: を変更します(初期値 25 秒)。
micro:bit の 5×5 LED による残り時間表示も 25 秒前提で作られているため、
あわせて on_forever() 内の elif timer <= N: の並びも調整してください。
的が倒れている時間を変える
code/target.py の basic.pause(randint(0, 3000)) を変更します(0〜3 秒)。
サーボの角度を変える
同じく code/target.py の pins.servo_write_pin(AnalogPin.P1, 160)(転倒)と
90(起立)を、的の機構に合わせて調整してください。
イベントでの運用
実際にイベントで運用して分かったことをまとめます。
電池の持ち
いずれも十分な余裕があり、イベント中の交換はほぼ不要です。
| 対象 | 電池 | 持ち |
|---|---|---|
| 的 | 単3×4 | 丸一日のイベントで足りる |
| 銃 | 単4×2 | 数日もつ |
| 得点表示 | 単3×2 | 数日もつ |
的がもっとも消費が大きいのは、サーボと NeoPixel 24 球を動かすためです。 それでも一日は保ちますが、複数日のイベントでは的だけ予備を用意しておくと安心です。
射距離と的の配置
射距離は 2〜3m がちょうどよいです。近すぎると簡単すぎ、遠すぎると当たらなくなります。
的の受光角度は意外と狭いので、的を射手のほうに向けて配置してください。 横を向いていると、正しく狙っていても反応しません。的を複数並べる場合は、 すべてが射手の側を向くように角度をつけると快適に遊べます。
当たりにくい・当たりやすいと感じたら、barrel.3mf の長さで調整できます (銃身が長いほど赤外線の広がりが絞られ、狙いがシビアになります)。
混信に注意
周囲に micro:bit の無線や Bluetooth を使う機器があると、得点表示が不正確になります。 的から得点表示への通知は micro:bit の無線(2.4GHz 帯)で飛ばしているため、 同じ帯域が混み合うとパケットが届かなかったり、他の micro:bit の電波を拾ったりします。
学校やイベント会場で他の micro:bit が動いている場合は、特に起こりやすくなります。 対策として次を試してください。
radio.set_group(141)のグループ番号を変える。他の micro:bit との混同を避けられますradio.set_frequency_band()で周波数を変える(0〜83、既定は 7)。 Bluetooth のアドバタイズは 2402 / 2426 / 2480MHz(バンド 2 / 26 / 80)を使うため、 そこから離れたバンドを選ぶと改善することがあります- ゲームの合間に得点表示のボタン A でリセットし、ズレを持ち越さないようにする
なお、無線が届かなかった場合でも的は正常に倒れます。ズレるのは得点だけです。
消耗品
トリガーのプッシュスイッチは一日の運用で接触不良を起こすことがあります。 予備の確保と、はんだ付けなしで交換できる実装(端子台や XH コネクタ)を勧めます。 詳細は BOM の銃のセクションを参照してください。
ディレクトリ構成
microbit_raygun/
├── code/ MakeCode (Python) ソース
│ ├── raygun.py 銃
│ ├── target.py 的
│ └── counter.py 得点表示
├── model/ 3D プリント用 3MF
├── docs/images/ 回路図・基板レイアウトの画像
└── pcb/ KiCad プロジェクト
├── raygun/ 銃基板
├── target/ 的基板
├── base/ 電源基板
│ └── gerber/ 製造用ガーバー ZIP
└── library/ 独自シンボル / フットプリント
ライセンス
Copyright (c) 2026 Taiki Ishii
商用・非商用を問わず、利用・改変・再配布・改変物の再配布のすべてを許可します。 条件は著作権表示を残すことだけです。学校・イベント・企業研修などで自由にお使いください。
| 対象 | ライセンス | 全文 |
|---|---|---|
ソフトウェア(code/) | MIT License | LICENSE |
ハードウェア(pcb/, model/) | CC BY 4.0 | LICENSE-HARDWARE |
ドキュメント(README.md 等) | CC BY 4.0 | LICENSE-HARDWARE |
表示のしかた
再配布・改変物の公開・完成品の展示などの際は、以下のようなクレジットを添えてください。
microbit_raygun by Taiki Ishii — MIT (code) / CC BY 4.0 (hardware)
https://github.com/taikiishii/microbit_raygun
第三者の素材について
- 基板設計には KiCad 標準ライブラリのシンボル / フットプリントを使用しています。 KiCad ライブラリライセンス(CC-BY-SA 4.0 + 例外条項)には、ライブラリを利用した設計にライセンスが伝播しない旨の明示的な例外があるため、上記ライセンスで配布できます。
- MakeCode 拡張機能(MakerBit / MAX7219)は本リポジトリには含まれません。 各拡張機能のライセンスは配布元を参照してください。
公開前 TODO
- 独自 KiCad ライブラリの置き場所 pcb/library/ とライブラリテーブルを用意する
-
pcb/library/に実ファイル(.kicad_sym/.kicad_mod)をコピーする -
LICENSE(MIT)とLICENSE-HARDWARE(CC BY 4.0)を追加する -
.gitignoreを追加する(*-backups/,*.kicad_prl, 個別ガーバーを除外) - 不要なバックアップ ZIP と作業用
.kicad_prlを削除する - 完成写真・組み立て途中の写真を追加する
- 回路図・基板レイアウトの PNG を書き出して README に貼る
- BOM の
※要確認項目(型番・電池構成・降圧モジュールの仕様)を確定する - 3D プリントの推奨設定を確定する
- MakeCode の共有リンク(プロジェクト URL)を追加する






No comments yet. Be the first to ask about this board.