microbit_raygun

Public

@taikiishii

Share microbit_raygun

Check access before sharing the link.

Who can open this board

Anyone can open this board. No sign-in is required.

This link opens the latest version. Copying it does not grant additional access.

Loading 3D model… large boards can take a moment.

README

micro:bit 射的ゲーム (microbit_raygun)

micro:bit と赤外線を使った射的ゲームです。銃・的・得点表示のすべてを micro:bit で組み、 基板は KiCad、筐体は 3D プリンタで自作できます。

  • 銃 … トリガーを引くと赤外線(NEC)を発射。バレル内のモーターが振動して反動を演出します。
  • 的 … 赤外線を受信すると NeoPixel が撃った人の色に光り、サーボで的が倒れます。
  • 得点表示 … 無線で命中を受け取り、MAX7219 ドットマトリクスに得点を表示。25 秒の時間制限つき。

最大 3 丁(白 / 青 / 赤)の銃で対戦できます。

このページを共有するための QR コードです。
イベントや勉強会で、参加者に作り方を持ち帰ってもらうときに使ってください。

https://github.com/taikiishii/microbit_raygun

📷 写真は準備中です。 完成写真と組み立て途中の写真は追って追加します。


目次


ゲームの流れ

  1. 得点表示 micro:bit の電源を入れると開始音(ソ・ソ・ソ・ド)が鳴り、ゲーム開始。
  2. 25 秒間、LED マトリクスに得点、micro:bit の 5×5 LED に残り時間が渦巻き状に表示されます。
  3. 銃のトリガーを引くと赤外線が発射され、micro:bit の LED にビーム状のアニメーションが出ます。
  4. 的に命中すると NeoPixel リングが撃った人の色に光り、ブザーが鳴ってサーボが的を倒します。
  5. 0〜3 秒のランダムな待ち時間のあと、的が起き上がって再び狙えるようになります。
  6. 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 の色無線メッセージ
白0x08F71FE0WHITEwhite
青0x08F71EE1BLUEblue
赤0x08F71AE5REDred

BOM(部品表)

以下は 銃 1 丁 + 的 1 台 + 得点表示 1 台 の 1 セット分です。 銃・的を増やす場合はそれぞれの表を人数分・的の数だけ用意してください。

共通

部品数量備考購入元
micro:bit v23銃 / 的 / 得点表示 に各 1www.switch-science.com/products/7952

銃 (raygun) — 1 丁分

KiCad プロジェクト: pcb/raygun/

Ref部品定数 / 型番数量フットプリント備考購入元
D2赤外線 LEDOSI5LA5113A1R_Vertical940nm / 5mm 砲弾型。P2 から駆動。基板に直付け(配線で延長しない)akizukidenshi.com/catalog/g/g112612
R2抵抗75 Ω1R_Hirizontal赤外線 LED の電流制限akizukidenshi.com/catalog/g/g125750
R1抵抗750 Ω1R_HirizontalQ1 のベース抵抗akizukidenshi.com/catalog/g/g125751
Q1NPN トランジスタ2SC18151TO-92振動モーター駆動(P1)akizukidenshi.com/catalog/g/g117089
D1ダイオード1N41481DO-35 (7.62mm 横置き)モーターの逆起電力保護akizukidenshi.com/catalog/g/g100941
SW1スライドスイッチSPDT11×3 ピンヘッダ 2.54mm電源スイッチakizukidenshi.com/catalog/g/g115707
Batt1ミニ端子台2P / 2.54mm ピッチ1TB_2P_mini電池入力akizukidenshi.com/catalog/g/g114217
Trig1ミニ端子台2P / 2.54mm ピッチ1TB_2P_miniトリガースイッチakizukidenshi.com/catalog/g/g114217
Mot1ミニ端子台2P / 2.54mm ピッチ1TB_2P_mini振動モーターakizukidenshi.com/catalog/g/g114217
—トリガー用プッシュスイッチ1Trig1 に配線www.amazon.co.jp/dp/B0822GHZ36
—振動モーターMini vibration motor 2.0mm1Mot1 に配線akizukidenshi.com/catalog/g/g116777
—電池ボックス単4×2(3V)1Batt1 に配線(micro:bit の 3V へ直結)akizukidenshi.com/catalog/g/g100348
—M3 皿ネジM3×15mm5 本頭を micro:bit 側にして u1 の Ø4mm 穴で共締め(導通を兼ねる)
—M3 ナットM35 個上記皿ネジと組で締結

🔌 端子台は 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×312.54mmNeoPixel(GND / 3V / data=P0)
J2ピンヘッダ 1×112.54mmサーボ信号(P1)
J3ピンヘッダ 1×312.54mm赤外線受信モジュール(signal=P2 / GND / 3V)
J4ピンヘッダ 1×112.54mm3V 取り出し
J5ピンヘッダ 1×112.54mmGND 取り出し
—NeoPixel リング 24 球1neopixel.create(P0, 24, RGB)www.amazon.co.jp/dp/B0BJ51W6DT
—赤外線受信モジュール1OSRB38C9AA38kHz / NEC プロトコルakizukidenshi.com/catalog/g/g104659
—サーボモーター1MG996R90°=起立 / 160°=転倒akizukidenshi.com/catalog/g/g112534
—M3 皿ネジ5 本M3×20mm頭を micro:bit 側にして u1 の Ø4mm 穴で共締め(導通を兼ねる)
—M3 ナット5 個M3上記皿ネジと組で締結

電源基板 (base) — 的 1 台分

KiCad プロジェクト: pcb/base/

Ref部品数量フットプリント接続先購入元
u1USB-C 電源コネクタ1USB-C_power_connector5V 入力(電源のみ)akizukidenshi.com/catalog/g/g116895
T1ミニ端子台 2P1TB_2P_mini(2.54mm ピッチ)電池入力(5V / GND)akizukidenshi.com/catalog/g/g114217
J2ピンヘッダ 1×312.54mmDC-DC モジュール(3V / 5V / GND)
J1ピンヘッダ 1×312.54mmサーボ(signal / 5V / GND)
J3ピンヘッダ 1×312.54mm的基板へ(signal / 3V / GND)
—M3 ネジ2 本M3×10mm的台側の Ø3mm 穴へねじ込み(ナット不要)
—降圧モジュール1AMS1117-3.35V → 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 アダプタ)1USB-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 連1CS(LOAD)=P1 / DIN(MOSI)=P2 / CLK(SCK)=P0www.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 個です。

ネジ接続する線端子数
P0MAX7219 CLK1
P1MAX7219 CS1
P2MAX7219 DIN1
3VMAX7219 VCC + 電池ボックス(+)2
GNDMAX7219 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 フィラメント約 500g3D プリント部品一式(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 mm2 面付け52 × 89 mmraygun.zip
pcb/target/52 × 30 mm3 面付け52 × 90 mmtarget.zip
pcb/base/42 × 18 mm10 面付け (2×5)84 × 90 mmbase.zip

回路図と基板レイアウト

銃 (raygun)的 (target)電源基板 (base)
銃の回路図的の回路図電源基板の回路図
銃の基板レイアウト(2 面付け)的の基板レイアウト(3 面付け)電源基板のレイアウト(10 面付け)

上段が回路図、下段が基板レイアウト(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_MyLibrarymicrobit_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.3mfmicro:bit 台52 × 5 × 6基板下の受け(基板幅 52mm に対応)
target.3mf的105 × 27.5 × 172倒れる的本体
base.3mf的台160 × 30 × 70的の土台(サーボ・電源基板を収納)
counter.3mfLED プレート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 の独立した信号線なので、短絡すると動作しません。


組み立て

※ このセクションは写真と併せて後で詳細化してください。

銃

  1. raygun 基板に抵抗・ダイオード・トランジスタ・端子台・ピンヘッダをはんだ付けする。
  2. 赤外線 LED(D2)は基板に直付けする(配線で延長しない。理由は下記)。
  3. micro:bit → 3D プリント部品 → 基板 → ナット の順に重ね、M3 皿ネジ 15mm ×5 で共締めする。 皿ネジの頭は micro:bit 側に向けること(ネジの軸が配線を兼ねる)。
  4. グリップ・銃身・銃口を組み、電池ボックスとトリガースイッチを取り付ける。
  5. Batt1 / Trig1 / Mot1 の各端子台に配線する。

🎯 赤外線 LED は基板に直付けします。 銃口まで配線を延ばしたくなりますが、そうしないでください。 赤外線 LED は指向性が広く、そのままだと大雑把に向けただけで的に当たってしまいます。 LED を基板上(銃身の根元)に置くと、銃身が長い筒として働いて赤外線の広がりを絞り、 きちんと狙わないと当たらなくなります。銃身の長さ 250mm がそのまま照準の難易度です。

難易度を変えたい場合は barrel.3mf の長さを調整してください。 長くすると狙いがシビアに、短くすると当たりやすくなります。

的

  1. target 基板にピンヘッダをはんだ付けする。
  2. micro:bit → 3D プリント部品 → 基板 → ナット の順に重ね、M3 皿ネジ 20mm ×5 で共締めする。 皿ネジの頭は micro:bit 側に向けること(ネジの軸が配線を兼ねる)。
  3. NeoPixel リング(J1)、赤外線受信モジュール(J3)、サーボ信号(J2)を配線する。
  4. 的台に base 基板を M3 ネジ 10mm ×2 で固定し(的台側の Ø3mm 穴へ直接ねじ込む)、 DC-DC モジュールとサーボを組み込む。
  5. base 基板の target コネクタと target 基板の 3V / GND / サーボ信号をつなぐ。
  6. 電池ボックス または USB-C から給電する(両方を同時に接続しないこと)。

得点表示

  1. micro:bit を 3D プリント部品に M3 皿ネジ 15mm ×5 で固定する(頭は micro:bit 側)。
  2. MAX7219 4 連ドットマトリクスを配線する(CS=P1 / DIN=P2 / CLK=P0)。MISO は配線不要。
  3. 電池ボックス(単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:bitMakerBit IR Transmitter
code/target.py的の micro:bitMakerBit IR Receiver, NeoPixel, Radio
code/counter.py得点表示の micro:bitMAX7219 マトリクス, Radio

拡張機能の追加方法

MakeCode の「拡張機能」から以下を検索、または URL を直接入力して追加します。

拡張機能URL使う基板
MakerBit IR Transmitterhttps://github.com/1010Technologies/pxt-makerbit-ir-transmitter銃
MakerBit IR Receiverhttps://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 LicenseLICENSE
ハードウェア(pcb/, model/)CC BY 4.0LICENSE-HARDWARE
ドキュメント(README.md 等)CC BY 4.0LICENSE-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)を追加する
Comments

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

Ask about this board

Sign in to BoardRepo

New here? Signing in creates your account; there is no separate sign-up.