セキュリティは私たちの日常生活における主要な関心事であり、 デジタルロック はこれらのセキュリティシステムの重要な部分になっています。PIRベースのセキュリティシステム、RFIDベースのセキュリティシステム、レーザーセキュリティアラーム、バイオマトリックスシステムなど、私たちの場所を保護するために利用できる多くの種類の技術があります。
以前、Arduinoと8051を使用してパスワード付きのデジタルロックを構築しました。ここでは、ユーザー定義のパスワードを使用したRaspberryPiを使用してこのデジタルロックを構築します。パスワードが設定されると、ユーザーは正しいパスワードでのみドアにアクセスできます。
Raspberry Piに慣れていない場合は、Raspberry Piを学習するための一連のチュートリアルを作成しました。ここでは、すべての基本コンポーネントといくつかの簡単なプロジェクトを使用して、最初に確認してください。
使用されるコンポーネント:
- Raspberry Pi(起動したSDカード付き)
- キーパッドモジュール
- ブザー
- 16x2 LCD
- 10kポット
- 10k抵抗パック(プルアップ)
- 導いた
- 1k抵抗
- ブレッドボード
- ゲートとしてのCD / DVDトロリー
- 電力5ボルト
- モータードライバーL293D
- 12ボルトバッテリー
- 接続線
マルチプレックスを使用した4x4キーパッドとRaspberryPiの接続:
この回路では、多重化技術を使用して、システムにパスワードを入力するためのキーパッドをインターフェースしました。ここでは、16キーの4x4マルチプレックスキーパッドを使用しています。通常、16個のキーを使用する場合は、Arduinoに接続するために16個のピンが必要ですが、多重化技術では、16個のキーをインターフェイスするために8個のピンしか必要ありません。そのため、キーパッドモジュールをインターフェースするスマートな方法です。多重化技術と8051を使用したこのデジタルロックでの動作の詳細をご覧ください。
多重化技術は、入力またはパスワードまたは数値を提供するためにマイクロコントローラーで使用されるピンの数を減らすための非常に効率的な方法です。基本的に、この手法は2つの方法で使用されます。1つは行スキャンで、もう1つは列スキャンです。キーパッドライブラリを使用する場合(#include
しかし、このプロジェクトでは、キーパッドライブラリを使用せずに、同じキーパッドをコーディングする簡単な方法を実装しました。以下のプログラミングセクションでそれを参照してください。
回路の説明:
このRaspberryPiデジタルドアロックの回路は非常にシンプルで、Raspberry Pi 3、キーパッドモジュール、ブザー、ゲートとしてのDVD / CDトロリーおよびLCDが含まれています。ここで、Raspberry Piは、キーパッドモジュールからのパスワードの取得、パスワードの比較、ブザーの駆動、ゲートの開閉、LCDディスプレイへのステータスの送信などの完全なプロセスを制御します。キーパッドはパスワードの入力に使用されます。ブザーは表示に使用され、内蔵のNPNトランジスタによって駆動されます。 LCDは、ステータスやメッセージを表示するために使用されます。
キーパッドモジュールの列ピンはGPIOピン22、23、24、25に直接接続され、行ピンはRaspberry PiのwringPiピンの21、14、13、12に接続されます。16×2のLCDは、 4ビットモードでラズベリーPIで接続されています。LCDのコントロールピンRS、RWおよびEnが直接GPIOピン11に接続され、GNDおよび10データピンD4-D7は、GPIOピンに接続されている6、15、4と1つブザーGPIOピン8とが接続されているモータドライバL293Dは、RaspberryPiのGPIOピン28および29に接続されています。12ボルト電池を地面に対してL293Dのピン8に接続されています。
作業説明:
このプロジェクトの作業は簡単です。ユーザーがRaspberryPiでコードを実行すると、LCDにウェルカムメッセージが表示され、その後に「A-パスワードの入力」と2行目のB-パスキーの変更が表示されます。これで、ユーザーはキーパッドでAとBを押して選択できます。
ここで、ユーザーがゲートを開きたい場合は、キーパッドで「A」を押す必要があります。そうすると、システムはパスワードを要求します。デフォルトのパスワードは「1234」です。ここで、ユーザーはパスワードを入力する必要があります。このシステムがパスワードをチェックした後、パスワードが有効かどうかを確認します。
1.ユーザーが正しいパスワードを入力すると、システムはゲートを開きます。
2.ユーザーが間違ったパスワードを入力すると、システムはビープ音を鳴らすためにブザーにコマンドを送信し、LCDに「アクセスが拒否されました」と表示します。
ここで、ユーザーがパスワードを変更したい場合、キーパッドで「B」を押す必要があり、ユーザーは「現在のパスワード」または「現在のパスキー」を求められます。ここで、ユーザーは現在のパスワードを入力する必要があります。次に、システムがそのパスワードの正しさを確認し、指定されたタスクの1つを実行します。
1.ユーザーが正しいパスワードを入力すると、システムは「新しいパスワード」を要求し、ユーザーは新しいパスワードを入力してパスワードを変更できるようになります。
2.ユーザーが間違ったパスワードを入力すると、システムはブザーを鳴らし、LCDに「間違ったパスワード:」と表示します。
ここで、ユーザーはパスワードを変更するためにプロセス全体をもう一度繰り返す必要があります。
基本的に、ゲートの開閉は、モーターを時計回りと反時計回りに回転させてドアを開閉することに他なりません。小さなプロジェクトの場合、DCモーターを追加するだけでドアを開閉できます。サーボモーターやステッピングモーターも使用できますが、それに応じてコードを変更する必要があります。
さらに、CDトロリーの代わりに適切な電子ドアロック(オンラインで簡単に入手可能)を使用できます。ロックに電流が流れていないとき(開回路)にドアをロックしたままにする電磁石があり、電流が流れるとロックが解除されてドアを開けることができます。コードはそれに応じて変更されます。この共有プロジェクトレビューも確認してください:ArduinoRFIDドアロック
プログラミングの説明:
プログラミングはArduinoによく似ています。Arduino関数はクラスを使用しますが、ここでは、クラスなしでcプログラミングを使用してこのコードを実行しました。GPIO用のwiringPiライブラリもインストールしました。
まず、必要なライブラリを含めてから、LCD、ブザー、LED、モーターのピンを定義する必要があります。
#include
その後、キーパッドの行と列のピンを定義し、パスワードとキーパッド番号を格納するための配列を定義します。
チャーパス; char pass1 = {'1'、 '2'、 '3'、 '4'}; int n = 0; char row = {21、14、13、12}; char col = {22、23、24、25}; char num = {{'1'、 '2'、 '3'、 'A'}、{'4'、 '5'、 '6'、 'B'}、{'7'、 '8'、 ' 9 '、' C '}、{' * '、' 0 '、'# '、' D '}};
その後、LCDを駆動するためのいくつかの関数を作成しました。
関数 voidlcdcmd はコマンドをLCDに送信するために使用され、 void書き込み 関数はデータをLCDに送信するために使用されます。
関数 voidprint は、文字列をLCDに送信するために使用されます。
void print(char * str){while(* str){write(* str); str ++; }}
関数 voidsetCursor は、LCDのカーソル位置を設定するために使用されます。
void setCursor(int x、int y){int set = 0; if(y == 0)set = 128 + x; if(y == 1)set = 192 + x; lcdcmd(set); }
関数 voidclear() はLCDをクリアするために使用され、 void buzzer() は ブザーを鳴らす ために使用されます。
関数 voidgate_open()、void gate_stop() 、および void gate_close() は、ゲート(CDトロリー)の駆動に使用されます。
void gate_open(){digitalWrite(m1、LOW); digitalWrite(m2、HIGH); delay(2000); } void gate_stop(){digitalWrite(m1、LOW); digitalWrite(m2、LOW); delay(2000); } void gate_close(){digitalWrite(m1、HIGH); digitalWrite(m2、LOW); delay(2000); }
指定された関数は、LCDを4ビットモードで初期化するために使用されます。
void begin(int x、int y){lcdcmd(0x02); lcdcmd(0x28); lcdcmd(0x06); lcdcmd(0x0e); lcdcmd(0x01); }
与えられ たvoidkeypad() 関数は、キーパッドモジュールを「shortメソッド」でRaspberryPiとインターフェースするために使用されます。
void keypad(){int i、j; int x = 0、k = 0; delay(2000); while(k <4){for(i = 0; i <4; i ++){digitalWrite(col、LOW); for(j = 0; j <4; j ++){if(digitalRead(row)== 0){setCursor(x、1);………………….。
以下のフルコードのすべての機能を確認してください。コードは簡単でわかりやすいものです。