4×4キーパッドとArduinoを使用したパスワードセキュリティロック回路

問題を排除するために楽器を試してください





この投稿では、6桁のパスワードでアクセスできるパスワードセキュリティロック回路を構築します。より正確には、英数字のパスワードです。

このプロジェクトのハードウェア

0から9の10進値、2つの特殊文字「#」と「*」、およびAからDのアルファベットで構成される4x4キーパッドを使用します。これらの文字の組み合わせをパスワードとして使用できます。



Arduinoはシステムの頭脳であり、正しいパスワードが指示されると、リレーがArduinoとインターフェースしてアクティブ化および非アクティブ化されます。ここでは、ロックシステムのステータスを示すために2つのインジケータLEDが使用されています。

4x4キーパッドに慣れていない場合は、以前の記事を参照してください。 4x4マトリックスキーパッドの基本



提案されたプロジェクトは、かなりミニマルなハードウェア設計を持っています。キーパッド、リレー、arduino、およびいくつかのLEDで構成されているだけで、arduinoの初心者でも簡単に実行できます。

このプロジェクトで少し難しいのはコーディングだけです。このプロジェクトでコードが提供されていることを心配する必要はありません。プログラムは、絶対確実であり、ハイジャッカーがシステムをハッキングできないように作成する必要があります。

ただし、ハードウェアを公開したり、このプロジェクトのハードウェアに簡単にアクセスしたりすると、リレーが簡単にハッキングされる可能性があるので注意してください。したがって、このプロジェクトは十分に保護されたシャーシに保管してください。

使い方

注:電流制限抵抗4.7Kをトランジスタのベースに接続する必要がありますが、これは図には示されていません。

ここで、このArduinoパスワードセキュリティロック回路がどのように機能するかを見てみましょう。回路を操作するには、以下の手順を注意深くお読みください。

回路図

4x4キーパッドを使用したArduinoパスワードセキュリティロック回路

キーボードとArduinoのインターフェース方法を示す2つの図を次に示します。

Arduinoパスワードセキュリティロックテストの結果

•回路の電源がオンになると、パスワードを要求されます。シリアルモニターで確認できます(シリアルモニターは必須ではありませんが、テスト目的で使用できます)。

•コンパイルする前に、プログラムに入力したパスワードを入力してください。

•キーを押している間、緑色のLEDが10分の1秒間点滅し、ユーザーが何らかのキーを押したことを示します。

•6桁のパスワードを入力したら、「Enter」として機能するキーパッドの「D」を押します。パスワードが正しければ、リレーがアクティブになり、緑色のLEDが点灯します。

•リレーを無効にするには、キーパッドの「C」を押します。これが行われると、緑色のLEDがオフになり、リレーが非アクティブになります。他のキーはリレーを非アクティブ化できません。

•ユーザーが入力したパスワードが正しくない場合、赤いLEDが点灯し、ユーザーは次の試行を入力するために30秒待つ必要があります。 30秒が経過すると、赤いLEDがオフになり、システムがユーザーからの入力を取得する準備ができたことをユーザーに通知します。

•アクティブ化に成功した後にリレーが非アクティブ化された場合、リレーを再度アクティブ化するには、ユーザーはパスワードを再度入力して「D」を押す必要があります。

これは特別な場合です:

•正しいパスワードが入力されると、リレーがアクティブになり、非アクティブ化が成功した後、ユーザーが間違ったキーストローク(パスワード全体ではない)を押すと、プログラムは間違ったパスワードとして認識し、ユーザーはさらに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

}
}
そうしないと
{{
後藤ダンプ
}
に:
key2 = keypad.waitForKey()
if(key2 == pass [1])
{{
digitalWrite(緑、高)
delay(100)
digitalWrite(緑、低)
{{
z = 2
Serial.print( '*')
後藤B
}
}
そうしないと
{{
後藤ダンプ
}
B:
key3 = keypad.waitForKey()
if(key3 == pass [2])
{{
digitalWrite(緑、高)
delay(100)
digitalWrite(緑、低)
{{
z = 3
Serial.print( '*')
後藤C
}
}
そうしないと
{{
後藤ダンプ
}
C:
key4 = keypad.waitForKey()
if(key4 == pass [3])
{{
digitalWrite(緑、高)
delay(100)
digitalWrite(緑、低)
{{
z = 4
Serial.print( '*')
後藤D
}
}
そうしないと
{{
後藤ダンプ
}
D:
key5 = keypad.waitForKey()
if(key5 == pass [4])
{{
digitalWrite(緑、高)
delay(100)
digitalWrite(緑、低)
{{
z = 5
Serial.print( '*')
goto E
}
}
そうしないと
{{
後藤ダンプ
}
IS:
key6 = keypad.waitForKey()
if(key6 == pass [5])
{{
digitalWrite(緑、高)
delay(100)
digitalWrite(緑、低)
{{
z = 6
Serial.print( '*')
goto ok
}
}
そうしないと
{{
後藤ダンプ
}
OK:
keyOK = keypad.waitForKey()
if(keyOK == ok [0])
{{
digitalWrite(OP、HIGH)
digitalWrite(緑、高)
Serial.println( '')
Serial.println( 'リレーがアクティブ化されました。'C'を押して非アクティブ化します。n ')
}
そうしないと
{{
Serial.println( '')
Serial.println( 'D'を押して入力 ')
goto ok
}
オフ:
offkey = keypad.waitForKey()
if(offkey == off [0])
{{
digitalWrite(OP、LOW)
digitalWrite(緑、低)
Serial.println( 'Relay Deactivate.n')
トップへ戻る
}
そうしないと
{{
Serial.println( 'C'を押して非アクティブ化 ')
後藤オフ
}
投げ捨てる:
if(z == 0)
{{
digitalWrite(緑、高)
delay(100)
digitalWrite(緑、低)
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エラー
}
if(z == 1)
{{
digitalWrite(緑、高)
delay(100)
digitalWrite(緑、低)
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エラー
}
if(z == 2)
{{
digitalWrite(緑、高)
delay(100)
digitalWrite(緑、低)
Serial.print( '*')
dumpkey = keypad.waitForKey()
Serial.print( '*')
dumpkey = keypad.waitForKey()
Serial.print( '*')
dumpkey = keypad.waitForKey()
Serial.print( '*')
dumpkey = keypad.waitForKey()
Serial.print( '*')
gotoエラー
}
if(z == 3)
{{
digitalWrite(緑、高)
delay(100)
digitalWrite(緑、低)
Serial.print( '*')
dumpkey = keypad.waitForKey()
Serial.print( '*')
dumpkey = keypad.waitForKey()
Serial.print( '*')
dumpkey = keypad.waitForKey()
Serial.print( '*')
gotoエラー
}
if(z == 4)
{{
digitalWrite(緑、高)
delay(100)
digitalWrite(緑、低)
Serial.print( '*')
dumpkey = keypad.waitForKey()
Serial.print( '*')
dumpkey = keypad.waitForKey()
Serial.print( '*')
gotoエラー
}
if(z == 5)
{{
digitalWrite(緑、高)
delay(100)
digitalWrite(緑、低)
Serial.print( '*')
dumpkey = keypad.waitForKey()
Serial.print( '*')
gotoエラー
}
エラー:
Serial.println( '')
Serial.print( 'パスワードが間違っています。30秒待ちます。')
digitalWrite(red、HIGH)
遅延(10000)
遅延(10000)
遅延(10000)
digitalWrite(red、LOW)
トップへ戻る
}
// --------------------------------- R.Girishによって開発されたプログラム--------- ----------------- //

注意: パスワードを設定するには:char pass [] = '123ABC' // 6桁のパスワードのみ(以下またはそれ以上)
「123ABC」を引用符で囲んだ自分のパスワードに変更します。

プログラムで設定されているパスワードが6桁のみであり、それ以下またはそれ以上ではなく、正確に6桁であることを確認してください。そうしないと、プログラムが正しく機能しません。

説明されているパスワードセキュリティロック回路についてさらに疑問がある場合は、コメントを通じてお気軽に投稿してください。




前:サンライズサンセットシミュレーターLED回路 次へ:Bluetoothモーターコントローラー回路