In this tutorial, you will learn how to enter a password using only one push button. This is an Arduino Password Security system. Numbers from 0 to 9 are displayed on the LCD and a push button is used to select any number. This way you don’t need a keypad matrix, which results in less wiring, reduced cost and easy programming as the one button password entering system needs only two Arduino Pins. For the demonstration purposes, I connected a 220Vac indicator lamp. This indicator lamp can only be turned ON if the correct password is entered, while the reset button is used to turn off the relay. When you enter a Wrong password the Indicator lamp will not turn ON.
Now for the 2nd attempt, you need to press the reset button. Now when you enter the correct password which is 7269…
as you can see the indicator lamp is turned ON…Now using the reset button the relay can be turned OFF.
The Arduino Password Security system is based on Atmega328 microcontroller, the same microcontroller which is used in Arduino. To reduce the price I designed my own PCB board and sent my PCB board Gerber files to PCBway Company which is one of the top leading companies throughout the world. In part1 I explained the whole process how to generate the Gerber files and how to place an online order. The link is given in the description…
In this episode, I will cover
- Circuit diagram
- PCB explanation
- Programming and finally number
Components needed for building Password Security system.
Arduino Uno: https://amzn.to/2tVz1vu
Mega 2560: https://amzn.to/2ze1kdu
16×2 LCD: https://amzn.to/2FcXuUS
330 ohm resistors pack: https://amzn.to/2NtlAeh
5v 2A adaptor: https://amzn.to/2GsNfcw
2n2222 npn transistors: https://amzn.to/2EmXsIb
10k Resistor: https://amzn.to/2KTd6OW
lm7805 Voltage Regulator: https://amzn.to/2IZEl5x
330-ohm resistors pack: https://amzn.to/2NtlAeh
female DC power jack socket: https://amzn.to/2KEo1gt
470 uf capacitors: https://amzn.to/2xDCOzf
5×7 cm vero board: https://amzn.to/2OHGbvn
female headers: https://amzn.to/2zqmtiJ
connection wires: https://amzn.to/2DpBuW7
Super Starter kit for Beginners: https://amzn.to/2KJvmKG
Jumper Wires: https://amzn.to/2KMoVXs
Bread Board: https://amzn.to/2MS4q8X
12v Adaptor: https://amzn.to/2Ntr6h1
PCB plate: https://amzn.to/2IUwpCt
Variable Supply: https://amzn.to/2MT4Qfj
Digital Multimeter: https://amzn.to/2Nvft9i
Vero Board / strip board: https://amzn.to/2MTf9jD
Soldering iron kit: “best” You guys should definitely purchase this: https://amzn.to/2zfoNuJ
Solder wire: https://amzn.to/2ufUMWf
Wire Stripper: https://amzn.to/2KOqxfU
wire cutter: https://amzn.to/2ucIq14
PCB small portable drill machine: https://amzn.to/2Nu62XF
Following is the Complete Circuit diagram of the Arduino Password Security system using only one Push Button.
This is the complete circuit diagram; this is a pushbutton and is used to enter a password by selecting different numbers. One side of the pushbutton is connected with the ground, while the other side is connected with pin number 2 of the Arduino…. this is also a push button and is used to reset the password and Relay. One side of the pushbutton is connected with the ground while the other side is connected with pin number 3 of the Arduino….
This is a 16×2 LCD and will be used to display the numbers from 0 to 9…pin number 1, 5 and 16 are connected with the ground..pin number 2 and 15 are connected with 5volts. Pin number 3 is connected with the middle pin of the variable resistor. This variable resistor will be used for the LCD contrast adjustment. The RS pin of the LCD is connected with pin number 6, the enable pin of the LCD is connected with pin number 7 of the Arduino…pins d4 to d7 which are the data pins are connected with pins 8 to 11 of the Arduino.
This is a 12v SPDT type relay. This relay has 5 pins, these are the two coil pins this is the common pin, this is the normally open pin and this is the normally closed pin. These three pins have no physical connection with the relay coil pins. This relay cannot be directly controlled using the controller… to energize the relay coil you need around 28milli amps. This is not a fixed value, this depends on the size of the relay you are using. You can easily calculate this value, first find the relay coil resistance using a digital multi meter..as it’s a 12v relay so v = 12, now using the Ohm’s law we can find the value of current needed to energize the relay coil…the type of the relay I am going to use needs 28 milliamps, so now I can use any general purpose NPN or PNP type transistor so far its collector current is greater than 28 milliamps, but it’s a good designing practice to use a larger value transistor. In my case, I will be using 2n2222 NPN transistor, as its really cheap and you can find this transistor in any electronics shop….
The collector of the 2n2222 NPN transistor is connected with the relay coil while the other side of the relay coil is connected with 12volts. The emitter of the transistor is connected with the ground. A 10k resistor is connected with the base, while the other side of the resistor is connected with pin number 13 of the Arduino. the transistor and resistor together make the relay driver circuit. This is a freewheeling diode and is used against the back emf protection. So that’s all about the connections and now let’s discuss the PCB designing.
PCB design explanation:
This PCB is designed in cadsoft eagle 9.1.0 version, if you want to learn how to make a schematic and PCB then watch my tutorial.
This is a double sided PCB. The blue color represents the bottom side while the red color is the top side. All these connections are as per the circuit diagram as explained. Watch part1 for the Gerber files generation and online order placement.
PCB boards explanation:
These are the PCB boards which I received from the PCBway Company. As you can see the quality is really great and everything is as per the order. During the online order placement, I selected blue color, but later I decided to change it to black color. This change was only possible due to the friendly behavior of the PCBway Company staff members. I am 100% satisfied with their work.
PCB components installation and soldering:
First of all I installed all the components ..as you can see maximum components are installed and now it’s time to start the soldering…
as you can see maximum components are soldered and now only female headers and two variable resistors are balance. So I will be back after soldering the remaining components…
As you can see all the components are soldered…
This variable resistor will be used for the lcd contrast
this is for the lcd…
So double check all the connections and make sure there is no short circuit before you power up the circuit. At the end connect two buttons with pin number 2 and pin number 3.
Enter a Password using only one Push Button
Programmer: Engr Shahzada Fahad
YouTube channel: https://www.youtube.com/c/ElectronicClinic
Facebook Page: https://web.facebook.com/groups/190031841821771/
#include <LiquidCrystal.h> this a library which is specially created for the 16×2 LCD, the same library can also be used with 16×4 LCD and some other types. # means that this is a preprocessor directive and .h means that this a header file. I have a very detailed getting started tutorial on how to use a 16×2 LCD.
#define rs 6 // original 12 of arduino
#define en 7 // origional 10
#define d4 8 // original 5
#define d5 9 // 4
#define d6 10 // 3
#define d7 11 // 2
// rw of lcd is connected to ground
These are the LCD pins which I already explained in the circuit diagram.
// initialize the library with the numbers of the interface pins
LiquidCrystal lcd(rs, en, d4, d5, d6, d7);
// Tracks the time since last event fired
unsigned long previousMillis=0;
unsigned long int previoussecs = 0;
unsigned long int currentsecs = 0;
unsigned long currentMillis = 0;
Then I defined some variables of the type unsigned long for storing the time information.
int secs = 0;
int interval= 1 ; // updated every 1 second
int epass = 2; // enter password
int load1 = 13; // the output load/ machine, it can be a bulb, a motor etc ...
int rbutton = 3; // reset button
int Lflag = 0; // load flag
// your 4 digit password
int pdigit1 = 7;
int pdigit2 = 2;
int pdigit3 = 6;
int pdigit4 = 9;
int digit1 = 0;
int digit2 = 0;
int digit3 = 0;
int digit4 = 0;
then I defined some variables of the type integer, all the variable are well commented. Still, if you have any question let me know in a comment. As you know my friends every Arduino and Mega program has at least two functions which are the void setup and void loop functions. Void means that this function is not returning any value while the empty parenthesis means that this function is not taking any arguments as the input.
// set up the LCD's number of columns and rows:
// Print a message to the LCD.
// Initialise the IO and ISR
currentMillis = millis();
currentsecs = currentMillis / 1000;
if ((unsigned long)(currentsecs - previoussecs) >= interval)
secs = secs + 1;
previoussecs = currentsecs;
if (secs >= 10)
secs = 0;
if (digitalRead(rbutton) == LOW )
Lflag == 0;
digit1 = 0;
digit2 = 0 ;
digit3 = 0;
digit4 = 0;
if ( (secs >= 1) && ( digitalRead(epass) == LOW) && (digit1 == 0) && (digit2 == 0) && (digit3 == 0) && (digit4 ==0))
digit1 = secs;
// for digit2
if ( (secs >= 1) && ( digitalRead(epass) == LOW) && (digit1 != 0) && (digit2 == 0) && (digit3 == 0) && (digit4 ==0))
digit2 = secs;
// for digit3
if ( (secs >= 1) && ( digitalRead(epass) == LOW) && (digit1 != 0) && (digit2 != 0) && (digit3 == 0) && (digit4 ==0))
digit3 = secs;
// for digit3
if ( (secs >= 1) && ( digitalRead(epass) == LOW) && (digit1 != 0) && (digit2 != 0) && (digit3 != 0) && (digit4 ==0))
digit4 = secs;
if ( (pdigit1 == digit1) && ( pdigit2 == digit2) && (pdigit3 == digit3) && ( pdigit4 == digit4) && (Lflag == 0) )
Lflag == 1;