Introduction: Motion Decting Nerf Gun

About: I like Arduino, Raspberry Pi, modifying Nerf blasters, and messing with virtual machines. Also, make sure to follow my Instagram @analogchip (haven't posted in a while, but still.)

Hi! I'm Cameron. For this Instructable I show you how to make a motion activated Nerf gun. It is somewhat hard, but 100% AWESOME!!!

Supplies

1. electric Nerf gun

2. Raspberry Pi (b+ and newer)

3. Battery Bank (2 amp and above)

4. PIR module (5 volts)

5. relay (I used a Songle SRD-05VDC-SL-C)

6. bits and pieces (breadboard, jumper wires, micro sd card, etc)

Step 1: Unscrew the Gun

This step is probably the simplest thing in this instructable. Just unscrew all the screws (outside only!).

Step 2: Remove the Battery Pack

This step was annoyingly hard on my Nerf gun. Remove all the screws and or glue.

Step 3: Attach the Battery Pack From the Nerf Gun

Simple! Hook up the negative side of the battery pack to the negative wire on the Nerf gun, then the positive to the center of your relay (it's the center on mine, but you will want to double check to make sure).

Step 4: Attach the MOTORS!!

Attach the positive wire(s) of the Nerf gun to the NO (Normally Open) part of the relay (mine was the right side).

Step 5: Attach the Relay

Hook up the data pin of the relay to GPIO 21 (bottom right) on the Raspberry Pi, GND up to Ground, and 5V to 5V.

Step 6: Hook Up the PIR

Hook up the data pin on the PIR to GPIO pin 4, GND to Ground, and finally 5V to 5V.

Step 7: Code It With Python

############################Here's the code!#################################

print ("Welcome!)

print ("Importing modules...")

from gpiozero import MotionSensor

import RPi.GPIO as GPIO

from time import sleep

sleep(0.2)

print ("Complete!)

print ("Setting up GPIO...")

GPIO.setwarnings(False)
GPIO.setmode(GPIO.BCM
GPIO.setup(21, GPIO.OUT)
sleep(0.3)
print ("Complete!!")
sleep(0.1)


print ("Please wait for PIR to settle...")
pir.wait_for_no_motion
sleep(1)
print ("settled!")
while True:
	print ("Ready to fire...")
	pir.wait_for_motion()
	print ("Motion detected!!!")
	print ("FIRE!!!")
	GPIO.output(21, True)
	sleep(1)print ("Powering off")
	GPIO.output(21, False)

Step 8: Turn It On!

Steps:

1. tie the trigger with rope so it's is stuck to the on position

2. run the Python code

3. sprint away... OR GET SHOT!!!

I hope you enjoyed this Instructable, bye!

-Cameron