完全自動化3Dプリント・ブラシレスナーフブラスター — Arduino Nano Every搭載
必要なパーツと材料
| パーツ | 数量 | 備考 |
|---|---|---|
| Arduino Nano Every | 1 | コンパクトでナーフガン内部に収まりやすく、必要な機能をすべて備える |
| リニアソレノイド 12VDC | 1 | ストローク35mm、12V定格のもの |
| ブラシレスDCモーター (アウトランナー) | 2 | ナーフフライホイールケージ用。12V (3S LiPo) 対応 |
| ブラシレスESC | 2 | モーター1つにつき1個。モーター電流の20%以上の余裕を持つもの。3S LiPo対応 |
| LiPoバッテリー 3S 11.1-12.6V 1300mAh 25C以上 | 1 | 全負荷電流+20%マージンをカバーできる放電レートのもの |
| マイクロスイッチ (ミニチュア) | 2 | 汎用品でOK、大電流対応不要 |
| パワーMOSFET Nチャネル (ロジックレベル) | 1 | >20V, >15A @5Vゲート電圧 |
| 抵抗 10kΩ | 1 | MOSFETゲートプルダウン用 (R3) |
| 抵抗 4.7kΩ | 1 | MS2マイクロスイッチプルアップ用 (R1) |
| 抵抗 150Ω | 1 | LED用 (環境依存) |
| 抵抗 220Ω | 1 | MOSFETゲート電流制限用 (R2、省略可) |
| 1N4007 ダイオード | 2 | D2: ソレノイド逆起電力保護、D1: Arduino電源逆電圧保護 |
| コンデンサ 100µF | 1 | Arduino電源入力の電圧降下抑制 (C1、極性注意!) |
| コンデンサ 100nF (0.1µF) | 1 | Arduino電源入力ノイズフィルタ (C2) |
必要な工具
- 3Dプリンタ (筆者はEvnovo/Artillery X1、300x300x400mm)
プロジェクトの概要
映画やゲームに登場するプロップのレプリカ制作を趣味としており、仮想オブジェクトを現実に具現化する過程を共有しています。最新作はゲーム『サイバーパンク2077』に登場するスマートガン「Kang Tao (カンタオ)」を、機能するナーフブラスターとして3Dプリントで製作しました。
静的な模型では面白くないため、フライホイール式ナーフブラスターとして動作するよう設計。ソレノイドとブラシレスESCの制御が必要で、リレーやタイムディレイでは大掛かりになるため、Arduinoで制御するのが現実的でした。
本記事ではArduinoと電気回路の側面にフォーカスします (機械設計と3Dプリントは上級レベル)。CAD設計、3Dプリント詳細は以下を参照:
- NerfHavenフォーラム
- 動画チュートリアル: YouTubeチャンネル

トリガー機構: フライホイール & ソレノイド
コードの動作ロジック:
- MS2 (セカンダリ・マイクロスイッチ) を押し続けると → ブラシレスモーター (フライホイール) がスピンアップ
- MS1 (プライマリ・マイクロスイッチ) を押す/押し続けると → MOSFETゲートに信号送信 → ソレノイド (S) が繰り返し作動
- ソレノイドがダートをマガジンから押し出し、回転するフライホイール (M1, M2) がダートを加速発射
- MS1はMS2押下中のみ有効 (コード内で
&&で連結)。これによりフライホイール停止中にダートが押し出されるジャムを防止。 - マイクロスイッチには大電流が流れないため、低電流定格品でOK。
ブラシレスモーターの選定

- アウトランナー型 を選択: 扁平形状でナーフガン側面に出っ張らず、外部ケースが回転するためフライホイールを直接3Dプリントで取り付け可能。
- リアマウント穴付きのものを選ぶ。
- 電圧定格: 12.6V (3S LiPo) 以上。
- 電流がESC定格を超えないこと。
- 出力: 60W以上推奨。本プロジェクトでは 12.6V × 実測7A ≈ 80W/モーター。
- RPM: 約25,000rpm目安。kV × 電圧で計算。本プロジェクトは 2600kV × 12.6V ≈ 32,760rpm。半分スロットルでダート飛距離25m/82ft達成。
ブラシレスESCの選定
- ブラシレスモーターにはブラシレスESC必須 (ブラシレス用ESCでないと破損)。
- モーター1つにつきESC1個必要。2モーターを1ESCに並列接続するとバックEMFでタイミングが狂い、破損の原因に。
- ESC電流定格 > モーター電流実測値。実測7Aなら20A以上推奨。
- 電圧定格: 12.6V (3S LiPo) 以上。
- 内蔵BEC付きでもOKだが、赤い5V線は絶対に接続しないこと (特別な目的があり、仕組みを理解している場合のみ)。OPTO ESC (BECなし) ならグランドと信号線のみ接続。
バッテリー選定

- 単一バッテリーで全系統を賄う。XT60コネクタ推奨。
- 12.6V 3S LiPo。
- 容量: 1300mAh以上推奨。
- 放電レート: 全負荷電流をカバー。本プロジェクトでは約25A。
- 最大放電電流 = Cレート × 容量(Ah)。例: 25C × 1.3Ah = 32A。スペックで確認を。
MOSFETによるソレノイド駆動

12V/8AのソレノイドをArduinoから直接駆動すると破損 (マジックスモーク) するため、NチャネルMOSFETをスイッチとして使用。
- NチャネルMOSFET** (ロジックレベル品必須): ゲートにArduino 5V信号で完全導通。
- ソレノイド電流 8A 定格 → MOSFETはより高い定格 (本プロジェクトは30A品) を選択。
- 耐圧: 12.6V駆動 → 60V定格品で十分なマージン。
- 発熱: 負荷8Aに対し30A定格なので低発熱 (~35°C)。瞬間的な通電のみのためヒートシンク不要。
ソレノイド
- 12V定格、ストローク35mmのもの。短いストロークではフルレングスダートを十分押し出せない。
- スプリングを0.9mm径線材、外径14mm、長さ40mmのものに交換するとジャム防止に効果的。
- 瞬間通電のみなので発熱は軽微 (~40°C)、冷却不要。
- 汎用品で安価 (eBay、AliExpress等で入手可能)。
セーフティスイッチ
SW は2極スライドスイッチ (3端子だが2端子のみ使用)。ON時にArduino電源を遮断し、フライホイールとソレノイドの誤作動を防止。
保護回路 (重要!)
電子部品を守るための各部品の役割:
- C1 (33µF、推奨100µF) & C2 (100nF): Arduino電源入力の電圧変動低減。C1は極性あり (ストライプ側が負極)、逆接続で破裂の危険。
- D1: Arduino VINへの逆電圧防止。極性注意。
- D2: フライバック/フリーホイールダイオード。ソレノイド (誘導負荷) の逆起電力からMOSFETを保護。極性注意。
- R1, R2 (4.7kΩ): MS1, MS2用プルアップ抵抗。フローティング防止。
- R3 (10kΩ): MOSFETゲート用プルダウン抵抗。フローティング防止。
- R4 (150Ω): オプションのマズルフラッシュ用LED (直列2個、2.4V/50mA仕様の場合)。ソレノイド動作と同期点滅。
動画での解説と試射デモも公開中です。質問があればコメント欄へどうぞ!
3Dプリントファイル公開
UPDATE: Thingiverseでファイル公開中!
https://www.thingiverse.com/thing:3984125
ソースコード
Nerf Blaster Brushless Motor & Solenoid Arduino Code
const int buttonPinF = 2; // フライホイール用マイクロスイッチ (MS2)
const int buttonPinS = 5; // ソレノイド用マイクロスイッチ (MS1)
int buttonStateF = 0;
int buttonStateS = 0;
int solenoidPin = 4; // MOSFETゲートピン
#include <Servo.h>
Servo throttle;
int pos = 0;
int pin = 3; // ESC信号ピン
void setup() {
pinMode(buttonPinF, INPUT);
pinMode(buttonPinS, INPUT);
throttle.attach(pin);
pinMode(solenoidPin, OUTPUT);
// ESCアーミングシーケンス
for (pos = 90; pos <= 91; pos += 1) {
throttle.write(pos);
delay(3700); // ESCによっては最大10000 (10秒) まで増やす必要あり
}
}
void loop() {
buttonStateF = digitalRead(buttonPinF);
if (buttonStateF == HIGH) {
// MS2押下中: フライホイール回転
throttle.write(92); // 92未満=停止、92=アイドル、~115=最大
} else {
throttle.write(97); // MS2離すとモーター停止 (またはアイドル)
}
buttonStateS = digitalRead(buttonPinS);
// MS2押下中 (LOW) かつ MS1押下中 (LOW) でソレノイド作動
// ※プルアップ回路のため、押下時=LOW
if (buttonStateF == LOW && buttonStateS == LOW) {
digitalWrite(solenoidPin, HIGH);
delay(90); // ON時間 (発射レート調整用)
digitalWrite(solenoidPin, LOW);
delay(100); // OFF時間
} else {
digitalWrite(solenoidPin, LOW);
}
}
コードのポイント:
- 起動時のESCアーミングシーケンス (3.7秒待機、ESCによっては10秒まで延長必要)
- MS2長押しでフライホイール回転、MS1でソレノイド発射
throttle.write(92)でアイドル速度、write(97)で最高速度を調整 (モーター/ESC依存)delay(90)とdelay(100)で発射レート (連射速度) を調整- スイッチ離すとESCへのPWM信号とMOSFETゲート信号が停止
- セーフティスイッチでArduino電源OFF → ESCは信号喪失でセーフモードに移行しモーター停止
回路図

ダイオードとコンデンサの極性には細心の注意を払って配線してください。
製造プロセス
- 自宅で作るDIY宿題自動筆記マシン:AxiDraw風ペンプロッターの自作ガイド
- Arduinoで作るモニター用Ambilightシステム:没入感アップの自作ガイド
- Alexaでシーリングファンを音声制御:ステップバイステップガイド
- Arduinoと1Sheeldで作る万能Androidリモコン──IR制御で家電を一括操作
- スマート貯金箱を作ろう:Arduino Nanoでコインアクセプターを制御
- Arduino電源制御センター:N-FET/P-FET/リレー/RTC搭載キット
- ArduinoでBluetooth経由でLEDを制御 – シンプルDIYガイド
- Arduino駆動3Dプリントロボットアームの製作:ステップバイステップガイド
- DIY Arduino加湿器コントローラー:リレーを用いた安全な高電圧制御
- Arduino Nanoとジョイスティックで2軸ステッピングモーターを制御:Visuinoで簡単プログラミング
- スマートシャワーレギュレーター – ソレノイドバルブで精密温度制御