このRFIDベースの出席システムプロジェクトでは、RFIDカードを使用して出席を自動的にカウントする方法について説明します。RFIDテクノロジー(無線周波数の識別と検出)は、学校、大学、オフィス、駅でさまざまな目的で一般的に使用され、人々を自動的に追跡します。ここでは、RFIDを使用して許可された人の出席をカウントします。
出席システム全体を、リーダーセクション、コントロールセクション、ドライバーセクション、ディスプレイセクションのさまざまなセクションに分割できます。各セクションの役割は、以下のブロック図に示されています。
リーダーセクション
このセクションにはRFIDが含まれています。これは、RFIDリーダーとRFIDタグまたはカードの2つの部分からなる電子デバイスです。RFIDタグをRFIDリーダーの近くに置くと、タグデータが連続して読み取られます。RFIDタグのコイルには12桁の文字コードがあります。このRFIDは9600bpsのボーレートで動作しています。RFIDは電磁石を使用して、データをリーダーからタグに、またはタグからリーダーに転送します。
制御セクション:
8051マイクロコントローラーは、このプロジェクトの完全なプロセスを制御するために使用されます。ここでは8051を使用して、RFIDデータを受信し、ステータスまたはメッセージをLCDに送信しています。
表示セクション:
このプロジェクトでは、16x2LCDを使用してメッセージを表示します。
ドライバーセクション:
このセクションには、ゲートを開くためのモータードライバーL293Dと、表示用のBC547NPNトランジスターを備えたブザーがあります。
ワーキング
人がRFIDタグをRFIDリーダーに置くと、RFIDはタグのデータを読み取り、8051マイクロコントローラーに送信し、マイクロコントローラーはこのデータを定義済みのデータまたは情報と比較します。データが定義されたデータと一致する場合、マイクロコントローラーはタグの1人の出席をインクリメントし、一致しない場合、マイクロコントローラーはLCDに無効なカードを表示し、ブザーがしばらく鳴り続けます。
RFIDベースの出席システムプロジェクトの回路図を上に示します。この回路では、LCDは8051マイクロコントローラと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に接続されています。
プログラムの説明
RFIDベースの出席システムをプログラムするには、最初にヘッダーファイルをインクルードし、入力ピンと出力ピンおよび変数を定義する必要があります。
#include
この後、遅延関数を作成する必要があります。
void delay(int itime){int i、j; for(i = 0; i
次に、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のいずれかのタグが付いたときにRFIDの出力を読み取ります。この文字列を配列に格納してから、事前定義された配列データと照合します。
lcdcmd(1); lcdstring( "カードを配置:"); lcdcmd(0xc0); i = 0; for(i = 0; i <12; i ++)rfid = rxdata(); rfid = '\ 0'; lcdcmd(1);
一致が発生した場合、コントローラーは出席者を1人増やします。それ以外の場合、ビープブザーが鳴り続け、LCDに無効なカードが表示されます。
if(strncmp(rfid、 "160066A5EC39"、12)== 0){count1 ++; lcdcmd(1); lcdstring( "出席"); lcdcmd(0xc0); lcdstring( "登録済み"); delay(200); lcdcmd(1); lcdstring( "Student1"); lcdcmd(0xc0); lcdstring( "Attnd。No.:"); sprintf(result、 "%d"、count1); lcdstring(結果);
PCBレイアウト
RFIDベースの出席システムのPCBレイアウトは次のとおりです。