MIFAREタグ・リーダーライターであるRFIDモジュール(RC522)(aitendo)をPICで制御しました。作成したPIC用のファームウェアは、aitendoが配布しているものに、ほんの少し手を加えたものです。このRFIDモジュールについては、ボクにもわかる地上デジタルのウェブサイトが参考になります。また、RFIDタグ(RFIDキーホルダやRFIDカード)については、MIFARE Classic (1kB)カードの例が参考になります。ところで、RFIDタグの中には不良品があるので(読み出したデータに再現性がないなどの不良) 、複数枚(個)用意しておくと良いと思います。
回路図と実際のPIC回路を以下に示します。RFIDモジュールとPICの間はSPIでインターフェースしています。また、PIC回路はパーソナル・コンピュータとUSBーHID接続します。
なお、上の回路では、PICとRFIDモジュールをコンパクトにまとめていますが、RFIDタグをかざすには場所的に狭くて不便です。両者(PICとRFIDモジュール)を離すと使い易くなります。また、上の回路では、PIC基板の電源をUSBケーブル経由でPCから供給していますが、電流がほぼ100mAとなります。そのため、別電源を用意することも考んがえておいたほうが良いでしょう。
1.PIC32MX270F256B-50I/SP (HARMONY)の章の項目「MHC環境」に書かれているようにMHC環境を整えます。
2.PICに書き込むファームウェアはMX270_rc552_HID.zipです。MX270_rc552_HID.zipを解凍して出てくるMX270_rc552_HIDフォルダーをHarmonyProjectsフォルダーの中に入れます。
3.PIC基板とPCをUSBケーブルで接続して、ファームウェアをPICに書き込みます。
4.PIC基板がUSB-HID機器になります。
5.PC用のアプリケーション・ソフトウェアはRC5222.zipです。これを解凍すると出てくるRC522.exeをPC上で実行します。 すると、下図のようなウィンドウが現れます。READボタンがありますが、これを押下してRFIDタグをRFIDモジュールに近づけます。すると、下図のように、RFIDタグの中に書かれているデータが表示されています。IDやAccessBitsなどのデータ構造については、MIFARE Classic (1kB)カードの例に書かれています。
補足1:RFIDモジュールを初期化するとき、100%振幅変調(100%ASK [Amplitude Shift Keying])となるよう設定しています(RS522.cの397行目:WriteRawRC(TxAutoReg, 0x40);)。aitendoが配布しているファームウェアでは、この設定がないのでRFIDタグ情報を読み取れませんでした。
補足2:MX270_rc552_HID.zipは、RFIDタグに書かれているデータを読み取るだけのファームウェアです(読み取ったデータを保存しておくと、間違ったデータを書き込んだ際、データを元に戻せます)。RFIDタグにデータを書く場合には、RS522.cの中にある関数PcdWriteを使います。