• 1
    Let's do the connections first

    You can download the circuit diagram from the files section.

     I have divided them into two parts to keep them simple. The first part involves the connection of the keypad, servo motor and led. And the second part shows the connection of the 16 * 2 Lcd. The Keypad Matrix is multiplexed so you need just 8 pins to control the 16 keys. An Led like always is connected to digital pin 13. And a Servo motor is connected to a PWM pin. All the connections are well explained in the the above image above or you can always refer the circuit diagram.

  • 2
    Uploading the code

    *** FIRST DOWNLOAD AND INSTALL THE PASSWORD AND KEYPAD LIBRARIES ***

    JUST EXTRACT THEM IN ARDUINO LIBRARIES FOLDER

    Install the above mentioned two libraries. You can download them directly from the library manager or you can download the zip file and extract these libraries into the Arduino library. You can find them on the official Arduino's website.

    I have attached two programs here. One is to test the keypad and the other is the complete code with password feature. Connect the Arduino to the PC and upload the code to it. Also don't forget to change the servo angle and the password as per your requirement. Once this is done it's time to build the Safe.

    /*
    
    ***  DON'T FORGET TO DOWNLOAD AND INSTALL THE PASSWORD AND KEYPAD LIBRARIES   ***
    
                     JUST EXTRACT THEM IN ARDUINO LIBRARIES FOLDER
    */
    #include  //http://www.arduino.cc/playground/uploads/Code/Password.zip
    #include  //http://www.arduino.cc/playground/uploads/Code/Keypad.zip
    #include <LiquidCrystal.h>
    #include <Servo.h>
    LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
    Servo myservo;
    Password password = Password( "123" );//CHANGE THE PASSWORD HERE
    byte led = 13;
    const byte ROWS = 4; // Four rows
    const byte COLS = 4; //  columns
    // Define the Keymap
    char keys[ROWS][COLS] = {
      {'1','2','3','A'},
      {'4','5','6','B'},
      {'7','8','9','C'},
      {'*','0','#','D'}
    };
    
    byte rowPins[ROWS] = { A0, A1, A2, A3 };// Connect keypad ROW0, ROW1, ROW2 and ROW3 to these Arduino pins.
    byte colPins[COLS] = { 9, 8, 7, 6 };// Connect keypad COL0, COL1 and COL2 to these Arduino pins.
    
    
    // Create the Keypad
    Keypad keypad = Keypad( makeKeymap(keys), rowPins, colPins, ROWS, COLS );
    
    void setup()
    {
      pinMode(led, OUTPUT);
      myservo.attach(10);
       digitalWrite(led, LOW); // Turn the LED off
         myservo.write(70);
      lcd.begin(16, 2);
      Serial.begin(9600);
      lcd.print("ENTER PASSWORD");
      lcd.setCursor(0, 1);
      keypad.addEventListener(keypadEvent); //add an event listener for this keypad
    }
    
    void loop(){
      keypad.getKey();
    }
    
    //take care of some special events
    void keypadEvent(KeypadEvent eKey){
      switch (keypad.getState()){
        case PRESSED:
      Serial.print("Pressed: ");
      Serial.println(eKey);
      switch (eKey){
        case 'A': checkPassword(); break;
        case 'C': password.reset(); break;
        default: password.append(eKey);
         }
      }
    }
    
    void checkPassword()
    {
      if (password.evaluate())
      {
        Serial.println("Success");
        lcd.print("SAFE OPENED");
       myservo.write(110); 
        digitalWrite(led,HIGH);
        lcd.setCursor(0, 1);
        lcd.print("");
        password.reset();
      }
      else
      {
        Serial.println("Wrong");
        lcd.print("SAFE CLOSED");
         myservo.write(70); 
        digitalWrite(led,LOW);
        lcd.setCursor(0, 1);
        lcd.print("");
       password.reset();
      }
    }
    

     Keypad Test Code :

    #include <Keypad.h>
    #include <LiquidCrystal.h>
    LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
    byte led = 13;
    const int pass='1';
    const byte ROWS = 4; //four rows
    const byte COLS = 4; //three columns
    char keys[ROWS][COLS] = 
    {
      {'1','2','3','A'},
      {'4','5','6','B'},
      {'7','8','9','C'},
      {'*','0','#','D'}
    };
    byte rowPins[ROWS] = {A0, A1, A2, A3}; //connect to the row pinouts of the keypad
    byte colPins[COLS] = {9, 8, 7, 6}; //connect to the column pinouts of the keypad
    
    Keypad keypad = Keypad( makeKeymap(keys), rowPins, colPins, ROWS, COLS );
    
    void setup()
    {
       pinMode(led, OUTPUT);
       digitalWrite(led, LOW);           // Turn the LED off.
      lcd.begin(16, 2);
      Serial.begin(9600);
       lcd.print("ENTER PASSWORD");
       lcd.setCursor(0, 1);
       keypad.addEventListener(keypadEvent);
    }
      
    void loop(){
      char key = keypad.getKey();
      
      if (key)
      {
        Serial.println(key);
        lcd.print(key);
      }
    }
    void keypadEvent(KeypadEvent key)
    {
        switch (keypad.getState())
        {
        case PRESSED:
            if (key ==pass ) 
            {
                digitalWrite(led,HIGH);        // Remember LED state
            }
            else{digitalWrite(led,LOW);}
            break;
        }
    }
    
  • 3
    Putting everthing together

    I don't have pictures of the making process of the Safe but I can guide you through the steps.

    First cut a rectangular piece like I did in the above picture. This acts like a door for your safe. Cut the three sides and leave the fourth side as it is to act as a hinge or you can cut all the four sides and attach one side again with some tape.

    Now fix a door latch to the safe's door and connect the latch's holding part to the servo's horn. Use some copper wire or bicycle spoke to do this. Also fix the servo motor on the Safe's door and adjust the length of the copper wire.

    Now cut another rectangle for the LCD and fix it in place.

    Cut a horizontal slot to just pass the keypad connector inside the box.

    Place a led inside the box to show the status(This is optional but it looks cool)

    Now fix the arduino inside with help of some double sided tape.

    And then cover the box with some gift wrap to give it a finishing look. You can also add a small knob to the door.

    That's it your project is ready.