Paroles drošības bloķēšanas shēma, izmantojot 4 × 4 tastatūru un Arduino

Izmēģiniet Mūsu Instrumentu Problēmu Novēršanai





Šajā ziņojumā mēs izveidosim paroles drošības bloķēšanas ķēdi, kurai var piekļūt ar sešciparu paroli. Pareizāk sakot, tā ir burtu un ciparu parole.

Aparatūra šim projektam

Mēs izmantosim 4x4 tastatūru, kas sastāv no 0 līdz 9 decimāldaļām, divām īpašām rakstzīmēm ‘#’ un ‘*’ un no A līdz D alfabētiem. Šo paroli var izmantot kā paroli.



Arduino ir sistēmas smadzenes, kad tiek aktivizēts un deaktivizēts relejs, ar Arduino tiek interfeiss, kad tiek uzdota pareizā parole. Šeit tiek izmantoti divi indikatori, kas norāda bloķēšanas sistēmas statusu.

Ja jums nav pazīstama 4x4 tastatūra, lūdzu, skatiet manu iepriekšējo rakstu, kurā tika vispusīgi apspriests 4x4 matricas tastatūras pamati



Piedāvātajam projektam ir diezgan minimālistisks aparatūras dizains. Tas vienkārši sastāv no tastatūras, releja, arduino un pāris gaismas diodēm, pat nodu arduino to var paveikt ar vieglumu.

Vienīgā daļa, kas ir nedaudz sarežģīta šajā projektā, ir kodēšana, nav jāuztraucas, ka kods ir norādīts šajā projektā. Programma ir jāuzraksta tā, lai tā būtu nepatiesa un neviens nolaupītājs nevarētu uzlauzt sistēmu.

Bet, esiet piesardzīgs, ja jūs atklājat aparatūru vai šī projekta aparatūra ir viegli pieejama, releju var viegli uzlauzt. Tāpēc turiet šo projektu labi aizsargātā šasijā.

Kā tas strādā

Piezīme: Strāvas ierobežojošais rezistors 4.7K jāpieslēdz tranzistora pamatnei, kas nav parādīta diagrammā.

Tagad redzēsim, kā darbojas šī Arduino paroles drošības bloķēšanas ķēde. Lūdzu, uzmanīgi izlasiet tālāk sniegto instrukciju, lai darbinātu ķēdi.

Ķēdes shēma

Arduino paroles drošības bloķēšanas shēma, izmantojot 4x4 tastatūru

Šeit ir divas ilustrācijas par tastatūras un Arduino saskarni:

Arduino paroles drošības bloķēšanas testa rezultāti

• Kad ķēde ir ieslēgta, tā prasa paroli, kuru varat redzēt sērijveida monitorā (sērijveida monitors nav obligāts, bet to var izmantot testēšanas vajadzībām).

• Pirms sastādīšanas ievadiet programmā ievadīto paroli.

• Kamēr jūs nospiežat taustiņus, zaļā gaismas diode mirgo vienu sekundes desmitdaļu, norādot, ka lietotājs nospiež kādu taustiņu.

• Kad esat ievadījis sešciparu paroli, tastatūrā nospiediet ‘D’, kas darbojas kā ‘Enter’. Ja jūsu parole ir pareiza, relejs tiek aktivizēts, iedegas zaļā gaismas diode.

• Lai deaktivizētu releju, tastatūrā nospiediet ‘C’. Kad tas ir izdarīts, zaļā gaismas diode izslēdzas un relejs tiek deaktivizēts. Neviens cits taustiņš nevar deaktivizēt releju.

• Ja lietotāja ievadītā parole nav pareiza, iedegas sarkanā gaismas diode un lietotājam jāgaida 30 sekundes, lai ievadītu nākamo mēģinājumu. Kad ir pagājušas 30 sekundes, sarkanā gaismas diode izslēdzas, informējot lietotāju, ka sistēma ir gatava saņemt ievadi no lietotāja.

• Kad relejs pēc veiksmīgas aktivizācijas tiek deaktivizēts, lai releju atkal aktivizētu, lietotājam vēlreiz jāievada parole un jānospiež ‘D’.

Šeit ir īpašs gadījums:

• Kad ir ievadīta pareizā parole, relejs tiek aktivizēts un pēc veiksmīgas deaktivizācijas, kad lietotājs nospiež jebkuru nepareizu taustiņu (nevis visu paroli), programma atzīst par nepareizu paroli un lietotājam jāgaida vēl 30 sekundes. Ja tas bija nolaupītājs, tas aizkavēs nolaupītāja veikto mēģinājumu skaitu.

• Pēc pirmā mēģinājuma nospiežot pareizu taustiņu, tikai pēc tam tas ļauj ievadīt nākamo taustiņu. Tas ir paredzēts tikai pirmajiem taustiņiem, nevis visiem secīgajiem taustiņiem.

• Iepriekš izskaidrotās koncepcijas moto ir aizkavēt nolaupītāja veikto mēģinājumu skaitu.

Programmas kods:

//---------------------------------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

}
}
cits
{
goto dump
}
UZ:
key2 = tastatūra.waitForKey ()
ja (atslēga2 == caurlaide [1])
{
digitalWrite (zaļa, AUGSTA)
kavēšanās (100)
digitalWrite (zaļš, LOW)
{
z = 2
Serial.print ('*')
goto B
}
}
cits
{
goto dump
}
B:
key3 = tastatūra.waitForKey ()
ja (atslēga3 == caurlaide [2])
{
digitalWrite (zaļa, AUGSTA)
kavēšanās (100)
digitalWrite (zaļš, LOW)
{
z = 3
Serial.print ('*')
goto C
}
}
cits
{
goto dump
}
C:
key4 = tastatūra.waitForKey ()
ja (atslēga4 == caurlaide [3])
{
digitalWrite (zaļa, AUGSTA)
kavēšanās (100)
digitalWrite (zaļš, LOW)
{
z = 4
Serial.print ('*')
goto D
}
}
cits
{
goto dump
}
D:
key5 = tastatūra.waitForKey ()
ja (atslēga5 == caurlaide [4])
{
digitalWrite (zaļa, AUGSTA)
kavēšanās (100)
digitalWrite (zaļš, LOW)
{
z = 5
Serial.print ('*')
goto E
}
}
cits
{
goto dump
}
IS:
key6 = tastatūra.waitForKey ()
ja (atslēga6 == caurlaide [5])
{
digitalWrite (zaļa, AUGSTA)
kavēšanās (100)
digitalWrite (zaļš, LOW)
{
z = 6
Serial.print ('*')
labi
}
}
cits
{
goto dump
}
labi:
keyOK = keypad.waitForKey ()
ja (atslēgaOK == labi [0])
{
digitalWrite (OP, HIGH)
digitalWrite (zaļa, AUGSTA)
Serial.println ('')
Serial.println ('Relejs aktivizēts, nospiediet' C ', lai deaktivizētu.n')
}
cits
{
Serial.println ('')
Serial.println ('Nospiediet' D ', lai ievadītu')
labi
}
izslēgts:
offkey = keypad.waitForKey ()
ja (offkey == izslēgts [0])
{
digitalWrite (OP, LOW)
digitalWrite (zaļš, LOW)
Serial.println ('Relay Deactivated.n')
goto top
}
cits
{
Serial.println ('Nospiediet' C ', lai deaktivizētu')
izslēgt
}
izgāzt:
ja (z == 0)
{
digitalWrite (zaļa, AUGSTA)
kavēšanās (100)
digitalWrite (zaļš, 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 ('*')
goto kļūda
}
ja (z == 1)
{
digitalWrite (zaļa, AUGSTA)
kavēšanās (100)
digitalWrite (zaļš, 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 ('*')
goto kļūda
}
ja (z == 2)
{
digitalWrite (zaļa, AUGSTA)
kavēšanās (100)
digitalWrite (zaļš, LOW)
Serial.print ('*')
dumpkey = keypad.waitForKey ()
Serial.print ('*')
dumpkey = keypad.waitForKey ()
Serial.print ('*')
dumpkey = keypad.waitForKey ()
Serial.print ('*')
dumpkey = keypad.waitForKey ()
Serial.print ('*')
goto kļūda
}
ja (z == 3)
{
digitalWrite (zaļa, AUGSTA)
kavēšanās (100)
digitalWrite (zaļš, LOW)
Serial.print ('*')
dumpkey = keypad.waitForKey ()
Serial.print ('*')
dumpkey = keypad.waitForKey ()
Serial.print ('*')
dumpkey = keypad.waitForKey ()
Serial.print ('*')
goto kļūda
}
ja (z == 4)
{
digitalWrite (zaļa, AUGSTA)
kavēšanās (100)
digitalWrite (zaļš, LOW)
Serial.print ('*')
dumpkey = keypad.waitForKey ()
Serial.print ('*')
dumpkey = keypad.waitForKey ()
Serial.print ('*')
goto kļūda
}
ja (z == 5)
{
digitalWrite (zaļa, AUGSTA)
kavēšanās (100)
digitalWrite (zaļš, LOW)
Serial.print ('*')
dumpkey = keypad.waitForKey ()
Serial.print ('*')
goto kļūda
}
kļūda:
Serial.println ('')
Serial.print ('Nepareiza parole, pagaidiet 30 sekundes.')
digitalWrite (sarkans, AUGSTS)
kavēšanās (10000)
kavēšanās (10000)
kavēšanās (10000)
digitalWrite (sarkans, LOW)
goto top
}
// --------------------------------- Programmu izstrādājusi R.Girish --------- ----------------- //

PIEZĪME: Lai iestatītu paroli: char pass [] = '123ABC' // Tikai 6 ciparu parole (ne mazāk vai ne vairāk)
Mainiet “123ABC” ar savu paroli pēdiņās.

Pārliecinieties, ka programmā iestatītā parole ir TIKAI 6 ciparu, ne mazāk vai ne vairāk, bet tieši 6 ciparu. Pretējā gadījumā programma nedarbosies pareizi.

Ja jums ir vēl kādas šaubas par izskaidroto paroles drošības bloķēšanas ķēdi, lūdzu, nekautrējieties tos ievietot, izmantojot savus komentārus




Pāri: Sunrise Sunset Simulator LED ķēde Nākamais: Bluetooth motora kontroliera ķēde