RFIDの略無線周波数識別。RFIDモジュールは、パッシブRFIDタグに少量のデータを読み書きできます。これは、出席システム、セキュリティシステム、投票システムなどのさまざまなシステムの識別プロセスで使用できます。RFIDは非常に便利で簡単なテクノロジーです。
パッシブRFIDカードとタグを読み取るには、UARTハードウェアを備えたマイクロコントローラーが必要です。UARTなしのマイクロコントローラーを選択する場合は、ソフトウェアUARTを実装する必要があります。ここでは、RFIDのインターフェースにPICマイクロコントローラーPIC16F877Aを使用しています。一意の識別番号を読みます。RFIDタグの数を16x2LCDに表示します。
RFIDモジュールとその動作
このプロジェクトでは、EM-18 RFIDモジュールを選択しました。これは、小型、低コスト、電力効率の高いモジュールです。EM-18 RFIDモジュールは、125 KHzRF周波数を使用してパッシブ125KHzRFIDタグを読み取ります。EM-18モジュールは、オシレータ、復調器、およびデータデコーダを使用して、パッシブカードからデータを読み取ります。
RFIDタグ
利用可能なRFIDタグには、パッシブ、アクティブ、またはバッテリーアシストパッシブの3種類があります。さまざまな種類の形状とサイズのさまざまな種類のRFIDタグが市場で入手可能です。それらのいくつかは、通信目的で異なる周波数を使用します。一意のIDデータを保持する125KhzパッシブRFIDカードを使用します。このプロジェクトで使用しているRFIDカードとタグは次のとおりです。
RFIDの働き
EM-18モジュールのデータシート(http://www.alselectro.com/files/rfid-ttl-em18.pdf)を見ると、モジュールの裏側とアプリケーション回路を見ることができます。
このモジュールは、9600ボーレートのUART通信プロトコルを使用します。有効な周波数タグがEM-18リーダーの磁場に入ると、BC557トランジスタがオンになり、ブザーが鳴り始め、LEDも点灯します。市場で簡単に入手でき、ブザー、LED、および追加のRS232ポートを備えた完全な回路を備えたモジュールを使用しています。
ここにあるRFID基板モジュール我々はピン名を使用しています。このモジュールには、追加の電源オプションもあります。
EM-18リーダーの出力は5Vロジックレベルを使用することに注意する必要があります。より低いロジックレベルを使用する別のマイクロコントローラを使用することもできますが、そのような場合は、追加のロジックレベルコンバータが必要です。まれに、3.3VマイクロコントローラのUARTピンが5Vトレラントであることがよくあります。
UART出力は12ビットASCIIデータを提供します。最初の10ビットはRFIDタグ番号であり、これは一意のIDであり、最後の2桁はエラーテストに使用されます。これらの最後の2桁は、タグ番号のXORです。EM-18モジュールは、125KHzのパッシブRFIDタグまたはカードからデータを読み取ります。
これらのタグまたはIDには、一意のID番号を格納する工場でプログラムされたメモリ配列があります。これらはパッシブであるため、カードやタグにバッテリーが存在しないため、RFトランシーバーモジュールの磁場によって通電されます。これらのRFIDタグは、磁場によってもクロックされるEM4102 CMOSICを使用して作成されています。
必要な材料
このプロジェクトを作成するには、次のアイテムが必要です-
- PIC16F877A
- 20Mhzクリスタル
- 2個の33pFセラミックディスクコンデンサ
- 16x2文字LCD
- ブレッドボード
- 10kプリセットポット
- 4.7k抵抗
- 接続する一本線
- 5Vアダプター
- RFモジュールEM-18
- 5Vブザー
- 100uF&.1uF12Vコンデンサ
- BC557トランジスタ
- 導いた
- 2.2kおよび470R抵抗。
ブザーとLEDが事前設定されたEM-18モジュールボードを使用しています。したがって、11から15までにリストされているコンポーネントは必要ありません。
回路図
回路図は単純です。LCDをポートRBに接続し、EM-18モジュールをUARTRxピンに接続しました。
回路図に従ってブレッドボードで接続しました。
コードの説明
いつものように、最初にPICマイクロコントローラーで構成ビットを設定し、ライブラリや水晶周波数を含むいくつかのマクロを定義する必要があります。 最後に示した完全なコードで、それらすべてのコードを確認できます 。
// PIC16F877A構成ビット設定 // 'C'ソースライン 構成ステートメント// CONFIG #pragma config FOSC = HS //オシレーター選択ビット(HSオシレーター) #pragma config WDTE = OFF //ウォッチドッグタイマー有効ビット(WDT無効) # pragma config PWRTE = OFF //パワーアップタイマーイネーブルビット(PWRT無効) #pragma config BOREN = ON //ブラウンアウトリセットイネーブルビット(BOR有効) #pragma config LVP = OFF //低電圧(単電源) )インサーキットシリアルプログラミングイネーブルビット(RB3 / PGMピンにはPGM機能があり、低電圧プログラミングが有効) #pragma config CPD = OFF //データEEPROMメモリコード保護ビット(データEEPROMコード保護オフ) #pragma config WRT = OFF //フラッシュプログラムメモリ書き込みイネーブルビット(書き込み保護オフ。すべてのプログラムメモリはEECON制御によって書き込むことができます) #pragma config CP = OFF //フラッシュプログラムメモリコード保護ビット(コード保護オフ) # include " supporing_cfile \ lcd.h" #include "supporing_cfile \ eusart1.h"
main 関数が表示されたら、システムを初期化する関数を呼び出しました。この関数でLCDとUARTを初期化します。
/ * この関数はシステムの初期化用です。 * / void system_init (void){ TRISB = 0x00; //ポートBを出力ピンとして設定lcd_init(); //これにより、lcdが初期化されます EUSART1_Initialize(); //これによりEusartが初期化されます }
さて、 主な 機能では、RFID番号である13ビット配列を使用しました。RFID番号の各ビットを受け取ります。 EUSART1_Read(); を使用する UARTライブラリ内で宣言されている関数。12ビットを受信した後、配列を文字列としてLCDに出力します。
void main(void){ unsigned char count; unsigned char RF_ID; system_init(); lcd_com(0x80); lcd_puts( "Circuit Digest"); while(1){ for(count = 0; count <12; count ++){ RF_ID = 0; RF_ID = EUSART1_Read(); } lcd_com(0xC0); // lcd_puts( "ID:");で 始まる2行目のカーソルを設定します lcd_puts(RF_ID); } }
デモンストレーションビデオを含む完全なコードを以下に示します。
また、RFIDと他のマイクロコントローラーとのインターフェースも確認してください。
MSP430ランチパッドとのRFIDインターフェース
8051マイクロコントローラーとのRFIDインターフェース
ArduinoとのRFIDインターフェース