全自动 3D 打印无刷电机 Nerf 飞镖发射器 (Arduino Nano Every 控制)
项目简介
这是一个完全 3D 打印的、电动全自动 Nerf 飞镖发射器 —— 灵感来自游戏《赛博朋克 2077》中的"康道 (Kang Tao)"智能枪。项目核心在于用 Arduino Nano Every 精准控制:
- 双 无刷电机 (Brushless Motor) + ESC 驱动飞轮,提供极高初速
- 12V 线性电磁阀 (Solenoid) 推进飞镖入飞轮,实现全自动连发
- 双微动开关扳机逻辑:副扳机预旋飞轮,主扳机发射,防止卡弹
- 完善的保护电路:MOSFET 驱动电磁阀、续流二极管、电源滤波、反接保护
发射性能:半油门飞轮下飞镖飞行距离 25 米 (82 英尺);全自动射速可通过代码调节延迟实现。
核心硬件清单 (BOM)
| 组件 | 关键规格 | 数量 | 选型提示 |
|---|---|---|---|
| Arduino Nano Every | ATmega4809, 5V, 16MHz, 体积小 | 1 | 兼容 Uno/Nano 代码,引脚足够 |
| 无刷电机 (Outrunner 外转子) | 2600kV, 3S (12.6V) 支持, >60W, 后部安装孔 | 2 | 外转子扁平便于 3D 打印飞轮套装 |
| 无刷 ESC | 20A+ (电机电流 7A 实测), 3S 支持, OPTO 或带 BEC | 2 | 每电机一 ESC,严禁并联! |
| 12V 线性电磁阀 | 行程 35mm, 8A 额定, 12V | 1 | 短行程无法推满长飞镖 |
| N 沟道逻辑电平 MOSFET | Vds >20V, Id >15A @ Vgs=5V (如 IRLZ44N) | 1 | 驱动电磁阀,Arduino 5V 直接驱动 |
| 3S 锂聚合物电池 | 11.1-12.6V, ≥1300mAh, ≥25C (峰值 32A+) | 1 | XT60 接头,单电池供全系统 |
| 微动开关 | 通用小型,信号级即可 | 2 | 主/副扳机,不通大电流 |
| 二极管 1N4007 | 1A 1000V | 2 | D1 防反接,D2 电磁阀续流 |
| 电容 | 100μF/25V (电解) + 100nF (陶瓷) | 各 1 | Arduino 供电滤波,防电压跌落复位 |
| 电阻 | 4.7kΩ (上拉) ×2, 10kΩ (MOSFET 下拉), 150Ω/220Ω (LED) | 若干 | 按原理图连接 |
| 滑动开关 (安全开关) | 2 挡 3 脚,只用 2 脚 | 1 | 切断 Arduino 供电,熄火保险 |
电路原理与关键设计
双扳机逻辑 (防卡弹核心)
- MS2 (副扳机/食指前):按住 → 飞轮加速 (ESC PWM 增大)
- MS1 (主扳机/食指后):在 MS2 按住时按下 → MOSFET 导通 → 电磁阀推镖 → 飞轮甩出
- 代码逻辑:
if (MS2 && MS1) fire();确保飞轮已旋飞镖才入膛
无刷 ESC 与电机选型要点
- 必须用 Outrunner 外转子:扁平、外罩随转子旋转,易 3D 打印飞轮套装
- 后部安装孔 → 直接螺丝固定在 3D 打印支架上
- kV × 电压 = 空载转速。2600kV × 12.6V ≈ 32,760 RPM。代码中半油门 (约 50% PWM) 即达 25m 射程
- ESC 电流额定值 ≥ 电机峰值电流 × 1.2 (本项目 7A → 选 20A+)
- 每电机独立 ESC:并联会破坏换相时序,烧毁 ESC/电机
- ESC 红线 (BEC 5V) 绝不接 Arduino 5V!仅接信号线 (白/黄) + 地线 (黑/棕)
MOSFET 驱动电磁阀
- N 沟道低边开关:Source 接地,Drain 接电磁阀负极,电磁阀正极接电池 +
- Gate 接 Arduino D4,串联 220Ω 限流,并联 10kΩ 下拉防浮动
- 续流二极管 D2 (1N4007) 并联电磁阀两端 (阴极接正极),吸收反向电动势保护 MOSFET
- 电磁阀瞬时通电 (90ms ON / 100ms OFF),MOSFET 温升极低 (<35°C),无需散热片
电源保护电路
- C1 (100μF 电解) + C2 (100nF 陶瓷) 并联在 Arduino Vin/GND,滤除电机/电磁阀开关噪声,**注意极性!**
- D1 (1N4007) 串联在电池正极 → Arduino Vin,防电池反接烧毁稳压器
- R1 (4.7kΩ) 上拉 MS2,R2 (4.7kΩ) 上拉 MS1,防微动开关悬空抖动
- 可选 LED + R4:与电磁阀同步闪烁模拟枪口焰
Arduino 固件代码 (完整注释版)
const int buttonPinF = 2; // MS2 飞轮预旋微动开关
const int buttonPinS = 5; // MS1 发射微动开关
const int solenoidPin = 4; // MOSFET 栅极驱动引脚
#include <Servo.h>
Servo throttle; // 用 Servo 库产生 ESC 所需 50Hz PWM
int escPin = 3; // ESC 信号线
void setup() {
pinMode(buttonPinF, INPUT);
pinMode(buttonPinS, INPUT);
pinMode(solenoidPin, OUTPUT);
digitalWrite(solenoidPin, LOW);
throttle.attach(escPin);
// === ESC 解锁/上电自检序列 ===
// 大多数 ESC 需要先发送最小油门 (约 1000-1100μs) 保持 3-10 秒
// 这里用 write(90) 对应 ~1500μs (中点),再微调到 91
for (int pos = 90; pos <= 91; pos += 1) {
throttle.write(pos);
delay(3700); // 关键:等待 ESC 退出安全模式,视 ESC 调大到 10000 (10秒)
}
// 此时 ESC 已就绪,电机微转或静止
}
void loop() {
// 读取副扳机 (飞轮预旋)
bool flywheelBtn = digitalRead(buttonPinF) == HIGH;
if (flywheelBtn) {
throttle.write(92); // 怠速/低速预旋 (根据 ESC 微调,92≈1520μs)
} else {
throttle.write(97); // 全速/高速 (97≈1550μs,最大约 115 对应 2000μs)
}
// 读取主扳机 (发射) - 必须副扳机也按住
bool fireBtn = digitalRead(buttonPinS) == HIGH;
if (!flywheelBtn && fireBtn) { // 逻辑与:飞轮转着才允许发射
digitalWrite(solenoidPin, HIGH);
delay(90); // 电磁阀通电时长 (推镖行程)
digitalWrite(solenoidPin, LOW);
delay(100); // 复位间隔 → 决定射速 (约 5.2 发/秒)
} else {
digitalWrite(solenoidPin, LOW);
}
}
参数调节指南
| 参数 | 代码位置 | 调节效果 | 建议范围 |
|---|---|---|---|
| ESC 解锁延迟 | delay(3700) | 等待 ESC 退出安全模式 | 3000-10000ms (听 ESC "嘀嘀" 声音判断) |
| 怠速/预旋油门 | throttle.write(92) | 飞轮预旋转速,影响启动响应 | 90-95 (1500-1550μs) |
| 全速油门 | throttle.write(97) | 最大发射初速 | 95-115 (1550-2000μs),勿超 ESC/电机极限 |
| 电磁阀通电时间 | delay(90) | 推镖行程完成度 | 80-120ms (视弹簧/阀行程) |
| 电磁阀间隔时间 | delay(100) | 射速 (周期 = 190ms → ~5.3 RPS) | 80-200ms (防卡弹需给飞轮恢复转速时间) |
3D 打印与机械组装
所有 STL 文件已上传 Thingiverse:Kang Tao Nerf Blaster
- 建议材料:PETG (齿轮、受力件) / PLA (外壳)
- 层高 0.2mm,填充 30%+,墙厚 3-4 层
- 飞轮需配合电机外罩直径设计,建议打印后用砂纸打磨平衡
- 电磁阀安装需精确对中,避免侧向力卡滞
- 弹仓采用标准 Nerf 弹鼓接口,兼容 18/25/35 发弹鼓
安全警示 ⚠️
- 护目镜必须佩戴:高速飞镖可造成严重眼部伤害
- 锂电池安全:使用防火袋充电/存放,监控电压不低于 3.0V/节
- 禁止对人/动物射击:仅用于靶场测试
- 机械夹点:飞轮高速旋转,严禁手指靠近
- 公共场合法律:部分地区视为仿真枪械/管制器具,请遵守当地法规
进阶改进想法
- 加装 OLED 屏 显示电压、射速、弹数 (需弹簧压力传感器)
- 引入 霍尔传感器 检测飞轮实时转速,PID 恒速控制
- 改用 STM32/ESP32 实现更精细电机控制、蓝牙遥测、固件 OTA
- 设计 快拆电池仓、模块化飞轮笼 便于维护
- 集成 激光测距/红点瞄准器 增强实战感
资源汇总
- 完整代码:项目 Code 栏 (单文件 .ino)
- 原理图 (AutoCAD):Schematics 栏,含极性标注
- 3D 模型 (STL):Thingiverse 链接
- 视频教程:YouTube 频道
UCP3j3nmdL5VLFy1indyyzAA - 设计讨论:NerfHaven 论坛帖、Reddit r/nerfhomemades
制造工艺
- 自制家用作业书写机:Arduino + GRBL 控制的笔绘仪
- 用 Arduino 打造绚丽显示器 Ambilight 系统
- 用 Alexa 控制吊扇:分步指南
- 基于 Arduino、1Sheeld 与红外控制的万能安卓遥控器
- 智能存钱罐:Arduino Nano 控制硬币识别器实现余额显示
- Arduino 电源控制中心:N-FET/P-FET/继电器/RTC 多功能扩展板
- Arduino + HC-05 蓝牙控制 LED:MIT App Inventor 手机 App 开发全攻略
- 打造功能完整的 Arduino 驱动 3D 打印机械臂:分步指南
- DIY Arduino 加湿器控制器:继电器安全控制高压电路
- Arduino Nano + 摇杆控制双步进电机:Visuino 图形化教程
- 智能淋浴调节器:基于电磁阀的精准定时节水控制器
- Arduino 合成乐音:从零实现 88 键钢琴全音域