Back in 2010, members of the Connected Community HackerSpace were discussing what to do for a end of year social event. The short story is that someone suggested perhaps Paintball Skirmish could be fun but it was considered that the field entry tends to be good but you pay a bit for the paintballs. At that point someone else suggested that we build our own.
The basis of the system is that focused Infrared light is emitted from a gun (also known as tagger) or other weapon. If that packet hits a sensor worn by another player, it is decoded into a string. That string is then checked to ensure it is valid and acted upon as a hit. A sound might be made by the target's tagger and so on.
(Not all of these will be implemented overnight though)
This could be a microswitch on a removable cartridge or similar
As the LCD backlight may be enough to give away your positon, the back light needs to be able to be turned off by the user.
Perhaps switched back on if there is a fatal error such as Game Over.
A laser tag system has many modules or subsystems involved. One principle that I am interested in pursuing is the ability for the system to be as close to zero configuration as possible. This means that when you switch on a tagger, it will attempt to find as server. A list of servers will be shown on the lcd and the player chooses which server to associate with. The server also balances the number of players per team with a preset game type.
The main board is based around an ATMEGA 328 which uses a Arduino related bootloader for easier reflashing of the application software. This software has been published into the public domain but is very incomplete. There are connectors to external devices such as the battery, sensor “bus”, Infra red LED, key switch for power cycling the tagger, etc. The other major component is a sound module on which multiple sounds are record which indexed appropriately. On nice feature is being able to interrupt one sound by playing another. No need to check first.
Reference board: Unfortunately the schematic isn't available, instead you require ExpressPCB to make changes. Not nice
This list is an aggregation of the pins mentioned elsewhere in this document.
Pinout of an ATMEGA168/328 and Arduino equivalent
[Fixed] means that the peripheral can not be relocated elsewhere.
D0 Serial RX D1 Serial RX D2 Trigger Pin (INPUT) D3 IR PWM (OUTPUT) Driven from Timer2 D4 TSOP Data pin (INPUT) D5 IR Dimmer via FET (can be dropped if necessary) D6 LCD backlight (PWM) D7 To LCD via Shift Register D8 To LCD via Shift Register D9 To LCD via Shift Register D10 SPI (SS) D11 SPI (MOSI) [Fixed] D12 SPI (MISO) [Fixed] D13 SPI (SCK) [Fixed] A0 Fire Select switch (eg Safe/Burst/Auto) via resistor Ladder A1 Reload/Mode buttons/switches (Might be able to be combined with the Fire Select A2 A3 A4 Data (SDA) A5 Data (SDA)
Still need a ADC pin for monitoring the battery usage. If we could find an “Battery fuel guage”, we could use I2C bus.
There are there are three major “buses” in use:
This is being used for the sound chip as it's quick and low latency.
This will be a general purpose bus to connect to unique identifying chips for ammo magazines/clips and the like.
While this is not considered to be a bus, it is a requirement to provide several pins.
While the sound module has been documented else where, I would like the spell out the pins to have them all in one place.
10 (SS) Could be other pins also 11 (MOSI) 12 (MISO) 13 (SCK)
Note: Only Pin 10 (SS) can be relocated.
The I2C bus will be used to allow the system to be expanded and allow for peripherals such as LED ammo counters.
A4 Data (SDA) A5 Clock (SCL)
Addresses for some common devices
|Address||Device Part Number||Notes|
|0x70 » 1 (or 0x38 or 56 Decimal)||NXP SAA1064||4 digit 7-segment display LED: Ammo Counter or healthNote: SAA1064 has an address offset of 0-3 to connect four devices on the one bus.|
|70h (112 Decimal)||Maxim DS28CM00 Datasheet||Unique IdentifierCould be used to identify a particular taggeror even down to the identifier of a particular magazine/clip|
|Not SureSee datasheet for explanation||Microchip 24AA02E48 Datasheet||Unique IdentifierCould be used to identify a particular taggeror even down to the identifier of a particular magazine/clip|
There is probably a magnitude of other devices that could be useful as peripherals.
Could add RGB led controlled instead of the single colour LED. Run the I2C bus to the first sensor dome or other central location and then the RGB signal from there. LED colour could signify which team a player is on (may not be bright enough) or if the player is low on ammo or hit points. See Blinkm by Thingm There is also a generic version called a HackM as the firmware for the BlinkM isn't freely available.
Reference material: Arduino and I<sup>2</sup>C bus Tutorial
Arduino and NXP SAA1064 LED display driver
If we use a shift register (4094N) we should need three Digital Pins say 7,8 and 9 (to be consistent). We haven't figured out the size of LCD to use for the tagger, the flags and fixed devices might be better with a larger LCD. The referee tagger could have a 40×4 character LCD.
Usually the fire button is some form of trigger but could be a push button, depending on the tagger type. High Priority. Pin: D2
Allows setting of some settings when starting a game or joining a server.. this need more work
Fire modes are single shot, full auto and safe. May require a three throw switch. Put onto a resistor ladder to a Analog Input pin (A0)
Reload and Mode will be connected via resister ladder to an analog input pin (A1).
The serial interface may be connected to an wireless module of some sort via D0 and D1.
Switching on IR emitter: D3 Sensor hits from TSOPs: D4. Dimming the IR emitter: D5 This is done via a MOSFET which short a limiting resistor in-line with the IT emitter. Control of the LCD back light: D6
(Please update this section as pins are assigned or released)
We have no spare digital pins! We have two analog pins: A2 and A3
The traditional laser tag system requires configuration for each game and tagger Lazer Tag Team Ops Game Hosting Tutorial A better solution would be to have the tagger partially self configures itself when connecting to a server.
The sequence of events would be something like the following:-
Ensuring that the UID is totally unique is tricky, on option is to use a pre-programmed address in a external chip such as the Microchip 24AA02E48 See How to read the MAC address Note: The mac address can't be changed so could be a good way to whitelist known trusted taggers or blacklist known bad taggers. The only way to change the MAC address is to unsolder the chip and replace it, especially if it's soldered to the main board.
While virtual ammo reloads has been implemented in the form of a reload button and a suitable delay, it does have the disadvantage in that you can't transport ammo from one part of the game field to another. You also can't pass some of your supplies to your team mate.
It would be handy to have a unique identifier attached to the id. Note: As writing to an EEPROM is slow (around 3 milliseconds), we will not change the contents of the memory. Instead we track which identifier is assigned to a player and should one of those end up loaded into another players tagger, we query the server for information about that reload (number of rounds and the like)
The advantage of storing default values in EEPROM is that you can store the class of weapon semi-permanently without needing to manually configured each time or hard coding and burning it to the processor.
As the tagger needs to be portable, we need to use a battery pack of some sort. The reference design requires 7.2V battery packs. It became apparent that battery packs for R/C cars seem ideal as they are available just about everywhere in case you need one in a hurry.
After a quick sparring session of google-fu, we came up with the following options as a quick pass.
2000mAH $9.26 each Plenty of other options depending on the power draw. A high fire rate tagger will draw more power than something which has a lower fire rate. If the tagger has a simulated recoil, then the power draw will be higher over the course of a game.
As a first pass, we found the following Venom 7.2V 6C 5000mAh NiMH Stick 5Ah sounded like it would last a while but at $75 reduced from $89, wasn't happy with the price.
4300mAh for $60 start to look better.
Venom 3000 NiMh 7.2V for $44.95 is around the money and we stopped looking.
Note: You will need a charger for these. Chargers for remote use (off the car battery) are readily available.
Cheap but can be a little fickle if not fully discharged occasionally.
Last but not least 7.2V 2000mAh NiCad The charge time is 14 to 18 hours so plan a head to ensure that you arrive with a full charge. The charger that Dick Smith sells appears to be nasty in that it has no cut off so subject to over charging.
Regardless of what you choose from the above, they come with a non-standard plug by Tamiya. We will need an adaptor lead to charge this into something that we can plug onto the main board.
Male and Female connectors $5.95
Given that the taggers are running from battery power, a member (Hi Paul!) raised the issue of power consumption. One solution could be to add a soft power switch. A soft power switch is circuit containing a momentary switch that when press energises the circuit to power on the rest of the device. The microprocessor can then power down the device or put it into sleep for a while. This allows us to eliminate the keyswitch which is an expensive part both cost and consumed space.
Devices that could be powered down to save battery power are:
This will require extra FETs to switch off the power to these devices. There is also the other complication is the need to re-initialise the above devices when need powered up again. Perhaps include the circuitry but allow the tagger to be powered down from a button press. More thought is required on this idea.
In the main, laser are not widely used as you are trying to hit a sensor component that is about the size of your little finger. Instead we use a focused infra-red LED which reduces the unwanted spread and increases the intensity of the light, and leads to better range. The other trick is give we are pulsing the IR emitter and most of the time it's switch off, we can over drive it at a substantially higher current, say 1Amp. The does mean that you may end up shortening the life of the emitter so make sure it can be replaced with relative ease.
Recommended component: Vishay TSAL6100
Prices from Digikey Cat No: 751-1203-ND: 1 off 0.55000 10 off 0.42800 25 off 0.36120 100 off 0.29400
Prices from Mouser: Cat No: 782-TSAL6100 1: $0.743 10: $0.578 50: $0.446 100: $0.397 (Not linkable due to use of browser session tracking)
Digikey has better prices.
Price from Digikey: 475-2943-ND 1 off 0.34000 10 off 0.27600 100 0.24980 A little cheaper but not as much when you buy in bulk
I have been pondering how to have a configuration option for the different IR carrier frequencies. One option is to set the PWM timer to
See http://letsmakerobots.com/node/17179#comment-41552 for details.
The Lens should be matched to the LED that you have chosen to use, see MilesTag Optics
Found the following Lens calculator which simplifies a things a bit.
TSAL6100 (10°Half Angle) 50mm Dia x 150mm FL Optotronics L-0011
TSAL7600 (15°Half Angle) 38mm Dia x 75mm FL Optotronics L-0005 - Confirmed by GRP 27/5/2012
TSAL6200 (17° Half Angle) 50mm Dia x 75mm FL Optotronics L-0010
TSAL7300 (22°Half Angle)
The sensors used in professional units use Vishay TSOPs. They are constructed as a chip that has a light sensor which interfaces with a fairly complex chip for minimising interference and rejecting foreign light sources. The entire assembly is potted inside an epoxy resin which filters the visible light. Nice piece of technology.
Usually the sensors are mounted on the tagger and on a head band worn by the player. Covering the sensors is considered cheating.
The sensors need to match the wave length of the IR emitters and the carrier frequency used by the game. There are three main frequencies 36, 38 and 56kHz. The problem with 36 and 38kHz is that they are commonly used for tv and other household remote controls. This does make them a little cheaper. The downside of the lower frequency is that they are not as immune to interference from indoor lights or strong sunlight as the 56kHz version
Recommended component: TSOP4856 Mouser Price: 1 off $1.28 10 off $1.21 100 of $1.10 Number required: 4 head sensor domes, plus 1 for the tagger, three Sensors per dome: Approx 15 per player.
For prototyping an enclosure to keep the water out, it is best to use something off the shelf. Considering using the capsules that childrens toys are vended in. see Amazon's B006JQLQHU for example. Need a couple to figure out if we can get three TSOP, a hit LED and two connectors (4P4C handset connectors or the small molex plugs.) Minimum of four connectors are required: +5V, Ground, TSOP signal, Hit Led. The connections are pass-through to the other connector(s). As the TSOPs are open-collector, they can be in parallel with each other. Makes it Easier!
It would be beneficial to allow for the IR carrier frequency to be changed via a menu option. This allows for a difference sensor array to be utilised. Not a requirement immediately.
Some older systems do not use a data module but instead records the statistics such as how times you have fired at something versus how many times you have been hit but someone else. The wireless module needs to talk to a server but there is the case when the wireless can't be received, so storing the data on-board until it can be sent is probably a good idea. The other disadvantage of the reference design is that one of the pins that would otherwise be used for the serial port is in use! All other pins are being used, so we should consider removing a function to free a pin and switch some pins around to suit. The other alternative is to use a shift register to free further pins.
While it's feasible to drive a piezoelectric speaker directly, it's not high fidelity and does create extra work for the processor on the main board. The reference design is using a ISD1790 Sound Chip which has been used in answering machines, toys and the like.
The sound module is connected to the microprocessor as well has to a small audio amplifier which then connects to a speaker. There is an audio in to record sound effects from a computer or other sound source.
Interfaces to the Arduino using SPI
|10||(SS) Could use other pins instead|
Note that even if you're not using the SS pin, it must remain set as an output; otherwise, the SPI interface can be put into slave mode, rendering the library inoperative.
For people that are interested in longer play times or higher sample rate, there is the ISD151xx chip set. This chip is only available in LQFP, which is not able to be hand soldered, hot air maybe.
Sound effects as used by MilesTag: mtsounds
Sound Recorder for the VoiceShield from SpikenzieLabs. The software has been written in Processing and appears to be public domain. There is no schematic but should be possible to reverse engineer the project. Note: The code has been written a different chipset (obsolete) so we will need to port the code.
A more accessible alternative is the Demo board for the ISD1700, the full schematic and some details can be found in the manual
Alternative code can be found at Tutorial of ISD1700 Arduino Shield Note: The Title of the blog entry has a mistyped title of ISD7100 when it's referring to the ISD1700 throughout. All good
Data sheet for ISD1700 And Design Guide
This will be fleshed out further as the software progresses.
The server allows an administrator to configure the game as far as number of teams, who is on what team, the options are endless.
As it could be good fun to be able to play outdoors in a remote area, it would be helpful to avoid having to use a bulky and power hungry PC. Instead we based it on a router board which is Open-WRT compatible.
This wireless module needs to be compatible with the module that is contained inside taggger but might be higher powered for better acknowledgements.
MilesTag Protocol: http://lasertagparts.com/mtformat-2.htm
Optics reference: http://lasertagparts.com/mtoptics.htm
Example system built around ATMEGA328: LaserTag.pde code
The rule of “Don't be a bloody idiot” applies here. That is don't make something that resembles a real firearm.