RFIDセキュリティロック回路–完全なプログラムコードとテストの詳細

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





この記事では、ArduinoベースのRFIDリーダー回路を使用してリレーを制御する方法を説明します。リレーはセキュリティドアロックアプリケーションで使用できます。

概要概要

以前のRFIDの記事をまだチェックしていない場合は、チェックしてください。 RFID技術の基礎 。



UIDを使用して承認されたタグを識別します。簡単に言うと、UIDはタグの一意の識別番号であり、オフィスやその他の場所でカードをスキャンすると、カードからUIDが抽出されます。

カードのUIDはオフィスのデータベースに保存され、カード所有者を認識して出席を登録します。



タグはUIDを転送するだけでなく、タグに保存されているその他の情報も転送します。タグは通常1KBから4KBまで、場合によってはそれ以上保存できます。

タグに情報を保存する方法については説明しませんが、今後の記事で説明します。この投稿では、UID番号を利用して リレーのオン/オフ 。

このプロジェクトのモットーは、許可されたRFIDタグでスキャンするときに指定されたセットアップに接続されているデバイスのオン/オフを切り替えることです。

カードのUIDはプログラムで定義されており、許可されたカードが検出されると、最初のスキャンでリレーがオンになり、もう一度スキャンするとリレーが非アクティブになります。

許可されていないカードが検出されると、シリアルモニターにエラーメッセージが表示され、リレーは中断することなく現在のタスクを続行します。

ここで、承認されたカードがスキャンされると、リレーがアクティブ化/非アクティブ化されます。このメカニズムは、ドアを開くために承認されたカードをスキャンする必要があるドアロックシステムなど、どこでも使用できます。

使い方:

Arduinoを使用したRFIDセキュリティロック回路

RFID回路は、リレーのステータスを示すLEDで構成され、BC 548トランジスタがリレーを駆動し、1N4007ダイオードがリレーの両端に接続されて、スイッチングの瞬間に高電圧スパイクを阻止します。

より高い定格のリレー(9Vまたは12V)を接続する場合は、外部+ Ve電源をリレーに接続し、–Ve電源をarduinoのGNDピンのアースに接続できます。接続が正しくないとボードが損傷する可能性があるため、この手順を実行するときは細心の注意を払ってください。

ハードウェアのセットアップが完了した後の次のステップは、タグのUIDを見つけるためのコードをアップロードすることです。
次に、以下のプログラムをarduinoにアップロードし、シリアルモニターを開いて、タグをスキャンします。

UIDを見つけるプログラム:

#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 ()
}

シリアルモニターの出力(例):

カードのUIDは次のとおりです:AA:BB:CC:DD

シリアルモニターには、タグのUIDである16進コードが表示されます。タグを識別するために次のプログラムで使用されることを書き留めてください。
この手順が完了したら、同じセットアップで以下のコードをアップロードします。

カードを識別してリレーを制御するプログラム:

//---------------Program developed by R.Girish------------//
#include
#include
#define SS_PIN 10
#define RST_PIN 9
int flag=0
int op=8
char UID[] = 'XX:XX:XX:XX' //Place your UID of your tag here.
MFRC522 rfid(SS_PIN, RST_PIN)
MFRC522::MIFARE_Key key
void setup()
{
Serial.begin(9600)
SPI.begin()
rfid.PCD_Init()
pinMode(op,OUTPUT)
}
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 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()
if(StrID!=UID)
{
Serial.println('This is an invalid tag :(')
Serial.println('***************************************')
delay(2000)
}
if (StrID==UID && flag==0)
{
flag=1
digitalWrite(op,HIGH)
Serial.println('This is a vaild tag :)')
Serial.println('Status: ON')
Serial.println('***************************************')
delay(2000)
}
else if(StrID==UID && flag==1)
{
flag=0
digitalWrite(op,LOW)
Serial.println('This is a vaild tag :)')
Serial.println('Status: OFF')
Serial.println('***************************************')
delay(2000)
}
rfid.PICC_HaltA ()
rfid.PCD_StopCrypto1 ()
}
//---------------Program developed by R.Girish------------//

char UID [] = 'XX:XX:XX:XX' //タグのUIDをここに配置します。
XX:XX:XX:XXをUIDに置き換えます。

ドアや金庫の絶対確実なRFIDセキュリティロックとして効果的に使用できる著者のプロトタイプ:

承認されたカードがスキャンされたとき:

許可されていないタグがスキャンされた場合:

このArduinoRFIDセキュリティロック回路について質問がある場合は、コメントセクションでお気軽にお問い合わせください。




前:PWM時間比例を使用したトライアック位相制御 次へ:照らされた横断歩道の安全ライト回路