There aren't many video game characters quite as awesome as Samus. Universe saving bounty hunter with one of the coolest weapons in all of sciFi. When I saw Instructables was hosting a Video Game based competition, I immediately knew it was her weapon I wanted to make a reality.
And this is the result! This laser cannon is powerful enough to easily destroy a balloon instantly, ignite flammable materials on contact, and even cut through thin plastic! Not to mention it is easily visible in air (by a camera, dont look at it). It even has light and sound effects!
Step 1: WARNING
Lasers of this power are incredibly dangerous. Without adequate protection this laser WILL blind you with a reflection. That being said, devices like this can be safe, far safer than many open frame laser cutters, if the proper steps are take.
FIRST: Always wear eye protection built for this laser. This can not be overstated enough. Good safety glasses mean the difference between a laser you have to be careful around and a laser you couldn't pay me to be in the same room of.
SECOND: Have PLENTY of extra laser glasses around. You're going to want to demo this. NEVER demo without everyone around you having laser glasses. There are some fairly inexpensive bulk packs out there.
THIRD: Have full control over the space you demo. This means no one entering without your permission. No opening doors, and no uncovered windows.
FOURTH: I have built in a unplug-able port for the laser. Whenever the laser isn't about to be used, unplug it. This is a final safety so no one who is not supposed to use it hurts themselves or others.
Essentially, treat the laser as what it is. Understand the danger and avoid it. If you follow these steps the laser can reach the point where it is "usable" and "safe enough". But never treat it like a joke. Finally, this is intended as a demonstration. If you replicate this project, learn the dangers on your own. I am not responsible if you hurt yourself.
Step 2: Components:
For this project you will need the following:
- Homemade NeoPixel Ring (Check out my tutorial here)
- 1 meter of NeoPixel Strip
- 2.5 Watt Laser Diode
- Arduino Nano
- 11.1V Lipo
- TIP31A NPN Transistor
- 2N2222 NPN Transistor
- IRF9540n P-Channel MOSFET
- 3x 1k resistors
- 48 ohm resistor
- 500 ohm resistor
- Blue LED
- 2x Female JST Connectors
- 5x 3 wire connectors (PWM Extenders)
- Perforated Breadboard
- 5v Regulator
- 3 Position toggle switch
- 8 Ohm Speaker
- Many 3D Printed Parts
- 3D Printer (Or Print Service like This)
- Soldering Iron
- Laser Safety Glasses!!
Step 3: 3D Printing and Design!
The most difficult part of this project was definitely the 3D modeling and design. The way I designed this cannon started with a few reference images I found online. I approximated the scale by comparing the size of my forearm to Samus's, then primarily used the "Curve" tool along side typical model making skills to design the basic shape. I split the arm into 9 main pieces in order to facilitate easier printing.
I then went through the process of adding the custom details. This includes a core mount which holds the laser, battery, speaker, circuit board, and toggle switch. I also cut out channels along the sides to add additional NeoPixel strips, and a flat plate in order to mount the custom NeoPixel ring.
In order to secure the pieces together I went with my go-to method: 3D printed threads. This allows for a strong, concentric method of attachment of two 3d printed pieces without having to mess with any extra hardware or glue.
All the pieces were printed on my QIDI Tech One printer at .3mm resolution at maximum speed. I removed support from around the threads, however that's not typically necessary unless you were attempting a higher resolution. I've found at higher resolutions support can sometimes gum up the threads and make them a little too tight. I've included my print profiles in the drive link for anyone who is curious.
I'm a strong believer in sharing editable versions of files so I have provided both the STL and editable Solidworks files both here and on my thingiverse page.
Step 4: Electronics!
The circuit I designed for this project has four main sections:
At the top of the circuit there is a irf9540n P-Channel MOSFET connected between a 5 volt regulator and the power from the battery. The reason I use this is because the switch I would prefer to use has three states. To one side and the middle it locks into place while on the far side it acts as a momentary switch. I close to use the momentary switch side to act as a digital input to the arduino to "charge the laser", for the middle to be "powered" (but not doing anything), and for the far right to be "turned off". The best way I could think to do this would be to connect power to the center lead of the switch and run the far right lead to the base of a P-channel MOSFET. That way, when the switch is connected power is to the right, power is applied to the MOSFET's base and the circuit is disabled. When the switch is to the far left, the voltage goes through a voltage divider and then to an Arduino pin where the signal can be read. When the switch is in the middle, no voltage is applied, and the pull down resistor on the P-Channel MOSFET closes the P-Channel MOSFET and allows the Arduino to be powered.
The 2.5 watt laser diode is driven by a TIP31A NPN transistor. I had to cut off the heat-sink of the transistor when I found the clearance was just a little too tight. Though I wouldn't recommend this, it should be fine. The transistor is driven by a 1k ohm resistor connected between pin 7 and the transistor's gate. I also have a blue LED and resistor in parallel with the laser diode to act as an indicator for whether the laser was intended to fire, even if the laser isn't plugged in. This is a far safer method of trouble shooting.
In order to enable basic audio sound effects a small, 2n2222 transistor and accompanying 48 ohm resistor are used to act as a basic audio driver. A 8 ohm speaker is connected between 5v and this transistor, which is connected to ground. The Arduino oscillates pin 11 on and off rapidly, causing the speaker to oscillate back and forth and generate sound.
For the few who haven't worked with them before, NeoPixels are a strip of individually addressable RGB LEDs. Essentially you apply power, ground, and give it a data signal and you can control a huge line of them. There are 8 sections throughout the cannon built to house NeoPixel Strips and one for a custom NeoPixel ring. Simply wire them together in one long chain, and connect one end to pin 9 on the Arduino.
Step 5: Assembly Part One: the Core
After the electronics are done, the next step is the mechanical assembly. We start by assembling the component I've termed the "Core" based around the 3D printed "Core Frame". This is the entire functional part of the cannon, minus the NeoPixel strips. The cannon will function with only this component assembled, everything else is simply ascetic.
- Begin by securing the toggle switch into its designated hole using its included nut. Have the non-momentary side facing outwards.
- Next secure the 2.5 watt laser module using two M4 7.5mm long machine screws. I had to use two washers for mine as my screws were too long, however that shouldn't be a problem for you if you have the correct size.
- After the laser is secure screw in the electronics board using the two M2 self taping screws. These should bite into the plastic to hold the board in place.
- Using super glue and insta-set spray attach the battery and the speaker to the sides of the Core Frame. Alternatively you can use velcro or hot glue.
- Plug the battery, switch, laser, and speaker into their designated ports.
At this point the Core should be ready to test! Throw on a pair of safety glasses and fire it up! You may have to adjust the focus of the laser in order to get the best results.
Step 6: Assembly Part Two: Lights!
Now its time to add the lights! If you look at the models i made you will find that at the end of each channel and the middle of each ring there are rectangular holes. These are intended for the power and data wires for the various NeoPixel strips to be fed through. I found the best method for me was to jump from the electronics board straight to the lowest point and work up from there.
- Start by threading together the bottom most pieces, ensuring the pattern lines up.
- Add servo extensions to your "input" and "output" for the bottom half of the cannon. I chose to attach these to the lower end of the strips towards the outside of the cannon.
- Cut and super glue each LED strip into its channel.
- Add wire connections between "close" LED strips. Thread on a new ring after each soldered set of wires.
- Add one long PWM wire from the bottom set of LED strips and the rings.
- Add a long PWM wire to the custom NeoPixel ring, it should be the end of the chain.. Do not glue down the NeoPixel ring.
*Note: I forgot to put a hole in the bottom most ring channel. This forced me to tap into the side channels, which left a slight gap and some unusual wiring. I have since updated the model, meaning you shouldn't have to worry about that.
Step 7: Assembly Part Three: Finishing Up!
Now its time for the final assembly!
- Start by screwing the bottom two pieces and the "Core frame" together as far as they will go.
- Plug in the "input" 3 wire connector from the bottom half into the connection on the electronics board. This is the start of the NeoPixel chain.
- Solder the "output" 3 wire connector from the bottom half into the NeoPixel strip on the core frame.
- Glue the custom NeoPixel ring into place.
- Thread on the second to top 3D printed piece.
- Plug the output from the top ring NeoPixel strip into the custom NeoPixel Ring.
- Thread on the very top 3D printed piece.
- Snap in the two side pieces at the base of the cannon. You can glue these, but they are designed to be a friction fit.
Step 8: Code!
Now its time to upload the code!
The following is a basic description of how the code works. The code begins by waiting in a while loop until the toggle switch is pressed. It then moves into another while loop until the toggle switch is no longer pressed. This is the "charging" mode. In this while loop a variable is decremented over time, until it reaches 10, while at the same time playing a sound effect and animation. This variable controls the frequency of the charging sound effect and the speed of the NeoPixel animations . It also is used to control the length of the laser pulse once the toggle switch is released, thus allowing you to make a more "powerful" laser shot by charging for longer.
Step 9: Done!
And that's it! All it takes to build a functional laser cannon from the video game Metroid! Great if your particular corner of the universe is under assault from black balloons. As you can see from the video this laser is easily able to pop balloons, my favorite demonstration. It can also light matches, gun powder, burn paper, or even punch through thin plexiglass. Being a 2.5 watt laser, its very powerful as far as homemade laser weapons go.
I hope you enjoyed this project! If you have any suggestions for how I could improve it, I encourage you to leave them in the description.
dan_ewing made it!