ラズパイのフォーラムはじめました

SONY非接触型カードリーダーRC-S380とraspberry pi(読み取り編)

非接触型のカードリーダー 作ってみた!
この記事は約8分で読めます。

Raspberry Pi にRaspbianを入れて、SONY非接触型カードリーダーRC-S380を使えるところまでご紹介します。

次にDisplay-O-Tron HATを繋いで結果を表示させるようにします。何に使うのかはまだ思案中・・・。

スポンサーリンク

今回の環境

用意した物は以下です。

  今回利用したパーツ一覧
Raspberry Pi Zero WH Raspberry Pi Zero WH
SONY 非接触ICカードリーダー/ライター PaSoRi RC-S380
電子キット OSOYOO 初心者スターター電子キット
サンワサプライNFCタグ サンワサプライ NFCタグ(10枚入り) 白
  • Display-O-Tron HAT → 壊れた?ためLCDへ変更
  • USB電源アダプター
  • USB変換ケーブル(100円ショップ)

3B+などが余っていなかったので、余っていたZeroWにしました。また、これまた利用していなかったDisplay-O-Tron HATのLCDディスプレイを結果表示などに利用します。

非接触型のカードリーダーはRaspbianでの利用実績からSONY RC-S380にしました。約2,500円前後で購入可能です。

Display-O-Tron HATはPimoroniで購入可能です。

Display-O-Tron HAT

追記 実はZero系で認識しなくなったか、故障したのかHAT自体が認識しませんでした。

そのためLCDキャラクタディスプレイに変更することにしました。pHATで表示は行いません。

qapass1602

LCDはこちらのセット物を利用しました。

単体では【ノーブランド 品】 LCD 602 IICのi2c TWI a 1602 シリアル LCD ディスプレイ モジュールだと思います。

nfcpyのインストール

NFCを読み書きできるアプリケーションとして、nfcpyがあります。先ずはこれのインストールから始めます。

インストール方法は2通りあります。

  1. pipコマンドでのインストール
  2. gitHubからダウンロードしてインストール

真っ新な状態で行うため、pip環境もなく、gitコマンドも使えないため、どちらにしてもpipかgitのインストールから始めないとなりません。

結果的にgitHubにあるサンプルファイルを使いたいので、今回はgitHubから導入します。

nfcpy/nfcpy
A Python module to read/write NFC tags or communicate with another NFC device. - nfcpy/nfcpy

・使いたいサンプルファイル

gitのインストール

git cloneするために先ずはgitをインストールします。

sudo apt-get install git

これでgitコマンドが使えます。続けてgitからファイルを持ってきます。

git clone

git clone git://github.com/nfcpy/nfcpy

管理者権限は(sudo)は要りません。必要なファイルがコピーされます。

インストール

ダウンロードできたnfcpyディレクトリにセットアップファイルがあります。

sudo python ~/nfcpy/setup.py install

——もしくは、ホームから移動して実行

cd nfcpy
sudo python setup.py install

インストール完了

これで完了です。

カードリーダーの認識

USBにカードリーダーのS380を接続します。

次のコマンドで認識されているのか確認します。

python -m nfc

エラーが出ると思います。

エラー

python -m nfc
No handlers could be found for logger "nfc.llcp.sec"
This is the 0.13.5 version of nfcpy run in Python 2.7.13
on Linux-4.14.79+-armv6l-with-debian-9.4
I'm now searching your system for contactless devices
** found usb:054c:06c3 at usb:001:002 but access is denied
-- the device is owned by 'root' but you are 'pi'
-- also members of the 'root' group would be permitted
-- you could use 'sudo' but this is not recommended
-- better assign the device to the 'plugdev' group
sudo sh -c 'echo SUBSYSTEM==\"usb\", ACTION==\"add\", ATTRS{idVendor}==\"054c\", ATTRS{idProduct}==\"06c3\", GROUP=\"plugdev\" >> /etc/udev/rules.d/nfcdev.rules'
sudo udevadm control -R # then re-attach device
I'm not trying serial devices because you haven't told me
-- add the option '--search-tty' to have me looking
-- but beware that this may break other serial devs
Sorry, but I couldn't find any contactless device

カードリーダーは見つかるもののアクセル権限がrootだからpiではアクセスできませんと表示されました。以下のコマンドで’plugdev’のグループに所属させるように促されます。

とても親切ですね!

sudo sh -c 'echo SUBSYSTEM==\"usb\", ACTION==\"add\", ATTRS{idVendor}==\"0000\", ATTRS{idProduct}==\"0000\", GROUP=\"plugdev\" >> /etc/udev/rules.d/nfcdev.rules'(IDなどは個別に違いますので、0000にしてあります。実行したターミナルから全部をコピーしてください)
sudo udevadm control -R # then re-attach device

言われた通りに2行をコピペして実行してください。自分のターミナルからコピーしてくださいね。

一旦再起動してその後に実行すると以下のような実行結果になっていると思います。

成功した結果

今度はSONY RC-S380/Pと出ています。また、エラーもありません。

これで認識もOKです。

読み取りテスト

ここまでで読み取るアプリケーションのnfcpyの準備ができ、カードリーダーS380も認識されました。実際に読み取りテストをします。

サンプルファイルにあるpython tagtool.pyを実行してみます。

場所はこちら。

cd ~/nfcpy/examples/

実行すると ** waiting for a tag ** と出て止まりますので、その後にNFCタグをかざしてください。

python tagtool.py

読み取り成功

Type2Tagで、IDも表示されました。

これで成功です。

waonも試してみました。

waon

さいごに

他のサイトでも非接触型カードリーダーを色々な使い方がされています。

ここでは準備としてインストールとテスト読み込みまでご紹介しました。この後、LCDディスプレイを手軽に利用したいと思ったDisplay-O-Tron HATに文字や色で出力させ、システムのスイッチャーとして使ってみたいと思います。

NFCタグに振られているIDによって条件を変えるプログラムだけで可能です。

Pythonで読み取られたIDによってSHELLコマンドを実行するだけでもOKです。

 

次はDisplay-O-Tron HATに表示する部分だけご紹介したいと思います。

LCDキャラクタディスプレイに変更しました。

SONY非接触型カードリーダーRC-S380とraspberry pi(LCD表示編)
前回のSONY非接触型カードリーダーRC-S380とraspberry pi(読み取り編)で最低限のセットアップをしました。カードリーダーと連携させるつもりでDisplay-O-Tron HATを...

NFCとLCDを連携できました。

SONY非接触型カードリーダーRC-S380とraspberry pi(実装編)NFCを読み込んでLCDにID表示まで
SONY非接触型カードリーダーRC-S380とraspberry piの連携記事も3回目です。集めたコードを利用してNFCタグを読み込んで、そのIDをLCDに表示させます。前回までの記...

コメント