Wachtwoordbeveiligingsslotcircuit met 4 × 4 toetsenbord en Arduino

Probeer Ons Instrument Voor Het Oplossen Van Problemen





In dit bericht gaan we een wachtwoordbeveiligingscircuit bouwen, dat toegankelijk is met een 6-cijferig wachtwoord. Om preciezer te zijn, is het een alfanumeriek wachtwoord.

Hardware voor dit project

We gaan het 4x4-toetsenbord gebruiken, dat bestaat uit 0 tot 9 decimale waarden, twee speciale tekens ‘#’ en ‘*’ en A tot D-alfabetten. De combinatie van deze tekens kan als wachtwoord worden gebruikt.



De Arduino is het brein van het systeem, een relais is gekoppeld aan Arduino om te activeren en te deactiveren, wanneer het juiste wachtwoord wordt geboden. Twee indicator-LED's worden hier gebruikt om de status van het slotsysteem aan te geven.

Als u niet bekend bent met het 4x4-toetsenbord, raadpleeg dan mijn eerdere artikel, dat uitgebreid besproken is basisprincipes van 4x4 matrix toetsenbord



Het voorgestelde project heeft een vrij minimalistisch hardware-ontwerp. Het bestaat gewoon uit een toetsenbord, relais, arduino en een paar LED's, zelfs een noob in arduino kan het gemakkelijk doen.

Het enige deel dat enigszins moeilijk is in dit project is de codering, u hoeft zich geen zorgen te maken dat de code in dit project wordt gegeven. Het programma moet zo worden geschreven dat het onfeilbaar is en geen kaper het systeem kan hacken.

Maar wees voorzichtig als u de hardware blootstelt of als de hardware van dit project gemakkelijk toegankelijk is, het relais kan gemakkelijk worden gehackt. Bewaar dit project dus in een goed beschermd chassis.

Hoe het werkt

Opmerking: Een stroombegrenzende weerstand van 4.7K moet worden aangesloten op de basis van de transistor, die niet in het diagram wordt weergegeven.

Laten we nu eens kijken hoe dit Arduino-wachtwoordbeveiligingsvergrendelingscircuit werkt, lees de onderstaande instructie zorgvuldig door om het circuit te bedienen.

Schakelschema

Arduino-wachtwoordbeveiligingsslotcircuit met behulp van 4x4-toetsenbord

Hier zijn de twee illustraties voor de interface tussen toetsenbord en Arduino:

Testresultaten van Arduino-wachtwoordbeveiliging

• Wanneer het circuit is ingeschakeld, vraagt ​​het om een ​​wachtwoord, dat u kunt zien op de seriële monitor (seriële monitor is niet verplicht, maar kan worden gebruikt voor testdoeleinden).

• Voer het wachtwoord in dat u in het programma heeft ingevoerd voordat u het compileert.

• Terwijl u op de toetsen drukt, knippert de groene LED gedurende een tiende van een seconde, wat aangeeft dat de gebruiker een toets heeft ingedrukt.

• Nadat u het 6-cijferige wachtwoord heeft ingevoerd, drukt u op ‘D’ in het toetsenbord dat fungeert als ‘Enter’. Als uw wachtwoord correct is, wordt het relais geactiveerd, de groene LED gaat AAN.

• Om het relais te deactiveren, drukt u op ‘C’ op het toetsenbord. Wanneer dit is gebeurd, gaat de groene LED UIT en wordt het relais gedeactiveerd. Geen enkele andere sleutel kan het relais deactiveren.

• Als het door de gebruiker ingevoerde wachtwoord onjuist is, gaat de rode LED branden en moet de gebruiker 30 seconden wachten om de volgende poging in te voeren. Wanneer de 30 seconden voorbij zijn, gaat de rode LED UIT om de gebruiker te informeren dat het systeem klaar is om input van de gebruiker te krijgen.

• Wanneer het relais wordt gedeactiveerd na succesvolle activering, moet de gebruiker het wachtwoord opnieuw invoeren en op ‘D’ drukken om het relais opnieuw te activeren.

Hier is een speciaal geval:

• Wanneer het juiste wachtwoord is ingevoerd, wordt het relais geactiveerd en na de succesvolle deactivering, wanneer de gebruiker op een verkeerde toetsaanslag drukt (niet het hele wachtwoord), herkent het programma het als een onjuist wachtwoord en moet de gebruiker nog eens 30 seconden wachten. Als dit een kaper was, zal het aantal pogingen van de kaper vertragen.

• Als de juiste toetsaanslag bij de eerste poging wordt ingedrukt, pas dan kan de volgende toets worden ingevoerd. Dit is alleen voor de eerste toetsaanslag en niet voor alle opeenvolgende toetsaanslagen.

• Het motto van het hierboven beschreven concept is om het aantal pogingen van de kaper te vertragen.

Programmacode:



anders

ga naar dump

NAAR:
key2 = keypad.waitForKey ()
if (key2 == pass [1])

digitalWrite (groen, HIGH)
vertraging (100)
digitalWrite (groen, LOW)

z = 2
Serial.print ('*')
ga naar B


anders

ga naar dump

B:
key3 = keypad.waitForKey ()
if (key3 == pass [2])

digitalWrite (groen, HIGH)
vertraging (100)
digitalWrite (groen, LOW)

z = 3
Serial.print ('*')
ga naar C


anders

ga naar dump

C:
key4 = keypad.waitForKey ()
if (key4 == pass [3])

digitalWrite (groen, HIGH)
vertraging (100)
digitalWrite (groen, LOW)

z = 4
Serial.print ('*')
ga naar D


anders

ga naar dump

D:
key5 = keypad.waitForKey ()
if (key5 == pass [4])

digitalWrite (groen, HIGH)
vertraging (100)
digitalWrite (groen, LOW)

z = 5
Serial.print ('*')
ga naar E


anders

ga naar dump

IS:
key6 = keypad.waitForKey ()
if (key6 == pass [5])

digitalWrite (groen, HIGH)
vertraging (100)
digitalWrite (groen, LOW)

z = 6
Serial.print ('*')
ga naar ok


anders

ga naar dump

OK:
keyOK = keypad.waitForKey ()
if (keyOK == ok [0])

digitalWrite (OP, HIGH)
digitalWrite (groen, HIGH)
Serial.println ('')
Serial.println ('Relais geactiveerd, druk op' C 'om te deactiveren.n')

anders

Serial.println ('')
Serial.println ('Druk op' D 'om in te voeren')
ga naar ok

uit:
offkey = keypad.waitForKey ()
if (offkey == off [0])

digitalWrite (OP, LOW)
digitalWrite (groen, LOW)
Serial.println ('Relay Deactivated.n')
ga naar boven

anders

Serial.println ('Druk op' C 'om te deactiveren')
ga weg

dump:
if (z == 0)

digitalWrite (groen, HIGH)
vertraging (100)
digitalWrite (groen, LOW)
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 ('*')
ga naar fout

if (z == 1)

digitalWrite (groen, HIGH)
vertraging (100)
digitalWrite (groen, LOW)
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 ('*')
ga naar fout

if (z == 2)

digitalWrite (groen, HIGH)
vertraging (100)
digitalWrite (groen, LOW)
Serial.print ('*')
dumpkey = keypad.waitForKey ()
Serial.print ('*')
dumpkey = keypad.waitForKey ()
Serial.print ('*')
dumpkey = keypad.waitForKey ()
Serial.print ('*')
dumpkey = keypad.waitForKey ()
Serial.print ('*')
ga naar fout

if (z == 3)

digitalWrite (groen, HIGH)
vertraging (100)
digitalWrite (groen, LOW)
Serial.print ('*')
dumpkey = keypad.waitForKey ()
Serial.print ('*')
dumpkey = keypad.waitForKey ()
Serial.print ('*')
dumpkey = keypad.waitForKey ()
Serial.print ('*')
ga naar fout

if (z == 4)

digitalWrite (groen, HIGH)
vertraging (100)
digitalWrite (groen, LOW)
Serial.print ('*')
dumpkey = keypad.waitForKey ()
Serial.print ('*')
dumpkey = keypad.waitForKey ()
Serial.print ('*')
ga naar fout

if (z == 5)

digitalWrite (groen, HIGH)
vertraging (100)
digitalWrite (groen, LOW)
Serial.print ('*')
dumpkey = keypad.waitForKey ()
Serial.print ('*')
ga naar fout

fout:
Serial.println ('')
Serial.print ('Verkeerd wachtwoord, wacht 30 seconden.')
digitalWrite (rood, HIGH)
vertraging (10000)
vertraging (10000)
vertraging (10000)
digitalWrite (rood, LOW)
ga naar boven

// --------------------------------- Programma ontwikkeld door R.Girish --------- ----------------- //

NOTITIE: Wachtwoord instellen: char pass [] = '123ABC' // Alleen 6-cijferig wachtwoord (niet minder of niet meer)
Wijzig '123ABC' met uw eigen wachtwoord, tussen aanhalingstekens.

Zorg ervoor dat het wachtwoord dat in het programma is ingesteld ALLEEN 6 cijfers is, niet minder of niet meer, maar exact 6 cijfers. Anders werkt het programma niet correct.

Als u nog meer twijfels heeft over het verklaarde circuit voor wachtwoordbeveiliging, kunt u deze posten via uw opmerkingen




Een paar: Sunrise Sunset Simulator LED-circuit Volgende: Bluetooth Motor Controller Circuit