Transform a piece of plumbing pipe into a rugged laser tag gun.

Similar projects worth following
Pi - Raspberry
Tag - Laser
Err - Prone
Us - We

Laser tag and paintball are both great activities for fun, sport, and exercise but they're expensive. This project aimed to tackle the problem of expensive laser taggers by making open-source and cheap parts. There are two custom circuit boards and Gerber files are available as well as a link to EasyEDA where they can be edited for free or purchased.

Modularity was important. All the I/O is handled by an Arduino Micro Pro since they are easy to source, inexpensive and familiar to many people. The Arduino talks to any device capable of communicating over serial through USB. A small set of commands is all that is necessary to handle a game. A demo game has been written for Raspberry Pi but any modern Android, Linux or Windows box could also run a game. One tagger-mounted computer is necessary for each player. The example program was written for and on a Raspberry Pi 0 due to their cost and availability.

All the details, I mean ALLLLLL of them, can be found at my blog, 24 Hour Engineer. I recently removed ads from the site so please enjoy the clean browsing experience.

You can skip right to the first PiTagErrUs post.

This project started because I love laser tag. My friends and I would play every week and we knew the course like the back of our hands. Of course, it was expensive to pay every week and we had to play at the same arena.

I knew I could produce a decent laser tagger in my garage but I was less confident I could produce ten. With 3D printing and inexpensive PCB makers it was time to rekindle the dream of a laser tag system of my own. One I could play anywhere, anytime with anyone.

There is no complex soldering, every component in my prototypes was large enough to solder by hand.

There are no huge model, each component should fit on a small printer. Many don't even need supports to print properly.

There are no peculiar components, everything can be easily sourced from regular suppliers. That's the beauty of using things like Arduino, anyone can buy and reprogram them with relative ease.

There are no closed-source parts, all 3D printed parts were designed by me and the OpenSCAD source is included with the STL models. The PCBs are also free to download and edit. If you're tricky, you could even solder parts to a protoboard and skip the PCB or you can print your own at home.

This project is modular. Inside the Arduino is only the most basic automation. Its primary purpose is to receive serial data from a game controller like a Pi, Android or even a Windows machine. A demo program was written in Python to get started with an inexpensive Raspberry Pi but if you want to write your own games, maybe with wireless connectivity or sounds effects, you are free to do so. It's simply a matter of observing my code and using those serial commands however you like. The tagger doesn't try to tell you how to play, it just makes the gun act like a peripheral to your Pi or smartphone.

  • 1 × 2" ABS pipe PVC can be used but it is easy to attach printed ABS parts to ABS pipe with ABS cement.
  • 1 × Arduino Micro Pro Sparkfun makes these but China makes them by the thousand.
  • 2 × Sensor PCBs
  • 2 × 10µf, 1206 footprint Surface mount capacitor that should be easy enough to solder by hand. Used for each infrared sensor board.
  • 2 × 100Ω resistor, 1206 footprint Surface mount resistor that should be easy enough to solder by hand. Used for each infrared sensor board.

View all 29 components

  • 2017-08-29 (Tu) Pi0 Laser Tag PiTagErrUs

    Brian McEvoy08/30/2017 at 12:44 0 comments

    The latest version of NOOBS was downloaded from and copied to two 4Gb microSD cards. Spare Raspberry Pi Zeros were connected to a television, keyboard, and mouse. It was a typical installation which was made easier since the Raspberry Pi Zeros from the taggers wasn't necessary. The beauty of standard hardware was that it wasn't critical to use the exact computers during the install.

    NOOBS installation screen and two Raspberry Pi Zeros

    USB hubs and cables were run to each Arduino and Raspberry Pi Zero. Each hub had a spot for a keyboard/mouse so it could be accessed in order to start the game or any other game added in the future. The HDMI port was kept open for the same reason. It would be possible to launch games from a serial terminal but that will have to wait for a future iteration.

    Arduinos connected to Raspberry Pi Zeros

  • 2017-08-28 (M) Pi0 Laser Tag PiTagErrUs

    Brian McEvoy08/30/2017 at 12:43 0 comments

    Programming was written to the Arduinos. This was not a significant task but finding suitable data cables that could pass through the opening was much harder. Many of the micro USB cables in my stock are only power, not data. Some cables were ordered specifically for this project but they were inadvertently power-only cables.

    Adding programming to the Arduino

    Adding the program to the Raspberry Pi Zeros should have been an easy task but the wrong OS was downloaded for the computers and I didn't want to learn the finer points of running all the necessary commands through a command prompt. An updated GUI OS will have to be put onto the memory cards.

    Running the Raspberry Pi for the first time

  • 2017-08-21 (M) Pi0 Laser Tag PiTagErrUs

    Brian McEvoy08/30/2017 at 12:42 0 comments

    A second tagger was assembled. A pre-wire butt stock and pre-wired forward array were added and all the wires were stripped. Wires to the reload button and trigger were connected and stripped. Everything was run to another control board with an unprogrammed Arduino. This tagger was wired with all the standard color wires.

    Tagger #2 control board

    Sensor modules were added to the sides of the tagger. The holes had to be drilled out since the available screws were too large. This broke one of the traces so that had to be repaired with some scrap wire. The next revision of the sensor boards should accommodate larger screws and the next time these boards are used, the correctly sized screws should be available.

    Sensor board mounted on tagger

    A short video was taken with a probe camera as it was pulled through the inside of the tagger. This doesn't prove anything or serve any purpose other than it was kind of neat to see inside the tagger while it was assembled. The video is approximately forty-one seconds long.

    Internal tagger video

    The assembled taggers were placed together for a quick photograph. With two taggers, it will be possible to conduct an actual game with real equipment.  The newly assembled tagger is near the top of the picture.

    Two wired and assembled taggers

  • 2017-08-20 (Su) Pi0 Laser Tag PiTagErrUs

    Brian McEvoy08/21/2017 at 12:40 0 comments

    A standard color code card was made in Google Sheets. This was a simple reference sheet to record which color wire went to each terminal. It was revised from the first edition which didn't have enough spaces for every wire and some other shortcomings. The picture shown below is the most standard arrangement of colors I can make but it will not be used on every tagger.

    Color code card with standard colors documented

    One tagger was fully wired to the control board. Once the Arduino receives programming and a Raspberry Pi with programming is added, the tagger will be ready for functional testing.

    Assembled board next to a color code card for it

  • 2017-08-19 (Sa) Pi0 Laser Tag PiTagErrUs

    Brian McEvoy08/21/2017 at 12:40 0 comments

    Power was run to the first LED of the string but only the digital signal was transferred around the middle of the barrel. 5V and GND wires were soldered to the other end of the LED strip. This was done as a way to keep the voltage drop to a minimum by feeding power from the back end as well.

     Far end of the LED strip with power cables

    The far end power wires were removed since running more wires through the butt stock seemed illogical. Power wires were added around the barrel after all. A wire color code sheet was made for one tagger which contained many of the parts which were not assembled in the standard fashion and "NOT STANDARD" was written across the top as a reminder. The poor arrangement of the color code card and some other shortcomings were also obvious when dealing with such a mismatched tagger.

    Color code card

    The most haphazard forward array was placed in this tagger. Many of the wires were run together and all the ground wires were tied together to minimize the number of wires running from one end of the tagger to the control board. Unfortunately, this cannot work since the transistor controlled devices, like the IR emitter, flashlight LEDs, laser and red LED all rely on switching the ground side.

    Control board and ill-wired forward array

  • 2017-08-17 (Th) Pi0 Laser Tag PiTagErrUs

    Brian McEvoy08/18/2017 at 11:57 0 comments

    Wires attached to the light rings were too short in most of the cases. This was an error in judgment on my part from moving through the project too fast. The previous wires also had no consideration for color coding, another lapse in judgment.

    New wires were cut, this time they were measured against the tagger pipe to ensure they would be long enough. Enough wire was cut so that each tagger could have the same color coding.

    Wire and color code

    Old wires from the light rings were removed with a hot soldering iron. The new wires were attached according to the color code. Light rings only have one terminal for 5V and GND so two wires were attached at each of those terminals. To do this, wires were held next to one another with the copper ends exposed, and they were tinned together so copper bridged between them. Then, the paired wires were soldered to the light ring terminal and there was enough solder present to make a good joint.

    Soldering light rings

  • 2017-08-16 (W) Pi0 Laser Tag PiTagErrUs

    Brian McEvoy08/17/2017 at 17:03 0 comments

    Four Raspberry Pi 0s were selected along with four brass spacers. The spacers were meant to add some distance between the PCB holder and the computer. This allows solder joints and other things to pass under it without putting pressure on the board.

    PCB holders, spacers and Pis

    Before the computers could be mounted, control boards were attached the PCB holders. These were previously populated with components and Arduinos. Each control board had to be strapped in place with a long zip tie which went through the top of the PCB holder. The Raspberry Pi will be covering this area so the zip tie had to be installed before the computer.

    Four control boards installed

    The Raspberry Pis were installed with #4 (3mm) screws which passed through the computer mounting holes, spacers and into the designated holes modeled into the PCB holder. The clearance provided by the spacers was more than enough for the zip tie underneath. The space should also aid in keeping the computer cool since it is open on all sides.

    Assembled PCB holder and boards

  • 2017-08-15 (Tu) Pi0 Laser Tag PiTagErrUs

    Brian McEvoy08/17/2017 at 17:00 0 comments

    The trigger switch was installed and while wires were being connected, it became apparent that the trigger and controller board would not fit together inside the pipe. Bummer.

     Switch in the controller space

    Parts from the short tagger were moved to a regular-sized tagger. A different switch plate was used since the new tagger was drilled with a small hole. The print was snug so the switch had to be twisted into place. Perhaps the goal should have been to make the adapter as a threaded nut instead of a plate which could be glued. A screwdriver was used to try to press the switch into place but it was not effective.

    Installing a switch, poorly

    The evening was spent creating a wrench (spanner) which could properly install the switch by twisting it. The majority of the device is a long handle with grips while the bottom should surround the switch snugly and allow it to be turned from outside the pipe.

    Switch wrench

    A print of the switch wrench was printed. It was printed on it side so the printer filament strands would reach from the handle to the tool. For a good explanation, watch this video by Christoph Laimer.

    Captive switch

  • 2017-08-14 (M) Pi0 Laser Tag PiTagErrUs

    Brian McEvoy08/17/2017 at 16:59 0 comments

    A wire from the sensor board was soldered to the output pin for infrared signals. A sensor board was mounted to the tagger with two #2 (M1.5) screws at opposite corners. Each screw hole into the tagger was given a pilot hole. A third hole was drilled for the sensor wire to reach the inside of the tagger.

    Mounted and wired sensor board

    The board did not sit nicely against the round pipe. Tightening the screws drove the component leads into the pipe but it seemed sturdy. Since the light strips sat high off the pipe, it was difficult to attach them with the adhesive. Perhaps the next model of sensor board should have solder pads which can attach directly to the strips. It would also be possible to model a piece which would act as an adapter for the sensor board and pipe and even provide a ramp for the LED strips.

    Fastened sensor board

    Wire color codes were recorded for one tagger and the same will need to be done with subsequent taggers. This was necessary since none of them were assembled at the same time or with the same wire color coding. If they had all been assembled at the same time, it would be more logical to have a single color code which spanned across all the taggers.

    Color code cheat sheet

    Sensor boards and light strips were attached to the shortest tagger. This one was assembled as a test to find out what worked well and what worked poorly since the short tagger was the least important. Its size also makes it the most difficult to assemble which would be important to know for future builds.

    Short tagger with sensors and light strips

  • 2017-08-13 (Su) Pi0 Laser Tag PiTagErrUs

    Brian McEvoy08/17/2017 at 16:59 0 comments

    Six light rings were attached to six butt stocks with twelve small (#2, M1.5) screws from a hardware store. The hole pattern in the light ring wasn't the same across all the rings since they came from different manufacturers so, in some cases, one of the holes had to be drilled into the plastic butt stock.

     Light rings on butt stocks

    Short lengths of light strips were cut with five LEDs on each piece. Angled header pins were soldered to the light strips. Half of the strips were given pins on their output side and the other half were given pins on their input side. At a glance, they appeared identical, so a marker was used to differentiate between the two. It was also possible to read the "DO" or "DI" on the strip to tell the difference.

    In order to get the header pins into the mounting holes, the pins had to pierce through a layer of adhesive tape on the backside.

    Header pins on light strips

    Ten sensor modules, which were already assembled, were given light strips on either side so the sensor could fit between them for power. The adhesive on the back of the light strips was kept in place, even during the soldering phase.

    Ten sensor boards with light strips

View all 28 project logs

  • 1
    Prologue or "How I came to Love the Pipe"

    This is an introduction that briefly describes the process of bringing laser taggers from the back of my mind to something I can hold in my hand. The long, long LOOOONG version can be found on my blog which details every day of the process which took roughly half of 2017.

    3D printing seemed like the perfect venue for building a laser tag gun (tagger) and I had been modeling in OpenSCAD for a couple years so I figured I was ready to tackle the task of making a tagger. This was the first design, it was going to be propped up on a sturdy tape gun handle and all the parts inside would be held together with machine screws and bolts. I was okay with the boxy design for a first pass. Unfortunately, the parts became larger than my print bed, which was medium at 200mm and much too big for some of the small printers. Keeping the parts accessible to lots of people was important and I didn't want to exclude someone with a small printer.

    Here's the first model infinitely exploding and rotating.

    Every print was flimsy and refused to fit properly. I even tried to add steel keel down the middle which would add some heft and support but it was a losing battle.

    This was only first of many road blocks. Remember that tape gun handle I talked about earlier? Well, this wasn't my first attempt at building taggers and one of my earlier attempts involved bolting PVC pipes together in a gun shape. If you have ever worked with round pipes you will know that they do not play nicely with other shapes. This was exactly the reason I abandoned the idea years ago. Nevertheless, I didn't ignore it as a worthy building material. With the failure of the full-printed tagger, it was time to brainstorm for a building material which was rugged, inexpensive, and accessible.

    Plumbing pipes! I bet you saw that coming.

    A whole new model was started. This time the printed parts would interface between a piece of pipe and the component I wanted to mount. Have you ever seen a switched mounted on an electrical pipe? No. They are always mounted on an electrical box which has flat faces. How many flat faces are on a round pipe? Zero. This wasn't a match made in heaven but modeling 3D parts around the curvature of a pipe would be a plain matter of some basic measurements and math. Now, OpenSCAD was a perfect match.

    My first attempt at laser tag was not entirely unsuccessful. I did program an Arduino to act as a laser tag controller with a basic game mode and everything. Since that time I also grew an appreciation for modularity and where to cut costs and where to spend. At first, the whole system was going to reside on a single Raspberry Pi 0. All the LEDs, switches, and sound would come from it. This wasn't the worst idea but it was abandoned in favor or putting all of the tagger's I/O (inputs and outputs) onto a single Arduino. Arduinos are notoriously easy to find and not as intimidating to beginners as many other microcontrollers. They have a huge community of support and documentation plus they're easy to replace if the tagger falls in the water or takes a nasty hit.

    For this project, an Arduino Micro Pro was selected because of its easy-to-use serial communication and they connect to many computers without additional downloads. The infrared library by Ken Shirriff has been reliable and used for years by many hackers, myself included. It served as the communication core of the Arduino firmware. The library did need a little tweaking to work with the Micro Pro but I outlined that process here and it's very important.

    The firmware programmed into the Arduino was revised for a couple weeks until it withstood the onslaught of commands coming from an Arduino serial terminal running on a Windows machine and a Raspberry Pi running a Python script where the game was being built. The beauty was that there was no game data in the Arduino. You could program it to deliver one point of damage or 65,000 points of damage and it didn't know the difference. It was nothing more than a peripheral to the computer which could be Windows, Linux, Android, another Arduino, ESPxxx or any box capable of performing automation through a serial port. Support on multiple operating systems was another benefit of using an Arduino in the tagger.

    It became clear that the Arduino as a firmware-carrying device was the best way to go so a custom printed circuit board (PCB) was designed and ordered. The PCB included a socket for the Arduino rather than integrating the components directly to the board. This was significantly faster to design and it allowed anyone to solder up a control board because it didn't involve any small or fragile components. In fact, the control board uses all insertion mount technology (IMT) components. This is roughly the skill level of a beginner's soldering kit. The PCB is open-source so anyone can make their own edits or order their own batch. There is even a version of the PCB which is easy to print at home if you're inclined to make your own single-side PCB instead of ordering one. It has thicker traces which are easier to transfer which I found to be very important while I screwing up my own homemade boards.

    There was a similar process for the sensor boards which receive infrared signals from opponents but these have small (1206) surface mount technology (SMT) components but they are possible to solder by hand. That was intentional. Source material for these boards is also available. They're single-sided so making them at home is inexpensive and simple, as far as homemade PCBs go.

    With the electronics and programming sorted out, I started back on the physical tagger. I took some pride in the design and my in models so each dimension has been deeply integrated and tested. This deep integration with OpenSCAD means that a change to one part doesn't screw up everything else. The parametric nature of OpenSCAD actually makes changes like this simple, if done properly. For example, I used 2" ABS pipe, available at my many hardware stores across the USA. I realize that 2" pipes aren't used in most other countries and if someone were to input the inside radius and outside radius of an equivalent metric pipe those changes would ripple through the rest of the models without much fuss. Maybe none, I haven't tried it.

    The final version of the tagger is spinning below. This represents over eight hundred lines of code written over months. Each part can be rendered individually with predictable changes to the code and all the code and models are freely downloadable. OpenSCAD is also open-source and small enough to fit on a flash drive from 2012.
    I have a donation link on my blog but what I really want is for people to show their gratitude by building these and exercising and taking pictures of how much fun they're having. If people write their own games it would be spectacular if they shared them with the world. I have notion that strapping a cheap Android phone to a tagger would be one of the world's first laser tag gun with a touch screen and Bluetooth sound. Just sayin'

  • 2
    Control board

    The first control board for this project was a simple protoboard with components soldered to the face which followed a circuit schematic. This could have been repeated for every tagger but the process would have been laborious, especially when making numerous boards, one for each of my friends. If only two boards were being produced, this would have been the obvious choice. Instead, a custom board was designed with EasyEDA, which received a positive review on Hack a Day. EasyEDA also allows anyone to freely view this PCB, branch their own copy for changes and order copies. Here is a link to the project page for the control board. This does not include the sensor boards which will be linked in a different step.

    It is possible to make a protoboard version with only the above schematics and the necessary components. No one is required to order the boards from EasyEDA and I don't get any of that money so I don't mind whichever way people choose. On the project page, there is also a layout called "PiTagErrUs_MCU_Single-Layer_Homemade" which was made for people who want to make their own PCBs at home. I used this when making toner-transfer boards. The traces are thicker and have more clearance but the footprint for the transistors may be messed up. I recommend ordering the version called "PiTagErrUs_MCU_Single-Layer" which is what is pictured in the rest of the steps. Here is a picture of one of my toner-transfer boards, left, next to the board printed by EasyEDA.

    A quick reference guide was included below which shows the exact connections for each component. The idea was that all the amplification would be done on this central board which has a socket for the Arduino Micro Pro. Wires would be run to the control board and tightened under screw terminals. With the screw terminals and Arduino attached, the board fits nicely inside the pipe.

    The component sizes are shown on the bill of materials (BOM) below which was taken from the the project page.

  • 3
    Sensor boards

    Sensor board project page on EasyEDA. When I ordered these boards I ordered 100pcs at a time. They are very versatile in where they can be placed. They were designed to be put inline with individually addressable LED strips. These strips carry 5V power and designate team color so any place where lights can be seen can be made into a target for opponents. These sensors can be used right on the tagger or placed on a hat or vest. The lights aren't necessary, they just need power from the controller board and the signal wire from the sensor board needs to go back to the control board.

    Up to four infrared sensors can be installed on each board and only one is necessary.

    These boards are single-sided so it's another easy one to make at home but there are 1206 (small surface mount) components but I've already soldered these by hands without trouble or even a magnifying glass. I have good eyes though.

    The original design had an addressable LED right on the board but that added unnecessary complexity if lights are nearby anyway. These boards can be placed at the beginning or end of and LED strip or even inline since they have pass-through traces. In fact, since most flexible light strips have adhesive on the back so an inline sensor can be mounted without any additional work but they have four screw holes if they need to be secured.

View all 7 instructions

Enjoy this project?



Similar Projects

Does this project spark your interest?

Become a member to follow this project and never miss any updates