My goal for this project was to turn one of my FPV quadcopters into a Nerf Aerial Assault monster to finally settle some scores with my children.  I could have disassembled a nerf gun and installed the important parts onto a quadcopter, but I wanted to customize the solution more than that.  My primary design goals were:

1. Make it removable.  I only had one appropriate quadcopter at that time and I didn't want to permanently modify it.

2. Provide a method to fire using the existing RC link and controller that I use for flying the quadcopter.  Additionally, only use 1 of the RC channels

3. Try to use mainly parts that I already own and 3D print most other pieces

4. Needed to be able to hold at least a few darts.

The results of this project can be seen in this video.  I decided that I considered this a success.

The quadcopter that I used was a Shendrones Squirt V2.  I'm a big fan of this quadcopter for closer in, cinematic type work.  I have flown this around my family and friends because of the reduced risk.  The ducts help provide increased safety over an open design.  Don't worry, I know it still isn't 100% safe... but it's closer.  I run BetaFlight on my flight controllers for all of my quadcopters.  The only modification required was a small wire harness connected to the flight controller board.  I connected 5V, Ground, and a single 5V signal to the harness. 

For the Nerf mechanics I started my design around the "standard" nerf dart magazine.  To launch the darts I opted to use 2 motors that I had on hand for quadcopter builds.  I controlled the motors from an Arduino Nano using a PWM interface.  The motors were powered from the main LiPo battery power, and the Arduino was powered from 5V provided by the quadcopter flight controller harness.  I designed and 3D printed some attachments for the motors and spaced them in a way to squeeze the dart and propel them forward as they acted as flywheels.  To load the dart into the flywheels I created a plunger that was pushed and retracted using a MG90S servo.  A gear mechanism would control the plunger, and the plunger would push the nerf dart into the flywheels.

For control I setup BetaFlight to assert an IO pin when I toggled one of the AUX switches.  I chose a spring loaded AUX switch, so I would hold it to fire, and when I released it firing would stop.  When the Arduino received the signal it would do the following:

1. Start the motors and give them time to spin up - 2 seconds

2. Engage the plunger servo to load and fire a dart - 500 ms

3. Keep motors spinning and delay for a bit - 3 seconds

4. Repeat steps 2-3 until told to stop

During the state machine loop the software would check the status of the control signal.  If I kept the fire switch held it would continue the loop.  If the switch was released it would halt and stop the motors, then wait for a signal again.  This allowed me to control everything with 1 switch, and the 3 second delay was a good balance to allow me to make the decision of "keep firing, readjust aim" or "reset for a new attack run"

I attached this to the quadcopter with a battery strap (if you fly quadcopters, you have looooots of these).  For power I created a Y-cable that would connect to the battery with one leg going to the quadcopter and the other going to the Nerf mechanism.  I could mount this on the bottom of the quadcopter, strap it on with the battery strap, connect the flight controller harness, connect power, and I'd be ready to go.