セキュリティは私たちの日常生活における主要な関心事であり、デジタルロックはこれらのセキュリティシステムの重要な部分になっています。PIRベースのセキュリティシステム、RFIDベースのセキュリティシステム、レーザーセキュリティアラーム、バイオマトリックスシステムなど、私たちの場所を保護するために利用できる多くの種類の技術があります。現在でも、スマートフォンを使用して操作できるデジタルロックがあります。より多くの異なるキーを保持する必要があり、1台のスマートフォンですべてのロックを操作できます。この概念はInternet ofThingsに基づいています。
このプロジェクトでは、8051 Microcontorllerを使用した簡単な電子コードロックについて説明しました。これは、事前定義されたコードによってのみロックを解除できます。間違ったコードを入力すると、システムはブザーを鳴らして警告します。Arduinoを使用してすでにデジタルロックを作成しています。
作業説明:
このシステムには、主にAT89S52マイクロコントローラー、キーパッドモジュール、ブザー、LCDが含まれています。At89s52マイクロコントローラーは、キーパッドモジュールからのパスワードの取得、パスワードの事前定義されたパスワードの比較、ブザーの駆動、LCDディスプレイへのステータスの送信などの完全なプロセスを制御します。キーパッドは、マイクロコントローラーにパスワードを挿入するために使用されます。ブザーは間違ったパスワードを示すために使用され、LCDはステータスやメッセージを表示するために使用されます。ブザーにはNPNトランジスタを使用したドライバが内蔵されています。
コンポーネント:
- 8051マイクロコントローラー(AT89S52)
- 4X4キーパッドモジュール
- ブザー
- 16x2 LCD
- 抵抗器(1k、10k)
- プルアップ抵抗(10K)
- コンデンサ(10uf)
- 赤のLED
- ブレッドボード
- IC 7805
- 11.0592MHzクリスタル
- 電源
- 接続線
多重化手法を使用して4X4キーパッドマトリックスから入力を取得します。
この回路では、システムにパスワードを入力するために、多重化技術を使用してキーパッドを8051マイクロコントローラーに接続しました。ここでは、16個のキーを持つ4x4キーパッドを使用しています。16キーを使用する場合は、89s52への接続に16ピンが必要ですが、多重化技術では、16キーのインターフェイスに8ピンのみを使用する必要があります。そのため、キーパッドモジュールをインターフェースするスマートな方法です。
多重化技術は、入力またはパスワードを提供するためにマイクロコントローラーで使用されるピンの数を減らすための非常に効率的な方法です。基本的に、この手法は2つの方法で使用されます。1つは行スキャンで、もう1つは列スキャンです。
ここでは、行スキャンについて説明します。
まず、キーパッドモジュール用に8ピンを定義する必要があります。最初の4つのピンは列で、最後の4つのピンは行です。
行スキャンの場合、データまたは信号を列ピンに渡し、そのデータまたは信号を行ピンから読み取る必要があります。ここで、以下のデータを列ピンに与えると仮定します。
C1 = 0;
C2 = 1;
C3 = 1;
C4 = 1;
そして、このデータを行ピンで読み取ります(デフォルトでは、プルアップ抵抗のために行ピンはHIGHです)。
ユーザーがキー番号「1」を押すと、R1がHIGHからLOWに変わり、R1 = 0を意味します。コントローラは、ユーザーがキー「1」を押したことを認識します。また、LCDに「1」を出力し、「1」を配列に格納します。したがって、R1でのこのHIGHからLOWへの変更は、コントローラーが列1に対応するキーが押されたことを認識する主なものです。
ここで、ユーザーがキー番号「2」を押すと、C1とR1の両方がすでにHIGHになっているため、R1はHIGHのままになります。したがって、変更はありません。つまり、マイクロコントローラーは、列1で何も押されていないことを理解します。同様に、このプリンシパルは他のすべてのピンにも適用されます。したがって、このステップでは、コントローラーは列1のキー(「1」、「4」、「7」、および「*」)のみを待機します。
ここで、他の列(列2など)のキーを追跡する場合は、列のピンのデータを変更する必要があります。
C1 = 1;
C2 = 0;
C3 = 1;
C4 = 1;
今回のコントローラーは、列2のキーが押されたときにのみ変更(HIGHからLOW)が発生するため、列2のキー(「2」、「5」、「8」、および「0」)のみを待機します。列1、3、または4のいずれかのキーを押しても、これらの列はHIGHであり、行はすでにHIGHであるため、変更は発生しません。
したがって、同様に、列C3およびC4のキーも、一度に0にすることで追跡できます。詳細な説明はこちらをご覧ください:8051とのキーパッドインターフェース。ロジックを正しく理解するには、以下のコードセクションも参照してください。
回路の説明:
8051を使用したこのデジタルロックの回路図を以下に示します。これは簡単に理解できます。キーパッドモジュールの列ピンはピンP0.0、P0.1、P0.2、P0.3に直接接続され、行ピンは89s52マイクロコントローラのポート0のP0.4、P0.5、P0.6、P0.7に接続されます。 。16x2LCDは、4ビットモードで89s52マイクロコントローラーに接続されています。制御ピンRS、RW、およびEnは、ピンP1.0、GND、およびP1.2に直接接続されています。また、データピンD4-D7は、89s52のピンP1.4、P1.5、P1.6、およびP1.7に接続されています。そして、1つのブザーが抵抗を介してピンP2.6に接続されています。
プログラムの説明:
プログラムで事前定義されたパスワードを使用しました。このパスワードは、以下のコードでユーザーが定義できます。ユーザーがシステムにパスワードを入力したとき、次に、システムは、ユーザーが入力したパスワードを、プログラムのコードに保存または事前定義されたパスワードと比較します。一致する場合はLCDに「AccessGrated」と表示され、パスワードが一致しない場合はLCDに「AccessDenied」と表示され、しばらくの間ブザーが鳴り続けます。ここではstring.hライブラリを使用しました。このライブラリを使用すると、「strncmp」関数を使用して2つの文字列を比較または照合できます。
プログラムでは、まずヘッダーファイルをインクルードし、キーパッドとLCDの可変ピンと入出力ピンを定義します。
#include
LCDの初期化、文字列の印刷、コマンドなどのいくつかのLCD関数とともに、1秒の遅延を作成する関数が作成されました。これらはコードで簡単に見つけることができます。8051とその機能とのLCDインターフェースについては、この記事を確認してください。
この後、メインプログラムでLCDを初期化し、keypad()関数を使用してKeypadからの入力を読み取り、入力キーを配列に格納してから、strncmpを使用して事前定義された配列データと比較します。
void main(){ブザー= 1; lcd_init(); lcdstring( "電子コード"); lcdcmd(0xc0); lcdstring( "ロックシステム"); delay(400); lcdcmd(1); lcdstring( "回路ダイジェスト"); delay(400); while(1){i = 0; キーパッド(); if(strncmp(pass、 "4201"、4)== 0)
入力したパスワードが一致すると、accept()関数が呼び出されます。
void accept(){lcdcmd(1); lcdstring( "ようこそ"); lcdcmd(192); lcdstring( "パスワード承認"); delay(200); }
また、パスワードが間違っている場合は、wrong()関数が呼び出されます。
void wrong(){ブザー= 0; lcdcmd(1); lcdstring( "間違ったパスキー"); lcdcmd(192); lcdstring( "PLZ再試行"); delay(200); ブザー= 1; }
入力フォームのキーパッドモジュールを読み取るコードで、以下のキーパッド機能を確認してください。