Круг сигурносне браве лозинке помоћу тастатуре 4 × 4 и Ардуина

Испробајте Наш Инструмент За Елиминисање Проблема





У овом посту ћемо направити склоп сигурносног закључавања лозинке, којем се може приступити помоћу 6-цифрене лозинке. Тачније то је алфанумеричка лозинка.

Хардвер за овај пројекат

Користићемо тастатуру 4к4, која се састоји од 0 до 9 децималних вредности, два посебна знака '#' и '*' и А до Д абецеде. Комбинација ових знакова може се користити као лозинка.



Ардуино је мозак система, релеј је повезан са Ардуином да би се активирао и деактивирао када се нареди тачна лозинка. Овде се користе два индикаторска ЛЕД индикатора за приказ стања система закључавања.

Ако нисте упознати са 4к4 тастатуром, погледајте мој ранији чланак, који је свеобухватно разговарао основе 4к4 матричне тастатуре



Предложени пројекат има прилично минималистички хардверски дизајн. Састоји се само од тастатуре, релеја, ардуина и неколико ЛЕД диода, чак и нооб у ардуину то може лако постићи.

Једини део који је мало тежак у овом пројекту је кодирање, не брините да је код дат у овом пројекту. Програм би требао бити написан на такав начин да је сигуран и да ниједан отмичар не може хаковати систем.

Али, будите опрезни ако изложите хардвер или је хардвер овог пројекта лако доступан, релеј се може лако хакирати. Зато држите овај пројекат у добро заштићеном кућишту.

Како то ради

Напомена: Отпорник за ограничење струје 4.7К мора бити повезан са базом транзистора, што није приказано на дијаграму.

Сада да видимо како функционише ово коло сигурносне браве Ардуино лозинке, пажљиво прочитајте доленаведена упутства како бисте управљали кругом.

Кружни дијаграм

Склоп сигурносне браве Ардуино помоћу лозинке помоћу 4к4 тастатуре

Ево две илустрације повезивања тастатуре и Ардуина:

Резултати испитивања закључавања сигурносне лозинке Ардуино

• Када се струјни круг укључи, тражи лозинку, можете видети на серијском монитору (серијски монитор није обавезан, али се може користити у сврху тестирања).

• Унесите лозинку коју сте унели у програм пре него што је саставите.

• Док притискате тастере, зелена ЛЕД лампица трепће једну десетину секунде, што значи да корисник притиска неки тастер.

• Једном када сте унели шестоцифрену лозинку, притисните „Д“ на тастатури која делује као „Ентер“. Ако је лозинка тачна, релеј се активира, зелени ЛЕД се укључује.

• Да бисте деактивирали релеј, притисните „Ц“ на тастатури. Када се то уради, зелена ЛЕД се искључује и реле се деактивира. Ниједан други тастер не може да деактивира релеј.

• Ако је лозинка коју је унео корисник нетачна, тада светли црвена ЛЕД лампица и корисник мора да сачека 30 секунди да уђе у следећи покушај. Када се заврши 30 секунди, црвена ЛЕД се искључује, обавештавајући корисника да је систем спреман да од корисника добије улаз.

• Када се релеј деактивира након успешног активирања, да би поново активирао релеј, корисник треба поново да унесе лозинку и притисне „Д“.

Ево посебног случаја:

• Када се унесе исправна лозинка, релеј се активира и након успешног деактивирања, када корисник притисне неко погрешно притискање тастера (не целу лозинку), програм препознаје као нетачну лозинку и корисник треба да сачека још 30 секунди. Ако је ово био отмичар, одгодиће број покушаја отмичара.

• Када се притисне тачан притисак тастера у првом покушају, само тада омогућава улазак у следећи тастер. Ово је само за прво притискање тастера, а не за сва узастопна притискања тастера.

• Мото горе објашњеног концепта је одлагање броја покушаја отмичара.

Програмски код:

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

}
}
иначе
{
ићи на депонију
}
ДО:
кеи2 = кеипад.ваитФорКеи ()
ако (кеи2 == проћи [1])
{
дигиталВрите (зелено, ВИСОКО)
кашњење (100)
дигиталВрите (зелено, НИЗКО)
{
з = 2
Сериал.принт ('*')
гото Б.
}
}
иначе
{
ићи на депонију
}
Б:
кеи3 = кеипад.ваитФорКеи ()
ако (кеи3 == проћи [2])
{
дигиталВрите (зелено, ВИСОКО)
кашњење (100)
дигиталВрите (зелено, НИЗКО)
{
з = 3
Сериал.принт ('*')
гото Ц.
}
}
иначе
{
ићи на депонију
}
Ц:
кеи4 = кеипад.ваитФорКеи ()
ако (кеи4 == проћи [3])
{
дигиталВрите (зелено, ВИСОКО)
кашњење (100)
дигиталВрите (зелено, НИЗКО)
{
з = 4
Сериал.принт ('*')
гото Д.
}
}
иначе
{
ићи на депонију
}
Д:
кеи5 = кеипад.ваитФорКеи ()
ако (кеи5 == проћи [4])
{
дигиталВрите (зелено, ВИСОКО)
кашњење (100)
дигиталВрите (зелено, НИЗКО)
{
з = 5
Сериал.принт ('*')
гото Е.
}
}
иначе
{
ићи на депонију
}
ИС:
кеи6 = кеипад.ваитФорКеи ()
ако (кеи6 == проћи [5])
{
дигиталВрите (зелено, ВИСОКО)
кашњење (100)
дигиталВрите (зелено, НИЗКО)
{
з = 6
Сериал.принт ('*')
иди ок
}
}
иначе
{
ићи на депонију
}
У реду:
кеиОК = кеипад.ваитФорКеи ()
ако (кеиОК == ок [0])
{
дигиталВрите (ОП, ХИГХ)
дигиталВрите (зелено, ВИСОКО)
Сериал.принтлн ('')
Сериал.принтлн ('Релеј активиран, притисните' Ц 'да бисте га деактивирали.н')
}
иначе
{
Сериал.принтлн ('')
Сериал.принтлн ('Притисните' Д 'за улазак')
иди ок
}
ван:
оффкеи = кеипад.ваитФорКеи ()
ако (искључено == искључено [0])
{
дигиталВрите (ОП, ЛОВ)
дигиталВрите (зелено, НИЗКО)
Сериал.принтлн ('Релеј деактивиран.н')
Иди на врх
}
иначе
{
Сериал.принтлн ('Притисните' Ц 'да бисте деактивирали')
отићи
}
Депонија:
ако (з == 0)
{
дигиталВрите (зелено, ВИСОКО)
кашњење (100)
дигиталВрите (зелено, НИЗКО)
Сериал.принт ('*')
думпкеи = тастатура.ваитФорКеи ()
Сериал.принт ('*')
думпкеи = тастатура.ваитФорКеи ()
Сериал.принт ('*')
думпкеи = тастатура.ваитФорКеи ()
Сериал.принт ('*')
думпкеи = тастатура.ваитФорКеи ()
Сериал.принт ('*')
думпкеи = тастатура.ваитФорКеи ()
Сериал.принт ('*')
думпкеи = тастатура.ваитФорКеи ()
Сериал.принт ('*')
гото еррор
}
ако (з == 1)
{
дигиталВрите (зелено, ВИСОКО)
кашњење (100)
дигиталВрите (зелено, НИЗКО)
Сериал.принт ('*')
думпкеи = тастатура.ваитФорКеи ()
Сериал.принт ('*')
думпкеи = тастатура.ваитФорКеи ()
Сериал.принт ('*')
думпкеи = тастатура.ваитФорКеи ()
Сериал.принт ('*')
думпкеи = тастатура.ваитФорКеи ()
Сериал.принт ('*')
думпкеи = тастатура.ваитФорКеи ()
Сериал.принт ('*')
гото еррор
}
ако (з == 2)
{
дигиталВрите (зелено, ВИСОКО)
кашњење (100)
дигиталВрите (зелено, НИЗКО)
Сериал.принт ('*')
думпкеи = тастатура.ваитФорКеи ()
Сериал.принт ('*')
думпкеи = тастатура.ваитФорКеи ()
Сериал.принт ('*')
думпкеи = тастатура.ваитФорКеи ()
Сериал.принт ('*')
думпкеи = тастатура.ваитФорКеи ()
Сериал.принт ('*')
гото еррор
}
ако (з == 3)
{
дигиталВрите (зелено, ВИСОКО)
кашњење (100)
дигиталВрите (зелено, НИЗКО)
Сериал.принт ('*')
думпкеи = тастатура.ваитФорКеи ()
Сериал.принт ('*')
думпкеи = тастатура.ваитФорКеи ()
Сериал.принт ('*')
думпкеи = тастатура.ваитФорКеи ()
Сериал.принт ('*')
гото еррор
}
ако (з == 4)
{
дигиталВрите (зелено, ВИСОКО)
кашњење (100)
дигиталВрите (зелено, НИЗКО)
Сериал.принт ('*')
думпкеи = тастатура.ваитФорКеи ()
Сериал.принт ('*')
думпкеи = тастатура.ваитФорКеи ()
Сериал.принт ('*')
гото еррор
}
ако (з == 5)
{
дигиталВрите (зелено, ВИСОКО)
кашњење (100)
дигиталВрите (зелено, НИЗКО)
Сериал.принт ('*')
думпкеи = тастатура.ваитФорКеи ()
Сериал.принт ('*')
гото еррор
}
грешка:
Сериал.принтлн ('')
Сериал.принт ('Погрешна лозинка, сачекајте 30 секунди.')
дигиталВрите (црвена, ВИСОКА)
кашњење (10000)
кашњење (10000)
кашњење (10000)
дигиталВрите (црвена, НИЗКА)
Иди на врх
}
// --------------------------------- Програм развио Р.Гирисх --------- ----------------- //

БЕЛЕШКА: Да бисте поставили лозинку: цхар пасс [] = '123АБЦ' // само 6-цифрена лозинка (ни мање ни више)
Промените „123АБЦ“ са сопственом лозинком, унутар наводника.

Уверите се да је лозинка постављена у програму САМО 6-цифрена, ни мање ни више него тачно 6-цифрена. Иначе програм неће правилно функционисати.

Ако имате додатних недоумица у вези са објашњеним кругом сигурносне браве лозинком, слободно их објавите путем својих коментара




Претходни: Сунрисе Сунсет Симулатор ЛЕД круг Следеће: Блуетоотх склоп управљачког склопа