Circuit de verrouillage de sécurité par mot de passe utilisant le clavier 4 × 4 et Arduino

Essayez Notre Instrument Pour Éliminer Les Problèmes





Dans cet article, nous allons construire un circuit de verrouillage de sécurité par mot de passe, accessible par un mot de passe à 6 chiffres. Pour être plus précis, il s'agit d'un mot de passe alphanumérique.

Matériel pour ce projet

Nous allons utiliser le clavier 4x4, qui se compose de 0 à 9 valeurs décimales, de deux caractères spéciaux «#» et «*» et des alphabets A à D. La combinaison de ces caractères peut être utilisée comme mot de passe.



L'Arduino est le cerveau du système, un relais est interfacé avec Arduino pour s'activer et se désactiver, lorsque le mot de passe correct est commandé. Deux voyants LED sont utilisés ici pour indiquer l'état du système de verrouillage.

Si vous n'êtes pas familier avec le clavier 4x4, veuillez vous référer à mon article précédent, qui a discuté en détail bases du clavier matriciel 4x4



Le projet proposé a une conception matérielle assez minimaliste. Il se compose simplement d'un clavier, d'un relais, d'un arduino et de quelques LED, même un noob dans arduino peut l'accomplir facilement.

La seule partie qui est un peu difficile dans ce projet est le codage, ne vous inquiétez pas, le code est donné dans ce projet. Le programme doit être écrit de telle manière qu'il soit infaillible et qu'aucun pirate de l'air ne puisse pirater le système.

Mais attention si vous exposez le matériel ou le matériel de ce projet est facilement accessible, le relais peut être piraté avec facilité. Alors gardez ce projet dans un châssis bien protégé.

Comment ça fonctionne

Remarque: Une résistance de limitation de courant 4,7K doit être connectée à la base du transistor, ce qui n'est pas représenté sur le schéma.

Voyons maintenant comment ce circuit de verrouillage de sécurité par mot de passe Arduino fonctionne, veuillez lire attentivement les instructions ci-dessous afin de faire fonctionner le circuit.

Schéma

Circuit de verrouillage de sécurité de mot de passe Arduino utilisant le clavier 4x4

Voici les deux illustrations comment interfacer le clavier et Arduino:

Résultats du test de verrouillage de sécurité du mot de passe Arduino

• Lorsque le circuit est sous tension, il demande un mot de passe, vous pouvez le voir sur le moniteur série (le moniteur série n'est pas obligatoire mais peut être utilisé à des fins de test).

• Entrez le mot de passe que vous avez entré dans le programme avant de le compiler.

• Pendant que vous appuyez sur les touches, la LED verte clignote pendant un dixième de seconde, indiquant qu'une touche est enfoncée par l'utilisateur.

• Une fois que vous avez entré le mot de passe à 6 chiffres, appuyez sur «D» sur le clavier qui agit comme «Entrée». Si votre mot de passe est correct, le relais s'active, la LED verte s'allume.

• Pour désactiver le relais, appuyez sur «C» sur le clavier. Lorsque cela est fait, la LED verte s'éteint et le relais est désactivé. Aucune autre touche ne peut désactiver le relais.

• Si le mot de passe saisi par l'utilisateur est incorrect, la LED rouge s'allume et l'utilisateur doit attendre 30 secondes pour entrer la prochaine tentative. Lorsque les 30 secondes sont terminées, la LED rouge s'éteint, informant l'utilisateur que le système est prêt à recevoir une entrée de l'utilisateur.

• Lorsque le relais est désactivé après une activation réussie, afin de réactiver le relais, l’utilisateur doit saisir à nouveau le mot de passe et appuyer sur «D».

Voici un cas particulier:

• Lorsque le mot de passe correct est entré, le relais est activé et après la désactivation réussie, lorsque l'utilisateur frappe une mauvaise frappe (pas un mot de passe complet), le programme reconnaît comme mot de passe incorrect et l'utilisateur doit attendre encore 30 secondes. S'il s'agissait d'un pirate de l'air, cela retardera le nombre de tentatives effectuées par le pirate de l'air.

• Lorsqu'on appuie sur une touche correcte lors de la première tentative, ce n'est qu'alors qu'il permet d'entrer la touche suivante. Ceci n'est valable que pour la première frappe et non pour toutes les frappes successives.

• La devise du concept expliqué ci-dessus est de retarder le nombre de tentatives faites par le pirate de l'air.

Code de programme:

//---------------------------------Program Developed by R.Girish--------------------------//
#include
const byte ROWS = 4
const byte COLS = 4
char pass[] = '123ABC' // 6 digit password only (no less or no more)
int OP=10
int green=12
int red=11
char key1
char key2
char key3
char key4
char key5
char key6
char dumpkey
char keyOK
char ok[]='D'
char offkey
char off[]='C'
int z
char keys[ROWS][COLS] =
{
{'D','#','0','*'},
{'C','9','8','7'},
{'B','6','5','4'},
{'A','3','2','1'}
}
byte rowPins[ROWS] = {6,7,8,9} //connect to the row pinouts of the keypad
byte colPins[COLS] = {2,3,4,5} //connect to the column pinouts of the keypad
Keypad keypad = Keypad( makeKeymap(keys), rowPins, colPins, ROWS, COLS )
void setup()
{
Serial.begin(9600)
pinMode(OP,OUTPUT)
pinMode(green,OUTPUT)
pinMode(red,OUTPUT)
digitalWrite(OP,LOW)
}
void loop()
{
top:
Serial.println('')
Serial.println('[Press D = Enter]')
Serial.print('Enter the password: ')
key1=keypad.waitForKey()
if(key1 == pass[0])
{
digitalWrite(green,HIGH)
delay(100)
digitalWrite(green,LOW)
{
z=1
Serial.print('*')
goto A

}
}
autre
{
aller au vidage
}
À:
key2 = keypad.waitForKey ()
if (key2 == passe [1])
{
digitalWrite (vert, HIGH)
retard (100)
digitalWrite (vert, FAIBLE)
{
z = 2
Serial.print ('*')
aller à B
}
}
autre
{
aller au vidage
}
B:
key3 = clavier.waitForKey ()
if (key3 == passe [2])
{
digitalWrite (vert, HIGH)
retard (100)
digitalWrite (vert, FAIBLE)
{
z = 3
Serial.print ('*')
aller à C
}
}
autre
{
aller au vidage
}
C:
key4 = keypad.waitForKey ()
if (key4 == passe [3])
{
digitalWrite (vert, HIGH)
retard (100)
digitalWrite (vert, FAIBLE)
{
z = 4
Serial.print ('*')
aller à D
}
}
autre
{
aller au vidage
}
RÉ:
key5 = clavier.waitForKey ()
if (key5 == passe [4])
{
digitalWrite (vert, HIGH)
retard (100)
digitalWrite (vert, FAIBLE)
{
z = 5
Serial.print ('*')
aller à E
}
}
autre
{
aller au vidage
}
EST:
key6 = keypad.waitForKey ()
if (key6 == passe [5])
{
digitalWrite (vert, HIGH)
retard (100)
digitalWrite (vert, FAIBLE)
{
z = 6
Serial.print ('*')
allez ok
}
}
autre
{
aller au vidage
}
d'accord:
keyOK = clavier.waitForKey ()
si (keyOK == ok [0])
{
DigitalWrite (OP, HIGH)
digitalWrite (vert, HIGH)
Serial.println ('')
Serial.println ('Relais activé, appuyez sur' C 'pour désactiver.n')
}
autre
{
Serial.println ('')
Serial.println ('Appuyez sur' D 'pour entrer')
allez ok
}
désactivé:
offkey = keypad.waitForKey ()
if (offkey == off [0])
{
DigitalWrite (OP, LOW)
digitalWrite (vert, FAIBLE)
Serial.println ('Relais désactivé.n')
aller en haut
}
autre
{
Serial.println ('Appuyez sur' C 'pour désactiver')
est parti
}
décharger:
si (z == 0)
{
digitalWrite (vert, HIGH)
retard (100)
digitalWrite (vert, FAIBLE)
Serial.print ('*')
dumpkey = keypad.waitForKey ()
Serial.print ('*')
dumpkey = keypad.waitForKey ()
Serial.print ('*')
dumpkey = keypad.waitForKey ()
Serial.print ('*')
dumpkey = keypad.waitForKey ()
Serial.print ('*')
dumpkey = keypad.waitForKey ()
Serial.print ('*')
dumpkey = keypad.waitForKey ()
Serial.print ('*')
erreur goto
}
si (z == 1)
{
digitalWrite (vert, HIGH)
retard (100)
digitalWrite (vert, FAIBLE)
Serial.print ('*')
dumpkey = keypad.waitForKey ()
Serial.print ('*')
dumpkey = keypad.waitForKey ()
Serial.print ('*')
dumpkey = keypad.waitForKey ()
Serial.print ('*')
dumpkey = keypad.waitForKey ()
Serial.print ('*')
dumpkey = keypad.waitForKey ()
Serial.print ('*')
erreur goto
}
si (z == 2)
{
digitalWrite (vert, HIGH)
retard (100)
digitalWrite (vert, FAIBLE)
Serial.print ('*')
dumpkey = keypad.waitForKey ()
Serial.print ('*')
dumpkey = keypad.waitForKey ()
Serial.print ('*')
dumpkey = keypad.waitForKey ()
Serial.print ('*')
dumpkey = keypad.waitForKey ()
Serial.print ('*')
erreur goto
}
si (z == 3)
{
digitalWrite (vert, HIGH)
retard (100)
digitalWrite (vert, FAIBLE)
Serial.print ('*')
dumpkey = keypad.waitForKey ()
Serial.print ('*')
dumpkey = keypad.waitForKey ()
Serial.print ('*')
dumpkey = keypad.waitForKey ()
Serial.print ('*')
erreur goto
}
si (z == 4)
{
digitalWrite (vert, HIGH)
retard (100)
digitalWrite (vert, FAIBLE)
Serial.print ('*')
dumpkey = keypad.waitForKey ()
Serial.print ('*')
dumpkey = keypad.waitForKey ()
Serial.print ('*')
erreur goto
}
si (z == 5)
{
digitalWrite (vert, HIGH)
retard (100)
digitalWrite (vert, FAIBLE)
Serial.print ('*')
dumpkey = keypad.waitForKey ()
Serial.print ('*')
erreur goto
}
Erreur:
Serial.println ('')
Serial.print ('Mauvais mot de passe, attendez 30 secondes.')
digitalWrite (rouge, HIGH)
retard (10000)
retard (10000)
retard (10000)
digitalWrite (rouge, LOW)
aller en haut
}
// --------------------------------- Programme développé par R.Girish --------- ----------------- //

REMARQUE: Pour définir le mot de passe: char pass [] = '123ABC' // mot de passe à 6 chiffres uniquement (ni moins ni plus)
Remplacez «123ABC» par votre propre mot de passe, entre guillemets.

Assurez-vous que le mot de passe défini dans le programme est UNIQUEMENT à 6 chiffres, pas moins ou pas plus, mais exactement 6 chiffres. Sinon, le programme ne fonctionnera pas correctement.

Si vous avez d'autres doutes concernant le circuit de verrouillage de sécurité par mot de passe expliqué, n'hésitez pas à les poster via vos commentaires




Une paire de: Circuit LED du simulateur de lever du soleil Un article: Circuit de contrôleur de moteur Bluetooth