Introduction: Desk Panic Button

About: My name is Randy and I am a Community Manager in these here parts. In a previous life I had founded and run the Instructables Design Studio (RIP) @ Autodesk's Pier 9 Technology Center. I'm also the author of t…

When I was a kid my father had a panic button under his desk that was wired to call 911. While I thought this was pretty cool at the time, it later occurred to me that he had this because the neighborhood that his business was located in was a bit rough, and -- perhaps -- we were in perpetual danger. Nonetheless, I always thought the idea of having a panic button was pretty darn neat. Perhaps this notion stuck with me for so long of a time because I was never allowed to press it as a kid. It was 'off limits,' and thus a very appealing idea.

Now that I am an adult and have a desk of my own, I resolved that I too needed a panic button. However, I feel like one that calls 911 has limited use in my line of work, and my opportunity for panic was probably less severe. So, I decided that I needed to tone it down a bit. The under desk panic button that I have created dials my own phone when it's pressed.

Of course, you may be wondering why on Earth I would want to call my own phone. Think of this way -- an annoying coworker walks over to your desk with the intention of locking you into a long dull impromptu meeting. You have nowhere to run; nowhere to hide. There is only one way to get out of this -- you need something more important to do. Perhaps now you can see how a device that places a call to yourself may come in extremely useful. If you still can't see it, picture this; Your phone rings. You explain that you need to take this important call. In fact, this is going to take a while. You will need to continue this conversation later. Crisis averted thanks to the Desk Panic Button.

Step 1: Go Get Stuff

You will need:

(x1) Arduino Uno
(x1) GPRS shield
(x1) SIM card
(x1) CR1220 coin battery
(x1) Momentary button switch
(x2) 1/8" mono jacks
(x1) 1/8" male to male mono cable
(x1) Power jack
(x1) Power plug
(x1) 1" x 2" x 3" project enclosure
(x1) 2" x 2.5" x 5" project enclosure
(x1) 9V power supply
(x1) 12" x 12" x 1/8" acrylic sheet
(x2) 1" x 6-32 wood screw
(x1) 1" x 4-40 nut and bolt

(Please note that some of the links on this page contain Amazon affiliate links. This does not change the price of any of the items for sale. However, I earn a small commission if you click on any of those links and buy anything. I reinvest this money into materials and tools for future projects. If you would like an alternate suggestion for a supplier of any of the parts, please let me know.)

Step 2: Prep the Shield

Plug the CR1220 battery into the socket on the GPRS shield, and insert the SIM card.

Step 3: Insert

Insert the GPRS shield into the Arduino.

Step 4: Drill

Drill a 1/4" hole centered and the 1" x 2" side of the smaller project box.

Drilll a 1/2" hole centered on the other 1" x 2" side.

Step 5: Pushbutton

Insert the pushbutton into the 1/2" hole and fasten it in place with its mounting nut.

Step 6: Jack

Insert the 1/8" jack and fasten it into place with its mounting nut.

Step 7: Drill

Put the Arduino and GPRS shield into the large 2" x 2.5" x 5" project enclosure. Make a mark on the outside of the project enclosure approximately where the antenna jack is on the opposite wall. Drill through this mark with a 1/2" drill bit.

On the opposite side of the project box, drill a 1/4" hole on the center face for the 1/8" jack.

Drill another 1/4" hole right around the corner on the 5" x 2" face of the enclosure for the power jack.

Step 8: Attach

Insert a 1/8" jack into the 1/4" hole that has been drilled center in the 2" x 2.5" face of the larger project enclosure. Fasten it firmly in place with its mounting nut.

Insert the M-type power jack into the other 1/4" hole and fasten it in place with a mounting nut.

Step 9: Solder

Solder a red wire from one of the solder lugs on the pushbutton switch to the signal terminal on the 1/8" jack.

Solder a black wire from the other solder lug of the pushbutton switch to the ground terminal on the 1/8" jack.

Step 10: Connect Wires

Solder a 6" black wire to the ground terminal on the M-type power socket, and a 6" red wire to the signal terminal.

Solder a 6" black wire to the ground terminal on the 1/8" jack.

Solder a 10K resistor and a 6" red wire to the signal terminal on the 1/8" jack.

Finally, solder a 6" green wire to the other side of the 10K resistor.

Step 11: Power Plug

Take apart the M-type plug and slide the casing onto the red and black wire.

Solder the red wire to the plug's tip terminal, and the black wire to the plug's barrel terminal.

Screw the casing back onto the plug.

Step 12: Program

Program the Arduino with the following code:

<pre> /*
 Desk Panic Button
 by Randy Sarafan
 
 For more information please visit:
 https://www.instructables.com/id/Desk-Panic-Button/
 
 Code in the Public Domain
 */

 
//includes necessary libraries
#include <SoftwareSerial.h>
#include <String.h>
 
//establish virtual serial port for shield 
SoftwareSerial mySerial(7,8);
 
// the number of the pushbutton pin
const int buttonPin = 2;     

// the state of the button:
int buttonState = 0;

//setup serial and pin states
void setup()
{
  mySerial.begin(19200);               // the GPRS baud rate   
  Serial.begin(19200);    // the GPRS baud rate 
  pinMode(buttonPin, INPUT);     
  
  //engage the shield
  powerUpOrDown();
  
  delay(500);
}
 
void loop()
{

  //checks to see if there is cause for panic
  panic();
  
  //looks to see if the GPRS shield is communicating
  if (mySerial.available())
    Serial.write(mySerial.read());
}
 
 
///DialVoiceCall
///this function is to dial a voice call
void panic(){
  
  //get the current state of the panic button
  buttonState = digitalRead(buttonPin);
 
  //checks to see if the panic button is pressed 
  if (buttonState == HIGH){     
    
    //calls phone number
    //replace with your own phone number
    //if in the US, keep the 1 in the front
    //otherwise replace the 1 with your country code
    
    Serial.println("HELLO");
    
    mySerial.print("ATD14155551212;\r");
    delay(1000);  
  } 
}
 
void ShowSerialData()
{
  while(mySerial.available()!=0)
    Serial.write(mySerial.read());
}

void powerUpOrDown()
{
  pinMode(9, OUTPUT); 
  digitalWrite(9,LOW);
  delay(1000);
  digitalWrite(9,HIGH);
  delay(2000);
  digitalWrite(9,LOW);
  delay(3000);
}

Step 13: Wire It Up

Insert the M-type plug into the power input on the Arduino.

Connect the green wire wire to the 5V socket on the GPRS shield.

Connect the black wire to the ground socket on the GPRS shield.

Connect the red wire to pin 2on the GPRS shield.

Step 14: Attach the Antenna

Thread the antenna onto the GPRS shield through the hole in the project box.

Step 15: Case Closed

Close the case on the project box with screws.

Step 16: Cut

Cut a piece of 1/8" acrylic using the attached template.

The solid black area around the center hole should be etched down 1/16".

Step 17: Drill

Drill a 1/8" hole in the center of the 3" x 2" side of the smaller project box.

Step 18: Attach

Place the mounting bracket just shy of the edge of the desk and use the two outer holes to make marks for drilling.

Drill these marks using a 3/32" drill bit.

Place the 4-40 nut into the etched portion of the center hole and then firmly mount the acrylic bracket to the desk with 6-32 wood screws.

Step 19: Mount

Place the open edge of the smaller project box around the 1/8" acrylic bracket.

Fasten it in place with 1" bolt.

Step 20: Power

Plug the 9V power adapter into the power jack installed in the larger project enclosure. Place this unit somewhere inconspicuous.

The whole system should now be active.

Step 21: Use

Wait until an unwanted conversation presents itself, and then DON'T PANIC!

Discretely press the button, and politely excuse yourself when the phone rings.

Did you find this useful, fun, or entertaining?
Follow @madeineuphoria to see my latest projects.