あなたのプロジェクトのためのRFIDカードをプログラムする方法
RFIDの札は名前、住所、製品情報、および多くのような少量のデータを貯えることがで 彼らはキーホルダーやカードの形を取ることができます、または彼らもペットや人々に移植することができます。 それらがいかに働くか学ぶか、またはあなた自身のプロジェクトに加えたいと思えばRFIDの読者および作家はあなたが使用できる安い部品である。 このガイドでは、独自のRFIDタグに書き込むために1つを使用する方法を紹介します。
RFIDライターの仕組み
RFIDリーダー/ライターセンサーは、短距離、低電力の電波を使用して、データが格納されているタグからセンサーが接続されている電子機器にデータを送信します。 この場合、RFIDセンサーを追加してArduinoをデバイスとして使用します。 具体的には、RFIDタグにいくつかの基本的な情報を書き込みます。
これを行うには、RFIDタグの読み取りと書き込みにこのライブラリを使用します。 RFIDタグを使用することは、LEDをオンまたはオフにするよりも少し複雑であるため、独自のプロジェクトに統合できる既存のスケッチに依存します。 これらのスケッチが提供する事前に書かれた機能は、あなたがより簡単にあなたの他のプロジェクトにそれらを統合できるようになります。
ライブラリを使用するには、まずダウンロードします。上記のGithubページのzipファイル。 次に、Arduino IDEを開き、Sketch>Include Library>Addに移動します。ZIPライブラリ…ダウンロードしたばかりのライブラリを選択します。 これにより、RFIDライブラリをスケッチに含めることが可能になるだけでなく、後で必要になるサンプルスケッチのコレクションも取得できます。
あなたが必要とするもの
このプロジェクトでは、RFIDタグに書き込むだけです。 ただし、他のプロジェクトを拡張するためにこれを使用する方法については、ガイドを参照してください。 たとえば、正しいデータを含むタグをリーダーに表示すると、ロックをトリガーしてロックを解除することができます。 この基本的なプロジェクトのために、しかし、ここにあなたが必要とするものがあります:
Arduino | |
RFIDセンサー(好ましくはMFRC-522) | |
RFIDタグ | |
ブレッドボード&配線 | |
Arduino IDE | |
USBケーブル |
RFIDの破片が非常に小さいので、あなたが使用する札はほとんどあらゆる形態入って来ことができます。 RFIDチップの最も一般的なタイプの2つ–多くの場合、キットまたはセンサーで来る–クレジットカードのサイズについての小さな丸いキーチェーンまたはフラットカードです。 そうは言っても、あなたが持っているタグが何であれ、動作するはずです。
コード
上記の指示に従ってライブラリをインストールした場合、次のスケッチは、ファイル>Examples>MFRC522>rfid_write_personal_dataの下にあるサンプルブックで利用できるはずです。 あなたの例の本でそれを選択するか、以下のコードをコピーしてください:
/*
* RFID-RC522リーダー
を使用してMIFARE RFIDカードの個人データを書き込む*COOQROBOTのSPI WおよびRタグ付きARDUINO RFIDモジュールキット13.56MHZを使用するためにMFRC522–Libraryを使用します。
* ——————————
* Mfrc522Arduino Arduino Arduino Arduino Arduino Arduino Arduino Arduino Arduino
*リーダー/PCD Uno/101Mega Nano v3Leonardo/Micro Pro Micro
*信号ピンピンピンピンピンピンピンピンピンピンピンピンピンピンピンピンピンピンピンピンピンピンピンピンピンピンピー
* ——————————
* RST/Reset RST9 5D9RESET/ICSP-5RST
•SPI SS SDA(SS)10 53D10 10 10
•SPI MOSI MOSI11/ICSP-4 51D11ICSP-4 16
•SPI MISO MISO12/ICSP-1 50D12ICSP-1 14
•SPI SCK SCK13/ICSP-3 52D13 14
•SPI SCK-3 52D13 14
•SPI SCK-3 52D13 14
•SPI SCK-3 52D13 14
•SPI SCK-3 52D13 14
•SPI SCK-3 52D13 14
•SPI SCK-3 52ICSP-3 15
*
* 必要なハードウェア:
•Arduino
•PCD(Proximity Coupling Device):NXP MFRC522非接触リーダIC
•PICC(Proximity Integrated Circuit Card):ISO14443aインタフェースを使用したカードまたはタグ、例:MifareまたはNTAG203。
*読者はおよそ5ドルのためのeBayで見つけることができる。 “Mf-rc522″を検索ebay.com.
*/
#include
#include
#define RST_PIN9//設定可能、上記の典型的なピンレイアウトを参照
#define SS_PIN10//設定可能、上記の典型的なピンレイアウトを参照
MFRC522mfrc522(SS_PIN,RST_PIN); //MFRC522インスタンス
void setup(){
シリアルを作成します。begin(9600);//PC
SPIとのシリアル通信を初期化します。//SPIバス
mfrc522を初期化します。Pcd_init();//MFRC522カード
シリアルを初期化します。println(F(“MIFARE PICCに個人データを書き込む”));
}
ボイドループ() {
// キーの準備-すべてのキーは工場からの破片配達でFFFFFFFFFFFFhに置かれます。
MFRC522::Mifare_Key key;
for(byte i=0;i<6;i++)キー。keyByte=0xff;
//センサー/リーダーに新しいカードがない場合は、ループをリセットします。 これにより、アイドル時のプロセス全体が保存されます。
もし(! mfrc522Picc_isnewcardpresent()){
return;
}
// カードのいずれかを選択します
if(! mfrc522Picc_readcardserial()){
戻り値;
}
連載。print(F(“Card UID:”));//Dump UID
for(byte i=0;i<mfrc522.uid。サイズ;i++){
シリアル。印刷(mfrc522.uid。uidByte<0x10? ” 0″ : ” “);
連載。印刷(mfrc522.uid。uidByte,HEX);
}
シリアル。print(F(“PICC type:”));//DUMP PICC type
MFRC522::Picc_Type piccType=mfrc522.Picc_gettype(mfrc522.uid。
println(mfrc522.Picc_gettypename(piccType));
バイトバッファ;
バイトブロック;
MFRC522::StatusCodeステータス;
バイトlen;
シリアル。setTimeout(20000L);//シリアル
からの入力を20秒待つ//個人データを尋ねる:家族名
シリアル。println(F(“タイプファミリー名、#で終わる”));
len=Serial.readBytesUntil(‘#’,(char*)buffer,30);//シリアル
からファミリー名を読み込むfor(byte i=len;i<30;i++)buffer=”;//スペースを含むパッド
block=1;
//シリアル。println(F(“キー Aを使用した認証…”));
status=mfrc522.PCD_Authenticate(MFRC522::PICC_CMD_MF_AUTH_KEY_A, block, &key, &(mfrc522.uid));
if (status != MFRC522::STATUS_OK) {
Serial.print(F(“PCD_Authenticate() failed: “));
Serial.println(mfrc522.GetStatusCodeName(status));
return;
}
else Serial.println(F(“PCD_Authenticate() success: “));
// Write block
status = mfrc522.MIFARE_Write(block, buffer, 16);
if (status != MFRC522::STATUS_OK) {
Serial.print(F(“MIFARE_Write() failed: “));
Serial.println(mfrc522.GetStatusCodeName(status));
return;
}
else Serial.println(F(“Mifare_Write()成功: “));
ブロック=2;
//シリアル。println(F(“キー Aを使用した認証…”));
status=mfrc522.Pcd_authenticate(MFRC522::PICC_CMD_MF_AUTH_KEY_A,block,&key,&(mfrc522.uid));
if(status!=MFRC522::STATUS_OK){
シリアル。print(F(“Pcd_Authenticate()failed:”));
シリアル。println(mfrc522.GetStatusCodeName(status));
return;
}
// 書き込みブロック
ステータス=mfrc522。Mifare_write(block,&buffer,16);
if(status!=MFRC522::STATUS_OK){
シリアル。print(F(“Mifare_Write()failed:”));
シリアル。println(mfrc522.GetStatusCodeName(status));
return;
}
elseシリアル。println(F(“Mifare_Write()成功: “));
// 名前
シリアル。println(F(“Type First name,ending with#”));
len=Serial.readBytesUntil(‘#’,(char*)buffer,20);//シリアル
からファーストネームを読み込むfor(byte i=len;i<20;i++)buffer=”;//スペースを含むパッド
block=4;
//シリアル。println(F(“キー Aを使用した認証…”));
status=mfrc522.Pcd_authenticate(MFRC522::PICC_CMD_MF_AUTH_KEY_A,block,&key,&(mfrc522.uid));
if(status!=MFRC522::STATUS_OK){
シリアル。print(F(“Pcd_Authenticate()failed:”));
シリアル。println(mfrc522.GetStatusCodeName(status));
return;
}
// 書き込みブロック
ステータス=mfrc522。Mifare_write(block,buffer,16);
if(status!=MFRC522::STATUS_OK){
シリアル。print(F(“Mifare_Write()failed:”));
シリアル。println(mfrc522.GetStatusCodeName(status));
return;
}
elseシリアル。println(F(“Mifare_Write()成功: “));
ブロック=5;
//シリアル。println(F(“キー Aを使用した認証…”));
status=mfrc522.Pcd_authenticate(MFRC522::PICC_CMD_MF_AUTH_KEY_A,block,&key,&(mfrc522.uid));
if(status!=MFRC522::STATUS_OK){
シリアル。print(F(“Pcd_Authenticate()failed:”));
シリアル。println(mfrc522.GetStatusCodeName(status));
return;
}
// 書き込みブロック
ステータス=mfrc522。Mifare_write(block,&buffer,16);
if(status!=MFRC522::STATUS_OK){
シリアル。print(F(“Mifare_Write()failed:”));
シリアル。println(mfrc522.GetStatusCodeName(status));
return;
}
elseシリアル。println(F(“Mifare_Write()成功: “));
連載。println(“”);
mfrc522.Picc_halta();//停止PICC
mfrc522.Pcd_stopcrypto1();//PCDの暗号化を停止します
}
このコードをアップロードすると、(以下に説明するようにプロジェクトを配線した後)すぐにRFIDタグにデータを書き込むことができます。
このようなライブラリを使用する利点の1つは、既に書かれているコードの一部を見つけることができるため、すべてのプロジェクトでホイールを再発明する必要がないことです。 今回は、コードを行ごとに説明しません。 代わりに、コードが何をするかについてもう少し話しましょう。
RFIDタグのデータは、セクターと呼ばれるセクションに格納され、さらにブロックに分割されます。 各ブロックには数バイトのデータを含めることができます。 量は特定のタグに依存しますが、一般的な1Kパッシブタグ(1キロバイトのデータを格納できるタグを意味する)は、たとえば、16セクタを持ち、各ブロック
このスケッチはあなたの姓と名を保存するだけなので、1つのセクターしか必要ありませんが、名前が1つのブロックに収まるよりも多くのデータを
スクリプトを実行すると、家族の名前を入力するように求められ、RFIDタグのブロックに書き込まれます。 次に、あなたは別のブロックに書き込まれますあなたの最初の名前を、書くためのプロンプトを取得します。 RFIDブロックの整理方法と対処方法の詳細については、このガイドを参照してください。
配線
あなたの特定のRFIDリーダーの配線は、多くの異なる反復が異なる順序でピンを持っているので、あなたが得るモデルによって異なります。 幸いなことに、私たちはあなたが使用しているボードに応じてどこに行くべきピンのリストの上に含まれている例のコード。 詳細については、そのガイドに従ってください。例として、Arduino UnoとMFRC-522センサーを使用している場合は、次のようにします:●RSTをピン9に接続
●SDA(またはSS)をピン10に接続
●MOSIをピン11に接続
●MISOをピン12に接続
●SCKをピン13に接続
●VCCを5Vに接続
●GNDをGNDに接続
あなたが正しく配線されていることを確認するために。 あなたのボードが接続されたら、それはあなたのコンピュータにUSB経由で接続されている間、あなたのArduinoの電源をオンにします。 次に、RFIDカードまたはキーチェーンをリーダーに押すことができます。 シリアルモニタを介してデータを入力しながら、そこに保持します。
MFRC522ライブラリには、RFIDデータを書き込んだ後に読み取るための組み込みスケッチも含まれています。 データの書き方がわかったので、そのスケッチをアップロードして、それを使って書いたタグを読んでみてください。