Arduinoを使用したRFIDリーダー回路

問題を排除するために楽器を試してください





この記事では、RFID回路技術のツアーに参加します。 RFIDタグとリーダーがどのように機能するか、RFIDモジュール(RC522)をArduinoとインターフェースする方法、RFIDタグからいくつかの有用な情報を抽出する方法を探求します。

RFIDタグの使用

皆さんは、RFIDを使用して、オフィス、学校、大学、図書館などで少なくとも1回はセキュリティアクセスを取得したことがあると思います。



あなたが持ち歩くタグ/カードには電子チップが埋め込まれており、チップはあなたの身元を電子的に保存します。カードがリーダーの視線である必要があるバーコードとは異なり、RFIDは情報を読み取るためにリーダーのすぐ近くに配置できます。

当社のスマートカードのほとんどはパッシブRFIDテクノロジーを使用しています。つまり、カードから情報を読み取るために電力は必要ありません。リーダーはRFIDチップに電力を供給し、同時に情報を抽出します。



これらの種類のタグは、タグとアプリケーションに応じて、ミリメートルから数フィートまでの情報を読み取ることができます。

アクティブなRFIDタグは外部から電力を供給され、これらの種類のタグは最大100フィートの情報を送信します。バッテリーの消費電力は、数年続くように最適化されています。

このプロジェクトでは、パッシブRFIDテクノロジーについて見ていきます。情報の抽出と表示には、arduinoと一緒にRC522リーダーモジュールを使用しています。 RC522モジュールは、eコマースWebサイトおよび地元の電子工作キットショップで一般的に入手できます。

RC522リーダー/ライターモジュールの図:

RC522リーダー/ライターモジュール

カードおよびキーチェーンタイプのタグ:

カードとキーホルダータイプのタグ

ご覧のとおり、PCBの一部は、リーダー上で正方形の導電パスに囲まれています。これにより、13.56MHzの周波数でタグの電磁界が生成されます。

生成されたEMFはタグによって選択され、タグが動作するのに十分な電圧に変換されます。タグは必要な情報をパルス形式でリーダーに送り返します。オンボードマイクロコントローラーが情報をデコードします。

使い方

Arduinoを使用したRFID回路

回路図は非常に簡単で自明であり、このプロジェクトを達成するにはジャンパー線がほとんどありません。コンピューターのUSBポートを介してarduinoとRFIDに電力を供給します。 RC522の動作電圧は3.3Vです。5V電源をモジュールに接続しないでください。オンボードコンポーネントが損傷します。

ArduinoRFID回路のプロトタイプ:

これですべてのハードウェア接続が完了しました。次に、コーディングに取り掛かりましょう。

プログラムをアップロードする前に、次のリンクからライブラリファイルをダウンロードし、arduinoIDEのライブラリフォルダに移動してください。

github.com/miguelbalboa/rfid.git

プログラムコード:

//-------------------------Program developed by R.Girish------------------//
#include
#include
#define SS_PIN 10
#define RST_PIN 9
MFRC522 rfid(SS_PIN, RST_PIN)
MFRC522::MIFARE_Key key
void setup()
{
Serial.begin(9600)
SPI.begin()
rfid.PCD_Init()
}
void loop() {
if ( ! rfid.PICC_IsNewCardPresent())
return
if ( ! rfid.PICC_ReadCardSerial())
return
MFRC522::PICC_Type piccType = rfid.PICC_GetType(rfid.uid.sak)
if(piccType != MFRC522::PICC_TYPE_MIFARE_MINI &&
piccType != MFRC522::PICC_TYPE_MIFARE_1K &&
piccType != MFRC522::PICC_TYPE_MIFARE_4K)
{
Serial.println(F('Your tag is not of type MIFARE Classic, your card/tag can't be read :('))
return
}
String StrID = ''
for (byte i = 0 i <4 i ++)
{
StrID +=
(rfid.uid.uidByte[i]<0x10? '0' : '')+
String(rfid.uid.uidByte[i],HEX)+
(i!=3?':' : '' )
}
StrID.toUpperCase()
Serial.print('Your card's UID:')
Serial.println(StrID)
rfid.PICC_HaltA ()
rfid.PCD_StopCrypto1 ()
}
//-------------------------Program developed by R.Girish------------------//

OK!上記のプログラムは機能するように設計されていますか?

上記のプログラムは、リーダーでスキャンすると、IDEのシリアルモニターにタグのUIDを表示します。 UIDはタグの一意の識別番号であり、変更することはできず、メーカーによって設定されます。

出力:

カードのUID:FA:4E:B2 //これは例です。

注1:各2つの値はコロンで区切られます。これは、プログラムによって実行されます。実際の値はコロンではなく、スペースで区切ることができます。

注2:提案されたセットアップでは、NXPで製造されたRFIDタグのみが読み取り/書き込み可能であり、これらは一般的かつ商業的に使用されています。

UIDは、キットに付属のタグが最大1KBの情報を格納できるタグを認識するために使用されます。最大4KB以上の情報を保存できるカードは他にもあります。

タグから情報を保存および抽出するプロセスは、別の記事の主題です。
このプロジェクトに関して質問がある場合は、コメントセクションでお気軽に質問してください。




前:気圧センサー回路–動作とインターフェースの詳細 次へ:PWM時間比例を使用したトライアック位相制御