このプロジェクトでは、RFIDとキーパッドベースのセキュリティシステムを開発し ます。このプロジェクトは、8051マイクロコントローラーを使用して実装されています。RFID技術(無線周波数の識別と検出)は、学校、大学、オフィス、駅でさまざまな目的で一般的に使用され、有効なRFIDタグで人々を自動的に認証します。ここでは、RFIDタグと、タグに関連付けられたパスワードをチェックして、システムを保護します。
ワーキング
セキュリティシステム全体を、リーダーセクション、キーパッド、コントロールセクション、ドライバーセクション、ディスプレイセクションなどのさまざまなセクションに分割できます。システム全体の動作と各セクションの役割は、以下のブロック図から理解できます。
リーダーセクション:このセクションにはRFIDが含まれています。これは、2つの部分からなる電子デバイスです。1つはRFIDリーダーで、もう1つはRFIDタグまたはカードです。RFIDタグをRFIDリーダーの近くに置くと、タグデータが連続して読み取られます。ここで使用したRFIDタグは12桁の文字コードまたはシリアル番号です。このRFIDは9600bpsのボーレートで動作しています。
キーパッド: ここでは、システムにパスワードを入力するために4x4マトリックスキーパッドを使用しました。
制御セクション: 8051マイクロコントローラーは、このRFIDベースのセキュリティシステムの完全なプロセスを制御するために使用されます。ここでは8051を使用して、RFIDデータを受信し、ステータスまたはメッセージをLCDに送信しています。
表示セクション: このプロジェクトでは、6x2LCDを使用してメッセージを表示します。ここでチュートリアルを見ることができます:8051マイクロコントローラーとのLCDインターフェース
ドライバーセクション: このセクションには、ゲートを開くためのモータードライバーL293Dと、表示用のBC547NPNトランジスターを備えたブザーがあります。
人が自分のRFIDタグをRFIDリーダーに置くと、RFIDはタグのデータを読み取り、8051マイクロコントローラーに送信し、マイクロコントローラーはこのデータを事前定義されたデータと比較します。データが事前定義されたデータと一致する場合、マイクロコントローラーはパスワードを要求し、パスワードを入力した後、マイクロコントローラーはパスワードを事前定義されたパスワードと比較します。パスワード一致ゲートが開く場合は、LCDにアクセスが拒否され、ブザーがしばらく鳴り始めます。
回路図と説明
上記のRFIDセキュリティシステムの回路図に示されているように、16x2LCDは4ビットモードでマイクロコントローラーに接続されています。LCDのRS、RW、およびENピンは、ポート1のピン番号P1.0、P1.1、およびP1.2に直接接続されています。LCDのD4、D5、D6、およびD7ピンは、ポート1のピンP1.4、P1.5、P1.6、およびP1.7に直接接続されています。モータードライバーは、ポートピン番号P2.4およびP2.5に接続されています。また、ブザーはPORT2のP2.6に接続されています。そして、キーパッドはPORT0に接続されています。キーパッドの行はP0.4〜P0.7で接続され、列はP0.0〜P0.3で接続されます。
プログラムの説明
RFIDベースのセキュリティシステム用に8051マイクロコントローラをプログラミングする際、まずヘッダーファイルをインクルードし、入力ピンと出力ピンおよび変数を定義します。
#include
次に、キーパッドモジュールのピンを定義します。
sbit col1 = P0 ^ 0; sbit col2 = P0 ^ 1; sbit col3 = P0 ^ 2; sbit col4 = P0 ^ 3; sbit row1 = P0 ^ 4; sbit row2 = P0 ^ 5; sbit row3 = P0 ^ 6; sbit row4 = P0 ^ 7;
この後、遅延関数を作成しました。
void delay(int itime){int i、j; for(i = 0; i
次に、LCD用の関数を作成し、lcd関数を初期化します。
void lcd_init(void){lcdcmd(0x02); lcdcmd(0x28); lcdcmd(0x0e); lcdcmd(0x01); }
ここに、プログラムで使用したいくつかの関数があります。これでは、11.0592MHzの水晶周波数で9600bpsのボーレートを構成し、受信用の機能は、データを受信するためにSBUFレジスタを監視しています。
void uart_init(){TMOD = 0x20; SCON = 0x50; TH1 = 0xfd; TR1 = 1; } char rxdata(){while(!RI); ch = SBUF; RI = 0; chを返す; }
この後、メインプログラムでlcdとUartを初期化し、タグが付けられたときにRFIDの出力を読み取ります。この文字列を配列に格納してから、predefind配列データと照合します。そして、パスワードを一致させます。
if(strncmp(rfid、 "160066A5EC39"、12)== 0){キーパッド(); if(strncmp(pass、 "4201"、4)== 0){accept(); lcdcmd(1); lcdstring( "アクセスが許可されました"); lcdcmd(0xc0);
一致した場合、コントローラーはゲートを開きます。一致しない場合、ブザーが鳴り、LCDに無効なカードが表示されます。