キーパッドとLCDを備えたArduinoキーレスドアロックシステム
コンポーネントと消耗品
> |
| × | 1 | |||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 |
アプリとオンラインサービス
> |
|
このプロジェクトについて
キーパッドとLCDを備えたArduinoキーレスドアロックシステム 0
0
アリー・ハムザ作
このプロジェクトでは、4X4キーパッドを使用してキーを入力し、DCロックを使用してドアを開閉するキーレスドアロックシステムを作成します。ディスプレイには16X2LCDが使用されます。
必要なコンポーネント
このプロジェクトに必要なコンポーネントは次のとおりです
- Arduino
- 4X4キーパッド
- LCD
- DCロック
- リレー
- 9V電池
- 10kポテンショメータ
- 220オームの抵抗器
どのように機能しますか?
キーが押されるたびに、それらはすでに保存されているキーと照合されます。押されたキーがEEPROMに保存されている初期パスワード「1234」と一致する場合、ロックが開きます。パスワードが一致しない場合は、LCDに「アクセスが拒否されました」と表示されます。
「#」キーを押すと、現在のパスワードを入力するように求められ、一致する場合は、新しいパスワードを入力するように求められ、パスワードが変更されます。
回路図
まず、4X4キーパッドをArduinoに接続します。 4X4キーパッドの最初の6つのピンをArduinoのA0およびA5ピンに接続します。次に、4X4キーパッドモジュールの最後の2つのピンをArduinoのデジタルピン3と2に接続します。
その後、LCDをArduinoに接続します。 LCDとArduinoを接続するための接続は次のとおりです
- LCDのピン1(VSSピン)をArduinoのGNDに接続します
- VDDピンであるピン2をArduinoの5Vピンに接続します
- ピン3(V0)を10kポテンショメータの中央に接続し、ポテンショメータの他の2つのピンをArduinoの5VとGNDに接続します。このピンは、LCDのコントラストを設定するためのものです。
- RSピンであるピン4をArduinoのピン7に接続します
- R / Wピンであるピン5をArduinoのGNDピンに接続します
- イネーブルピンであるピン6をArduinoのピン6に接続します
- データピンであるピン11、12、13、および14をArduinoのピン5、4、3、および2に接続します
- LCDのバックライトピンであるピン15を、220オームの抵抗を介してArduinoの5Vに接続します
- バックライトのマイナスピンであるArduinoのピン16をArduinoのGNDに接続します
最後に、DCロックをArduinoに接続します。ロックは7〜12Vの電圧で動作するため、Arduinoに直接接続することはできません。 Arduinoに接続するには、リレーとバッテリーが必要です。
リレーの信号ピンをArduinoのピン10に接続し、ロックのVCCとGNDをArduinoの5VとGNDに接続します。次に、リレーのもう一方の端で、バッテリーのマイナスをリレーのコモンに接続し、リレーのNO(ノーマルオープン)をロックの片側に接続します。次に、ロックの反対側をバッテリーのプラス端子に接続します。
<図>Arduinoキーパッドロックコード
初期パスワードは1234です。
#include #include #include LiquidCrystal liquid_crystal_display(9,8,7,6,5,4、); char password [4]; char initial_password [4]、new_password [4]; int i =0; int relay_pin =10; char key_pressed =0; const byte rows =4; constバイト列=4; char hexaKeys [rows] [columns] ={{'1'、 '2'、 '3'、 'A'}、{'4'、 '5'、 '6'、 'B'}、{'7' 、 '8'、 '9'、 'C'}、{'*'、 '0'、 '#'、 'D'}}; byte row_pins [rows] ={A0、A1、A2、A3}; byte column_pins [columns] ={A4、A5,3,2};キーパッドkeypad_key =Keypad(makeKeymap(hexaKeys)、row_pins、column_pins、rows、columns); void setup(){pinMode(relay_pin、OUTPUT); liquid_crystal_display.begin(16,2); liquid_crystal_display.print( "DIYhacking.com"); liquid_crystal_display.setCursor(0,1); liquid_crystal_display.print( "電子ロック"); delay(2000); liquid_crystal_display.clear(); liquid_crystal_display.print( "パスワードを入力してください"); liquid_crystal_display.setCursor(0,1); initialpassword();} void loop(){digitalWrite(relay_pin、HIGH); key_pressed =keypad_key.getKey(); if(key_pressed =='#')change(); if(key_pressed){password [i ++] =key_pressed; liquid_crystal_display.print(key_pressed); } if(i ==4){delay(200); for(int j =0; j <4; j ++)initial_password [j] =EEPROM.read(j); if(!(strncmp(password、initial_password、4))){liquid_crystal_display.clear(); liquid_crystal_display.print( "Pass Accepted"); digitalWrite(relay_pin、LOW); delay(2000); liquid_crystal_display.setCursor(0,1); liquid_crystal_display.print( "Pres#to change"); delay(2000); liquid_crystal_display.clear(); liquid_crystal_display.print( "パスワードを入力してください:"); liquid_crystal_display.setCursor(0,1); i =0; } else {digitalWrite(relay_pin、HIGH); liquid_crystal_display.clear(); liquid_crystal_display.print( "間違ったパスワード"); liquid_crystal_display.setCursor(0,1); liquid_crystal_display.print( "Pres#to Change"); delay(2000); liquid_crystal_display.clear(); liquid_crystal_display.print( "パスワードを入力してください"); liquid_crystal_display.setCursor(0,1); i =0; }}} void change(){int j =0; liquid_crystal_display.clear(); liquid_crystal_display.print( "現在のパスワード"); liquid_crystal_display.setCursor(0,1); while(j <4){char key =keypad_key.getKey(); if(key){new_password [j ++] =key; liquid_crystal_display.print(key); } key =0; } delay(500); if((strncmp(new_password、initial_password、4))){liquid_crystal_display.clear(); liquid_crystal_display.print( "間違ったパスワード"); liquid_crystal_display.setCursor(0,1); liquid_crystal_display.print( "再試行"); delay(1000); } else {j =0; liquid_crystal_display.clear(); liquid_crystal_display.print( "新しいパスワード:"); liquid_crystal_display.setCursor(0,1); while(j <4){char key =keypad_key.getKey(); if(key){initial_password [j] =key; liquid_crystal_display.print(key); EEPROM.write(j、key); j ++; }} liquid_crystal_display.print( "Pass Changed"); delay(1000); } liquid_crystal_display.clear(); liquid_crystal_display.print( "パスワードを入力してください"); liquid_crystal_display.setCursor(0,1); key_pressed =0;} void initialpassword(){for(int j =0; j <4; j ++)EEPROM.write(j、j + 49); for(int j =0; j <4; j ++)initial_password [j] =EEPROM.read(j);}
コードの説明
まず、4X4キーパッド、LCD、およびパスワードを保存するためのライブラリを含めます。 EEPROMライブラリはパスワードを保存するために使用されます。保存されているデフォルトのパスワードは「1234」です。
#include #include #include
ループ機能では、押されたキーは「 key_pressed 」に保存されます ’変数であり、他のキーと比較されます。押されたキーが「#」の場合、変更関数が呼び出され、新しいパスワードの入力を求められます。
key_pressed =keypad_key.getKey(); if(key_pressed =='#')change();
押されたキーは「パスワード」に保存されます ’変数であり、これらはキーが押されたときにLCDに表示されます。次に、これらのキーは、EEPROMに保存されている初期パスワードと照合されます。押されたキーが初期パスワードと一致する場合、ロックが開き、「Passaccepted」がLCDに印刷されます。パスワードが一致しない場合は、パスワードの再入力を求められます。
if(key_pressed){password [i ++] =key_pressed; liquid_crystal_display.print(key_pressed); } if(i ==4){delay(200); for(int j =0; j <4; j ++)initial_password [j] =EEPROM.read(j); if(!(strncmp(password、initial_password、4))){liquid_crystal_display.clear(); liquid_crystal_display.print( "Pass Accepted"); digitalWrite(relay_pin、LOW); delay(2000);
「#」キーを押すと、「 change()」が呼び出されます。 ' 関数。変更機能では、現在のパスワードの入力を求められます。現在のパスワードが正しい場合は、新しいパスワードの入力を求められます。新しいパスワードを入力すると、パスワードが変更されます。
void change(){int j =0; liquid_crystal_display.clear(); liquid_crystal_display.print( "現在のパスワード"); liquid_crystal_display.setCursor(0,1); while(j <4){char key =keypad_key.getKey(); if(key){new_password [j ++] =key; liquid_crystal_display.print(key); } key =0; } delay(500);
タグ:4x4キーパッド、Arduino、DCロック、キーロック、キーパッド、液晶、ロック
おすすめの投稿
リアルタイムクロックとLCD画面を使用したArduino目覚まし時計
<図>Arduinoセルフバランスロボットの作り方
<図>Arduinoとソレノイドを使用してトースターダンスを作成する
<図>ArduinoでDIY自動灌漑システムを作る
<図> コード
- コードスニペット#1
- コードスニペット#2
- コードスニペット#3
- コードスニペット#4
- コードスニペット#5
コードスニペット#1 プレーンテキスト
#include#include #include LiquidCrystal liquid_crystal_display(9,8,7,6,5,4、); char password [4]; char initial_password [ 4]、new_password [4]; int i =0; int relay_pin =10; char key_pressed =0; const byte rows =4; constバイト列=4; char hexaKeys [rows] [columns] ={{'1'、 '2'、 '3'、 'A'}、{'4'、 '5'、 '6'、 'B'}、{'7' 、 '8'、 '9'、 'C'}、{'*'、 '0'、 '#'、 'D'}}; byte row_pins [rows] ={A0、A1、A2、A3}; byte column_pins [columns] ={A4、A5,3,2};キーパッドkeypad_key =Keypad(makeKeymap(hexaKeys)、row_pins、column_pins、rows、columns); void setup(){pinMode(relay_pin、OUTPUT); liquid_crystal_display.begin(16,2); liquid_crystal_display.print( "DIYhacking.com"); liquid_crystal_display.setCursor(0,1); liquid_crystal_display.print( "電子ロック"); delay(2000); liquid_crystal_display.clear(); liquid_crystal_display.print( "パスワードを入力してください"); liquid_crystal_display.setCursor(0,1); initialpassword();} void loop(){digitalWrite(relay_pin、HIGH); key_pressed =keypad_key.getKey(); if(key_pressed =='#')change(); if(key_pressed){password [i ++] =key_pressed; liquid_crystal_display.print(key_pressed); } if(i ==4){delay(200); for(int j =0; j <4; j ++)initial_password [j] =EEPROM.read(j); if(!(strncmp(password、initial_password、4))){liquid_crystal_display.clear(); liquid_crystal_display.print( "Pass Accepted"); digitalWrite(relay_pin、LOW); delay(2000); liquid_crystal_display.setCursor(0,1); liquid_crystal_display.print( "Pres#to change"); delay(2000); liquid_crystal_display.clear(); liquid_crystal_display.print( "パスワードを入力してください:"); liquid_crystal_display.setCursor(0,1); i =0; } else {digitalWrite(relay_pin、HIGH); liquid_crystal_display.clear(); liquid_crystal_display.print( "間違ったパスワード"); liquid_crystal_display.setCursor(0,1); liquid_crystal_display.print( "Pres#to Change"); delay(2000); liquid_crystal_display.clear(); liquid_crystal_display.print( "パスワードを入力してください"); liquid_crystal_display.setCursor(0,1); i =0; }}} void change(){int j =0; liquid_crystal_display.clear(); liquid_crystal_display.print( "現在のパスワード"); liquid_crystal_display.setCursor(0,1); while(j <4){char key =keypad_key.getKey(); if(key){new_password [j ++] =key; liquid_crystal_display.print(key); } key =0; } delay(500); if((strncmp(new_password、initial_password、4))){liquid_crystal_display.clear(); liquid_crystal_display.print( "間違ったパスワード"); liquid_crystal_display.setCursor(0,1); liquid_crystal_display.print( "再試行"); delay(1000); } else {j =0; liquid_crystal_display.clear(); liquid_crystal_display.print( "新しいパスワード:"); liquid_crystal_display.setCursor(0,1); while(j <4){char key =keypad_key.getKey(); if(key){initial_password [j] =key; liquid_crystal_display.print(key); EEPROM.write(j、key); j ++; }} liquid_crystal_display.print( "Pass Changed"); delay(1000); } liquid_crystal_display.clear(); liquid_crystal_display.print( "パスワードを入力してください"); liquid_crystal_display.setCursor(0,1); key_pressed =0;} void initialpassword(){for(int j =0; j <4; j ++)EEPROM.write(j、j + 49); for(int j =0; j <4; j ++)initial_password [j] =EEPROM.read(j);}
コードスニペット#2 プレーンテキスト
#include#include #include
コードスニペット#3 プレーンテキスト
key_pressed =keypad_key.getKey(); if(key_pressed =='#')change();
コードスニペット#4 プレーンテキスト
if(key_pressed){password [i ++] =key_pressed; liquid_crystal_display.print(key_pressed); } if(i ==4){delay(200); for(int j =0; j <4; j ++)initial_password [j] =EEPROM.read(j); if(!(strncmp(password、initial_password、4))){liquid_crystal_display.clear(); liquid_crystal_display.print( "Pass Accepted"); digitalWrite(relay_pin、LOW); delay(2000);
コードスニペット#5 プレーンテキスト
void change(){int j =0; liquid_crystal_display.clear(); liquid_crystal_display.print( "現在のパスワード"); liquid_crystal_display.setCursor(0,1); while(j <4){char key =keypad_key.getKey(); if(key){new_password [j ++] =key; liquid_crystal_display.print(key); } key =0; } delay(500);
回路図
Arduinoを使用して、正しいキーの組み合わせで開くことができるソレノイドドアロックを制御します。 製造プロセス
- MPU-6050を搭載したArduinoジャイロスコープゲーム
- PythonでArduinoとRFIDを使用した出席システム
- LEDとピエゾスピーカーを備えたDHT11センサー
- LCDアニメーションとゲーム
- Unopad-Abletonを搭載したArduinoMIDIコントローラー
- 温度および湿度データロガー
- Arduinoを搭載したシンプルな障害物センサー
- ArduinoUnoと1sheeldを備えた4x4x4LEDキューブ
- 新しい高速アルゴリズムを備えたArduinoベースのRPMカウンター
- ArduinoとGoogleスプレッドシートに基づく出席システム
- ArduinoとAndroidベースのパスワードで保護されたドアロック