2011-03-23_19-14-43_727.jpg
My friend and i built this prop for airsoft/paintball matches.  Its sort of like capture the flag only disarm the "bomb".
How it works is there is a predetermined time limit (which u can change in the code) and the opposing team has that much time to find the code and the bomb and disarm it.  How they find the code is up to you... capture a person? sure!  Find it hidden somewhere? sure! or whatever!  When the bomb is turned on it asks for a code and you can enter in any four number combo and that is the disarm code for that round.  If the person puts in the wrong code it will add 1min 30sec to the time when the time runs out? BOOM! well thats what it says on the screen and it makes a funky noise = ]  This is version 1.0 hopefully in the future we will add wires to unplug to disarm it and some other neat things but for now this is perfect and works well for what we want!  I hope you enjoy the instructable!

Step 1: Supplies

2011-03-23_19-14-55_638.jpg
You will need the following electronic components:

1 Arduino                          (We use duemilanove and you can buy these everywhere online)
1 Arduino Proto-Shield  (or if you want just a breadboard or protoboard)
1 LCD Screen 16x2       ( we used this one from sparkfun! http://www.sparkfun.com/products/255)
1 Numeric KeyPad        ( we used another one from sparkfun! http://www.sparkfun.com/products/8653)
1 Potentiometer             ( we used a 50k i believe! bought from raidoshack awhile ago)
1 8Ohm Speaker           ( tore one out of an old toy, but you can find them EVERYWHERE!)
1 Green LED 
1 Red LED
4 1k Ohm resistors

Other Materials:

Some sort of case ( we found ours at a thrift store but i think they sell them at walmart)
a chunk of wood   ( this is to bring the arduino off of the bottom of the case and up towards the top)
Screws                    (to attach the arduino to the chunk of wood)
Heat shrink tubing

Tools you'll need:

Soldering Iron
Solder
Wire     (we used alot of old computer cable so it would stay kinda together)
Wire Cutters
Hot Glue Gun
Hot Glue
Saw
Dremel
Screw driver



Step 2: Cutting up your box

2011-03-23_19-14-43_727.jpg
This is basically up to you how you want the layout to be ... you could have everything inside so when u open it up u can see all of the nice hardware and it looks more low budget (as if this isn't low budget enough!) or you can make it clean where you only see the keypad and such.... anyways its all up to you its really just a style thing.
We cut the square out for the lcd screen and then drilled the holes for the LEDS, then cut out the keypad and we just eyed everything as far as positioning. We did all our cutting with a dremel and razor blade.

We then cut the slots in the back:  First we cut a hole for the potentiometer to fit through, then we cut another hole in the back just for the power adapter hole and then also a hole for the USB cable just for programming if we needed to we wouldn't have to take the arduino out.
all of these holes and such are your call for style so just do a layout of everything until you get it how you like it then make the cuts.

Step 3: Placing the arduino

2011-03-23_19-16-10_605.jpg
This again will depend on your case height and such as you can see here we had to use a piece of scrap wood to pull the arduino off of the case.  We glued the wood to the case and then screwed the arduino into the wood.  You'll notice the way the wires sag in this photo ... thats a good thing you'll want them to be longer than you need in order to open and close the box without pulling the wires or breaking connections!

Step 4: Wiring and such

2011-03-23_19-16-21_770.jpg
bombsch.png
2011-03-23_19-16-21_770.jpg
You'll have to just follow the schematic we unfortunately didn't make a step by step on this.   
Heres a quick outline to go along with the schematic
Arduino pins :

DPin 0 = Nothing
DPin 1 = Nothing
DPin 2 = Pin 8 on keypad
DPin 3 = Red LED
DPin 4 = Green LED
DPin 5 = Nothing
DPin 6 = Nothing
DPin 7 = Pin 4 LCD
DPin 8 = Pin 6 LCD
DPin 9 = Speaker +
DPin 10 = Pin 11 LCD
DPin 11 = Pin 12 LCD
DPin 12 = Pin 13 LCD
DPin 13 = Pin 14 LCD
APin 0 = Pin 2 Keypad
APin 1 = Resistor to Pin 3 Keypad
APin 2 = Pin 4 Keypad
APin 3 = Resistor to Pin 5 Keypad
APin 4 = Resistor to Pin 6 Keypad
APin 5 = Resistor to Pin 7 Keypad

LCD Screen Pins:

Heres the missing pins on the LCD
LCD pin1 = Potentiometer 5v
LCD pin 2 = Potentiometer GND
LCD pin 3 = Potentiometer Middle 
LCD pin 5 = GND
LCD pin 15 = 5v
LCD pin 16 = GND

That should be all of them .... on the spark fun website if you follow the links on the supplies page there are some really great tutorials that explain how to hook up the pad and the lcd.  

Step 5: Uploading the code

arduino.jpg
Heres the code you will need to get it to work the way ours does as always feel free to make it better!

/*Airsoft Bomb
Version 1.1Creators:
Chase Cooley&&&&&&&&&&&&
Joey Meyer*/

#include <Keypad.h>#include <LiquidCrystal.h>
#include <Tone.h>
#define pound 14
Tone tone1;int Scount = 0; // count seconds
int Mcount = 0; // count minutesint Hcount =0; // count hours
int Dcount = 0; // count daysint val = 0;
long secMillis = 0; // store last time for second addlong interval = 1000; // interval for seconds
char password[4];int currentLength = 0;
int i = 0;char entered[4];
int ledPin = 3; //red lightint ledPin2 = 4; //green light

LiquidCrystal lcd(7,8,10,11,12,13);const byte ROWS = 4; //four rows
const byte COLS = 3; //three columnschar keys[ROWS][COLS] = {
{'1','2','3'},{'4','5','6'},
{'7','8','9'},{'*','0','#'}
};
byte rowPins[ROWS] = {18, 2, 14, 16}; //connect to the row pinouts of the keypadbyte colPins[COLS] = {17, 19, 15}; //connect to the column pinouts of the keypad

Keypad keypad = Keypad( makeKeymap(keys), rowPins, colPins, ROWS, COLS );
void setup(){
pinMode(ledPin, OUTPUT); // sets the digital pin as outputpinMode(ledPin2, OUTPUT); // sets the digital pin as output
tone1.begin(9);lcd.begin(16, 2);
Serial.begin(9600);lcd.clear();
lcd.setCursor(0,0);lcd.print("Enter Code: ");
while (currentLength < 4){
lcd.setCursor(currentLength + 6, 1);lcd.cursor();
char key = keypad.getKey();key == NO_KEY;
if (key != NO_KEY){
lcd.print(key);password[currentLength] = key;
currentLength++;delay(200);
}}
if (currentLength == 4){
lcd.noCursor();lcd.clear();
lcd.home();lcd.print("You've Entered: ");
lcd.setCursor(6,1);lcd.print(password[0]);
lcd.print(password[1]);lcd.print(password[2]);
lcd.print(password[3]);delay(3000);
lcd.clear();currentLength = 0;
}}

void loop(){
char key2 = keypad.getKey(); // get the keylcd.setCursor(0,0);
timer();if (key2 != NO_KEY)
{while (key2 == NO_KEY)
{key2 = keypad.getKey();
}if (key2 != NO_KEY)
{lcd.clear();
lcd.setCursor(0,0);lcd.print("Enter Code: ");
while (currentLength < 4){
lcd.setCursor(currentLength + 6, 1);lcd.cursor();
char key2 = keypad.getKey();if (key2 != NO_KEY)
{lcd.print(key2);
entered[currentLength] = key2;currentLength++;
delay(200);lcd.noCursor();
lcd.setCursor(currentLength + 5, 1);lcd.print("*");
lcd.setCursor(currentLength + 6, 1);lcd.cursor();
}}
if (currentLength == 4){
if (entered[0] == password[0] && entered[1] == password[1] && entered[2] == password[2] && entered[3] == password[3]){
lcd.noCursor();lcd.clear();
lcd.home();lcd.print(" Defused ");
currentLength = 0;delay(2500);
lcd.setCursor(0,1);lcd.print("Reset the Bomb");
}else
{lcd.noCursor();
lcd.clear();lcd.home();
lcd.print(" Wrong ");lcd.setCursor(0,1);
lcd.print(" Add - 1:30 ");if (Mcount < 14)
{Mcount = Mcount + 1;
}if (Scount < 59)
{Scount = Scount + 30;
}delay(1500);
currentLength = 0;}
}}
}}

void timer(){
if ( Mcount >= 15 ){
while ( Mcount >= 15){
lcd.noCursor();lcd.clear();
lcd.home();lcd.print(" !BoOm! ");
tone1.play(NOTE_A2, 200);digitalWrite(ledPin, HIGH); // sets the LED on
tone1.play(NOTE_A2, 200);delay(10); // waits for a second
digitalWrite(ledPin, LOW); // sets the LED offtone1.play(NOTE_A2, 200);
delay(10); // waits for a seconddigitalWrite(ledPin2, HIGH); // sets the LED on
tone1.play(NOTE_A2, 200);delay(10); // waits for a second
digitalWrite(ledPin2, LOW); // sets the LED offtone1.play(NOTE_A2, 200);
delay(10); // waits for a secondchar key4 = keypad.getKey();
if (key4 != NO_KEY){
while (key4 == NO_KEY){
key4 = keypad.getKey();}
if (key4 = '#'){
lcd.clear();lcd.print("Reset the Bomb");
}}
}if ( Mcount == 60) // if Mcount is 60 do this operation
{//delay (32); // good place to fine tune timing
Mcount = 0; // reset McountHcount ++;
}if (Hcount> 23)
{Dcount++;
Hcount = 0; // have to reset Hcount to "0" after 24hrs}

lcd.setCursor (0,1); // sets cursor to 2nd linelcd.print ("Timer: ");
lcd.print (Dcount);lcd.print (":");
lcd.print (Hcount);lcd.print (":");
lcd.print (Mcount);lcd.print (":");
lcd.print (Scount);
if (Scount >59) // if 60 do this operation{
Mcount ++; // add 1 to McountScount = 0; // reset Scount
//delay (58); // changes ms per min}
if (Scount < 60) // do this oper. 59 times{
unsigned long currentMillis = millis();//delay (988); // changing by one = 60 ms a min
if(currentMillis - secMillis > interval){
tone1.play(NOTE_G5, 200);secMillis = currentMillis;
Scount ++; // add 1 to ScountdigitalWrite(ledPin2, HIGH); // sets the LED on
delay(10); // waits for a seconddigitalWrite(ledPin2, LOW); // sets the LED off
delay(10); // waits for a second}
}}

Step 6: Testing!

Heres a quick video on it working


If you like this plz vote for me!  This is my first contest entry thanks for looking at my instructable!
MaltheF says: Jun 3, 2013. 3:14 AM
After nearly 4 hours of rewriting the code, I made it work, and added a few improvements, like making the timer count down, instead of up, which I think looks better for a bomb scenario, I plan on releasing the code once I've rewritten everything.
aversione beta says: Jan 31, 2013. 4:02 PM
Hello,
the code does not make me see the time, why?
Can you give me a hand? Thank you!
mb inventor says: Oct 13, 2012. 10:50 PM
this is awsome good joj
kilofeenix says: Sep 22, 2012. 3:02 PM
This is exactly what i've been looking for!! exactly for the same reason too. but...anyway to do this using a duel 7 segment display instead of the lcd screen?
just want the red led to signify wrong code and green to signify the correct code.
yellowcouch (author) in reply to kilofeenixSep 30, 2012. 3:34 PM
You could do this with a 7 segment fairly easily, and changing the code to just do red as wrong and green as good will be extremely easy.
on the arduino.cc website there is a good section on controlling 7 segments
Fixerized says: Apr 12, 2012. 8:39 AM
Hello everybody,

First of all I've got to say that I've never used Arduino, but I'm very interested in this aprticular project, because I'm an airsoft player and I've been looking for a timed bomb for a long time.

Well, then is time for my question: Could it be posible to use this to activate a relay? (Which in turn, activates a piezo siren)

If it is possible, could someone help me with the code? I'm totally green in programming.


Thanks and sorry for my poor English.
yellowcouch (author) in reply to FixerizedApr 13, 2012. 9:50 AM
Hey Fixerized,
Thanks for your interest in the project. There is no reason i can see that you couldn't use a relay with this project. That said I dont believe it will be a problem of coding, but rather a Hardware problem. Here are a few sites and other instructables that might be helpful.
http://www.instructables.com/id/Connecting-a-12V-Relay-to-Arduino/
http://www.instructables.com/id/Arduino-Controlled-Relay-Box/
http://www.sparkfun.com/tutorials/119
let me know if you have more questions.
Fixerized in reply to yellowcouchApr 14, 2012. 6:34 PM
Thanks for the help,

AFAIK, I should get a digital pin to high level when i want the relay to activate, this is easy.

The problem comes when we get to the programming part... I don't know what should I change in the code to activate the relay instead of emitting the tone.

Oh, and I don't understand something... What does the potentiotemeter do?

Lot of thanks!
yellowcouch (author) in reply to FixerizedApr 16, 2012. 7:43 PM
I think you keep the code the same, it will play the tune through the speaker the same. I think you just need the power supply for the speaker.... (because it'll be greater than 5 volts i'd imagine) The potentiometer is to adjust the brightness of the lcd screen.
Fixerized in reply to yellowcouchApr 17, 2012. 11:51 AM
I will use some batteries for the horn, and that's why I wanted to use the relay, It allows me to use some "heavy" sound parts haha

And I was kinda sleepy that day, the use of of the pot was clear... xDD

I could tell you when I finish it, if you want ;)

And thanks again!

black.engel says: Jan 12, 2012. 1:35 PM
Hello,
i need HELP please :(

the code have more errors:

sketch_jan12a.cpp:6:46: error: Keypad.h: No such file or directory
sketch_jan12a.cpp:7:18: error: Tone.h: No such file or directory
sketch_jan12a:8: error: 'Tone' does not name a type
sketch_jan12a:16: error: 'LiquidCrystal' does not name a type
sketch_jan12a:18: error: expected unqualified-id before '{' token
sketch_jan12a:18: error: expected unqualified-id before ',' token
sketch_jan12a:18: error: expected unqualified-id before '{' token
sketch_jan12a:18: error: expected unqualified-id before ',' token
sketch_jan12a:19: error: expected unqualified-id before '{' token
sketch_jan12a:19: error: expected unqualified-id before ',' token
sketch_jan12a:19: error: expected unqualified-id before '{' token
sketch_jan12a:20: error: expected declaration before '}' token

can you help me please?

yellowcouch (author) in reply to black.engelJan 13, 2012. 10:26 AM
it looks like you dont have the libraries for downloaded for the keypad or tones
you can get them from www.arduino.cc
black.engel in reply to yellowcouchJan 14, 2012. 5:43 AM
Hello,

thank you for the help.

I have download the keypad and tone file from www.arduino.cc
Now i have only this errors.

sketch_jan14a.pde:-1: error: expected unqualified-id before '{' token
sketch_jan14a.pde:-1: error: expected unqualified-id before ',' token
sketch_jan14a.pde:-1: error: expected unqualified-id before '{' token
sketch_jan14a.pde:-1: error: expected unqualified-id before ',' token
sketch_jan14a.pde:-1: error: expected unqualified-id before '{' token
sketch_jan14a.pde:-1: error: expected unqualified-id before ',' token
sketch_jan14a.pde:-1: error: expected unqualified-id before '{' token
sketch_jan14a.pde:-1: error: expected declaration before '}' token

Can you help me please?
youwish says: Nov 7, 2011. 4:37 PM
And would you be willing to build one of these, then sell it?
furrysalamander says: Aug 24, 2011. 4:17 PM
What's the overall price on this thing?
yellowcouch (author) in reply to furrysalamanderAug 25, 2011. 9:05 PM
If you already have the arduino and wires ect... some of the basic electronic things like soldering iron and solder and other tools it will cost about 30$ to make. If you need to buy the arduino and the shield and so on then it will cost about 70$ to make. If you need tools and such you are looking at upwards 100. It also depends on what case you use and how creative you want to get with the designs. This particular one cost me about 40$ but i had the arduino, wires, push buttons, and leds along with the tools to do it. The cost was in the lcd screen, key pad, speaker, case and time = ] I know this is a lengthy and non definitive answer but but its going to be different for everyone depending on the situation and style. Most everything was bought at sparkfun's website you can go there and price the things you need if you want to get real precise.
youwish in reply to yellowcouchNov 7, 2011. 4:20 PM
Hi, I'm very interested in building this product, but have no experience whatsoever in arduinos, or programming and whatnot, can you direct me to a site that can teach me the basics and how to do this?
furrysalamander in reply to yellowcouchSep 2, 2011. 2:17 PM
Okay I have basic eletronics tools, soldering iron, multimeter, etc. But no arduino or other stuff like that. So would that be about $70, right?
yellowcouch (author) in reply to furrysalamanderSep 2, 2011. 11:54 PM
69.75$ with shipping if you order everything straight from spark fun (minus wire) but with some more research and robbing other electronic devices you could knock that price down a bit. If you used perf board instead of the shield, took leds and speakers from other sources: computer speark, toys, ect... Then that will drop the price of parts to 47.85$ with shipping. I think if you got a little more crafty then you could cut the cost a little more maybe using a different display or just regular buttons and not the keypad but those are relatively cheap compared to the headache of making them from scratch or modifying it. I hope this helps you and again if you have any questions feel free to ask!
jimmy1988 says: Nov 6, 2011. 1:44 PM
Th code is not displaying the time. I need HELP.
Peasy93 says: Sep 24, 2011. 8:51 PM
hi its an amazing project
but i have the same problem like Soul1974

sketch_sep25a.cpp:6:20: error: Keypad.h: No such file or directory
sketch_sep25a:19: error: expected unqualified-id before '{' token
sketch_sep25a:19: error: expected unqualified-id before ',' token
sketch_sep25a:19: error: expected unqualified-id before '{' token
sketch_sep25a:19: error: expected unqualified-id before ',' token
sketch_sep25a:20: error: expected unqualified-id before '{' token
sketch_sep25a:20: error: expected unqualified-id before ',' token
sketch_sep25a:20: error: expected unqualified-id before '{' token
sketch_sep25a:21: error: expected declaration before '}' token

Please help me

soul1974 in reply to Peasy93Sep 27, 2011. 10:43 PM
Pm me and i will send you the code
FalconFour says: Jun 16, 2011. 3:28 PM
Yeehck. Okay, the code for this thing makes baby Jesus cry. I'll leave the critique at that, but I did spend about 15 minutes going over and optimizing the code line by line, and creating a MUCH more elegant and less "just so happens to not catch the Arduino on fire, by sheer luck" style code...

The code and the preceding discussion from members of the Arduino community collectively scratching their heads, is located here:

http://arduino.cc/forum/index.php/topic,64119.msg467415.html#msg467415

Hope it helps!
yellowcouch (author) in reply to FalconFourJul 7, 2011. 6:11 PM
thank you sir! This is the first thing i've coded in the arduino language usually use csharp so thanks for making it better!
soul1974 in reply to FalconFourJun 16, 2011. 11:07 PM
Thanks again,

You have helped I have post numerous requests to the creators with no luck.
If it was not for your help I would have stayed clear of Arduino projects.

Thanks again I will make sure you get taged in the project.
oldboffin says: Jun 14, 2011. 8:31 PM
Very nice, should have ( 220 ohm ? ) resistors in series with the LEDs if they are not 5v types.
yellowcouch (author) in reply to oldboffinJul 7, 2011. 6:09 PM
ya the 220 ohm resistors wouldn't be a bad addition = ]
soul1974 in reply to oldboffinJun 21, 2011. 10:38 PM
Thanks for the tip
soul1974 says: Jun 6, 2011. 2:14 PM
HI I am having trouble compiling the code I keep getting these errors:

sketch_jun06a.cpp:6:46: error: Keypad.h: No such file or directory
sketch_jun06a.cpp:7:19: error: Tone.h: No such file or directory
sketch_jun06a:8: error: 'Tone' does not name a type
sketch_jun06a:16: error: 'LiquidCrystal' does not name a type
sketch_jun06a:18: error: expected unqualified-id before '{' token
sketch_jun06a:18: error: expected unqualified-id before ',' token
sketch_jun06a:18: error: expected unqualified-id before '{' token
sketch_jun06a:18: error: expected unqualified-id before ',' token
sketch_jun06a:19: error: expected unqualified-id before '{' token
sketch_jun06a:19: error: expected unqualified-id before ',' token
sketch_jun06a:19: error: expected unqualified-id before '{' token
sketch_jun06a:20: error: expected declaration before '}' token

Please help!
yellowcouch (author) in reply to soul1974Jun 9, 2011. 9:24 PM
Hey soul 1974 it looks like you dont have the libraries downloaded from the arduino.cc website i sent you a pm that should take care of it let me know how it goes!
soul1974 in reply to yellowcouchJun 19, 2011. 2:42 AM
HI,

I downloaded all the libraries but it seems the code is corupt, could you please respond to my PM and email me the code. I realywant to get this project to work I have posted on numerous forums for help and I am getting alot from FalconFour but I am still not getting your results please help.
soul1974 in reply to yellowcouchJun 15, 2011. 9:35 AM
Thanks for all the help, pleae could you send me the code in a txt file i will pm my email address to you,it seems the problem is in the code.
yellowcouch (author) says: Apr 26, 2011. 8:52 PM
also i ve had a couple questions about how this thing is powered and the answer is a 9v. battery = ]
irondirtboy11 says: Apr 25, 2011. 11:55 AM
i dont know what an "arduino" is :/
yellowcouch (author) in reply to irondirtboy11Apr 26, 2011. 8:51 PM
http://en.wikipedia.org/wiki/Arduino
also more information at
www.arduino.cc
its basically a tiny computer
yellowcouch (author) says: Mar 31, 2011. 3:54 PM
thanks for the compliments! Atom i will for sure stay outta air ports well any mass transit for that matter lol. and spark2flame post a photo of yours i'd love to see what it looks like. And airsoft although i do have a paintball gun air soft is usually the choice = ]
spark2FLAME says: Mar 31, 2011. 1:25 PM
Wow, very cool looking prop and useful too! I will definitely be making this for the next skirmish. Oh and by the way, do you paintball or airsoft?
atombomb1945 says: Mar 31, 2011. 6:12 AM
It should go with out saying that you should avoid Airports with this.

Nice set up.
Pro

Get More Out of Instructables

Already have an Account?

close

PDF Downloads
As a Pro member, you will gain access to download any Instructable in the PDF format. You also have the ability to customize your PDF download.

Upgrade to Pro today!