兄: 美咲、ちょっといいか~?
妹: どうしたの、お兄ちゃん?
兄: ちょっと、このICカード、クラックしたいんだ。(ダメです)
(ここまで関係ない話、ここから本編)
はじめまして、Kanadeです。競技プログラミングや電子工作をメインに幅広く活動しています。今回はNFCカードリーダを使って遊んでいきます。
NFCはNear Field Communicationの略称で、近距離で行える無線通信の規格です。身近なところでは交通系ICカードやおサイフケータイ、IC機能搭載の学生証や社員証に用いられています。消費電力が少なく電磁誘導による誘導起電力のみで動作することができるため、カード本体に電力源がなくても動作する仕組みになっています。Felicaという言葉を聞いたことがあるかもしれませんが、FeliCaはType-FというNFCの規格の一つになっています(昔iPhone7でFeliCa対応になったと話題になりました)。
さて、NFCカードを読み込むのに必要なのがSonyが販売しているPaSoRi(RC-S380)です。一応ほかにもNFCカードリーダーは販売されていますが、入手性が低いのと対応する記事が少ないため素直にPaSoRiを使うことをお勧めします。
【nfcpyのインストール】
sudo pip3 install nfcpy
【Windows編】
Zadigとlibusbを使用します。
PaSoRiを接続した状態でZadigを起動し、Options>List All Devicesにチェックを入れます。一番上のリストボックスでRC-S380/Sを、DriverでWinUSBを選択しReplace Driverを実行することでドライバのインストールが完了します。
libusbのHPにあるDownloads>Latest Windows Binariesから7zipファイルをダウンロードし解凍した後、./VS2015-x64\dll\libusb-1.0.dllをC:\Windows\System32とC:\Windows\SysWOW64にコピーします。
【ラズパイ編】
sudo apt install libusb-dev python-usb
sudo権限を求められるのでnfcdev.rulesを書き換えてください。
SUBSYSTEM=="usb", ACTION=="add", ATTRS{idVendor}=="054c", ATTRS{idProduct}=="06c3", GROUP="plugdev"