工業製造
産業用モノのインターネット | 工業材料 | 機器のメンテナンスと修理 | 産業プログラミング |
home  MfgRobots >> 工業製造 >  >> Manufacturing Technology >> 製造プロセス

パスワードベースのドアロック

コンポーネントと消耗品

>
Arduino UNO
× 1
メンブレンキーパッド
× 1
TexasInstrumentsデュアルHブリッジモータードライバーL293D
× 1
リニアアクチュエータ
× 1

このプロジェクトについて

このプロジェクトを投稿した多くのウェブサイトがあり、それはさまざまなユーチューブチャンネルに存在します、そして多分このウェブサイトでさえこれらのいくつかを持っています。ですから、正直なところ、それはオリジナルではありません。しかし、私はより簡単でより有益な方法で説明し、表示することができるかもしれません。

このプロジェクトの主要なコンポーネントは、マトリックスキーパッドです。私は次のような4x4メンブレンキーパッドを使用しました:

<図>

キーパッドのキーは基本的にプッシュボタンです。これらのボタンスイッチは、押すと「閉じ」、力を解放すると自然な状態、つまり「開く」に戻ります。

<図>

これは、キーパッドが行と列として内部的に接続される方法です。 1を押すと、列1と行1が接続されます。 9を押すと、r3とc3が接続されます。

<図>

スキャンは、出力として構成された4つのキーと、入力として構成された4つのキーを使用して実行されます。入力プルアップ抵抗を使用してすべての列を入力にし、すべての行を出力にしました。プログラミングを使用して、すべての行を1秒間に複数回LOWにします。したがって、キーを押すと、対応する列がLOWになります。すべての列が接続されている入力ピンの状態が複数回読み取られます。 LOW状態が読み取られるときは常に、その列のキーが押されたことを意味します。特定の行が低く、同時に特定の列が低い場合、押されたキーが決定されます。

たとえば1を押すと、列1がローになります。また、各行が1つずつ非常に高速にLOWになるため、非常に短いスパンでキーを押しても、行1はいつかLOWになり、1が押されたと判断されます。 row1 ==low &&column1 ==lowの場合、1が押されたことを意味します。

これはコード1 に示されています 。このコードをstm32ボードにアップロードしたかったのですが、KEYPADライブラリに互換性がなかったため、自分でこのコードを作成しました。このコードを使用すると、上記で説明した内容を理解できます。または、単にキーパッドライブラリを使用して、「customkeypad」の例を実行することもできます。どちらも同じ目的を果たします。しかし、そのコードはあなたに動作を説明しません。

シリアルモニターを使用して、押された各キーが画面に表示されます。これはビデオ1 に示されています 。

キーの決定が正常に機能した後、パスワードを処理する時間です。そのとても簡単です。私がしたことは-文字列「1234」を作成しました。これは私が設定したパスワードです。今、私は別の配列を作りました。キー値が何であれ、この配列に格納されます。 countが4に達すると、両方の文字列が比較されます。それらが一致する場合-パスワードは正しいですが、そうでない場合はそうではありません。これはコード2 に示されています 。 11番ピンにLEDを接続しました。パスワードが正しければ光ります。 ビデオ2 に表示されています 。

ここで、ロックとして使用されるコンポーネント:12Vリニアアクチュエータ。このように見えます。

<図>

これは、一般に「モータードライバー」ICとして知られているL293dICを使用して動作します。このICは12v電源に接続されています。 Arduinoからの入力、つまり5v入力を受け取り、12vをその出力ピン(アクチュエーターが接続されている)に出力します。したがって、パスワードが正しい場合、ピン11はハイに設定され、ピン12はローに設定されます。ピン11と12は、l293dの入力に接続されています。したがって、アクチュエータが内側に引っ張られ、ドアが開きます。 ビデオ3 に表示 。

コード

  • コード1
  • コード2
コード1 Arduino
Scanning
 int rows =4; int columns =4; char readkey(void); char nfunc(void); #define c3 9#define c2 8#define c1 7#define c0 6#define r3 5#define r2 4 #define r1 3#define r0 2void setup(){Serial.begin(9600); pinMode(c0、INPUT_PULLUP); pinMode(c1、INPUT_PULLUP); pinMode(c2、INPUT_PULLUP); pinMode(c3、INPUT_PULLUP); pinMode(r0、OUTPUT); pinMode(r1、OUTPUT); pinMode(r2、OUTPUT); pinMode(r3、OUTPUT); pinMode(11、OUTPUT); pinMode(12、OUTPUT);} char readkey(void){digitalWrite(r0、LOW); digitalWrite(r1、HIGH); digitalWrite(r2、HIGH); digitalWrite(r3、HIGH); if(digitalRead(c0)==LOW){delay(500); return '1';} else if(digitalRead(c1)==LOW){delay(500); return '2';} else if(digitalRead(c2)==LOW){delay (500); return '3';} else if(digitalRead(c3)==LOW){delay(500); return'A ';} digitalWrite(r0、HIGH); digitalWrite(r1、LOW); digitalWrite(r2 、HIGH); digitalWrite(r3、HIGH); if(digitalRead(c0)==LOW){delay(500); return '4';} else if(digitalRead(c1)==LOW){delay(500); return '5';} else if(digitalRead(c2)==LOW){delay(500); return '6';} else if(digitalRead(c3)==LOW){delay(500); return'B ';} digitalWrite(r0、HIGH); digitalWrite(r1、HIGH); digitalWrite(r2、LOW); digitalWrite(r3、HIGH); if(digitalRead(c0)==LOW){delay(500); return '7';} else if(digitalRead(c1)==LOW){delay(500); return '8';} else if(digitalRead(c2)==LOW){delay(500); return '9';} else if(digitalRead(c3)==LOW){delay(500); return'C ';} digitalWrite( r0、HIGH); digitalWrite(r1、HIGH); digitalWrite(r2、HIGH); digitalWrite(r3、LOW); if(digitalRead(c0)==LOW){delay(500); return '*';} else if (digitalRead(c1)==LOW){delay(500); return '0';} else if(digitalRead(c2)==LOW){delay(500); return '#';} else if(digitalRead(c3 )==LOW){delay(500); return'D ';} return'o';} char nfunc(void){char key ='o'; while(key =='o')key =readkey(); return key;} void loop(){char key1 =nfunc(); if(key1){Serial.print(key1);}} 
コード2 Arduino
password
 int rows =4; int columns =4; int count =0; char readkey(void); char nfunc(void); #define c3 9#define c2 8#define c1 7#define c0 6#define r3 5#define r2 4#define r1 3#define r0 2char password [5] ="1234"; char typed [5]; void setup(){Serial.begin(9600); pinMode(c0、INPUT_PULLUP); pinMode(c1、INPUT_PULLUP); pinMode(c2、INPUT_PULLUP); pinMode(c3、INPUT_PULLUP); pinMode(r0、OUTPUT); pinMode(r1、OUTPUT); pinMode(r2、OUTPUT); pinMode(r3、OUTPUT); pinMode(11、OUTPUT); pinMode(12、OUTPUT);} char readkey(void){digitalWrite(r0、LOW); digitalWrite(r1、HIGH); digitalWrite(r2、HIGH); digitalWrite(r3、HIGH); if(digitalRead(c0)==LOW){delay(500); return '1';} else if(digitalRead(c1)==LOW){delay(500); return '2';} else if(digitalRead(c2)==LOW){delay (500); return '3';} else if(digitalRead(c3)==LOW){delay(500); return'A ';} digitalWrite(r0、HIGH); digitalWrite(r1、LOW); digitalWrite(r2 、HIGH); digitalWrite(r3、HIGH); if(digitalRead(c0)==LOW){delay(500); return '4';} else if(digitalRead(c1)==LOW){delay(500); return '5';} else if(digitalRead(c2)==LOW){delay(500); return '6';} else if(digitalRead(c3)==LOW){delay(500); return'B ';} digitalWrite(r0、HIGH); digitalWrite(r1、HIGH); digitalWrite(r2、LOW); digitalWrite(r3、HIGH); if(digitalRead(c0)==LOW){delay(500); return '7';} else if(digitalRead(c1)==LOW){delay(500); return '8';} else if(digitalRead(c2)==LOW){delay(500); return '9';} else if(digitalRead(c3)==LOW){delay(500); return'C ';} digitalWrite( r0、HIGH); digitalWrite(r1、HIGH); digitalWrite(r2、HIGH); digitalWrite(r3、LOW); if(digitalRead(c0)==LOW){delay(500); return '*';} else if (digitalRead(c1)==LOW){delay(500); return '0';} else if(digitalRead(c2)==LOW){delay(500); return '#';} else if(digitalRead(c3 )==LOW){delay(500); return'D ';} return'o';} char nfunc(void){char key ='o'; while(key =='o')key =readkey(); return key;} void loop(){char key1 =nfunc(); if(key1){typed [count] =key1; count ++; Serial.print(key1);} if(count ==4){if(strcmp(typed、password)==0){Serial.println( "correct"); digitalWrite(11、HIGH); digitalWrite(12、LOW); delay(250); digitalWrite(11、LOW);} else {Serial.println( "intruder");} count =0;}} 

回路図

モーターが接続されている場所にアクチュエーターを接続します。
ピン8を12vに接続します 画面に表示される押されたキー VID_20160924_195032.mp4ledは、パスワードが正しい場合に点灯します VID_20160924_200016.mp4通常の場合、アクチュエータは外側に引っ張られます(つまり、ドアがロックされています)。
パスワードが正しければ、パスワードが内側に引き込まれ、ドアが開きます VID_20160924_201528.mp4

製造プロセス

  1. 銀行の金庫室
  2. 回転ドア
  3. 運河と水門
  4. ロック
  5. ダイヤル錠
  6. ラズベリーパイをベースにした気象観測所
  7. スマートフォンの近接センサーで自動ロック式のオフィスドアを作る
  8. Windows IoT:顔認識ドア
  9. ArduinoおよびOLEDベースのセルオートマトン
  10. Arduino&ESP8266によるWiFiログインページを使用したSmart Door Lock
  11. エンジン構成について