RaspberryPiで!SONYのPaSoRi(RC-S380)で(NFC)Felica情報を読み取る!

はてなブックマーク - RaspberryPiで!SONYのPaSoRi(RC-S380)で(NFC)Felica情報を読み取る!
LINEで送る
Pocket

これずっとやりたかったです!

目次

RaspberryPiで!SONYのPaSoRi(RC-S380)で(NFC)Felica情報を読み取る!

今回使うライブラリーは

nfcpyのpython2のライブラリーですので、Python3では未検証です。興味のある方はpython3も検証してみてください。

nfcpyのgithubはこちらです。

https://github.com/nfcpy/nfcpy

ハードウェア

Raspberry Pi 3B

今回はRaspberryPi 3Bを使います。もちろん、PCの環境(python2が入っていれば)も実行可能です。

Raspberry Pi Zeroももちろん動くはずです。

SONY PaSoRi

あとはSONY PaSoRiのカードリーダー/ライターCR-S380ももちろん今回の主役ですので、買っといてください!笑

賢 川島さん(@kawashimaken)がシェアした投稿

カード

実験用のsuicaカード、パスモカード、あるいは、無地のICカード

白無地ですから

本当に白いです。笑。自分で使うときは区別するために、ラベリングが必須ですね。

環境の用意

pythonのインストール

まずは、pythonを用意してください。

python2が入っていない場合はpython2をいれてください。

(pythonがデフォルトに入っています。)

gitは入っていない場合は、gitもいれておいてください。

sudo apt-get install git

あとでgitを使って、nfcpyのgitをcloneして、サンプルを実行する時に使います。

pipのインストール

次は、

curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py

次は

sudo python get-pip.py

sudoを忘れずに

次は

プログラムの準備

sudo pip install nfcpy

次は次のプログラムを用意してください。

サンプルコードの実行

nfcpyのソースコードをRaspberryPi 3Bにcloneします!

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

それから、examplesフォルダに行きます。

そこで

sudo python tagtool.py

を実行してください。

Suica等のNFCタグをタッチすると、正確にICカードの情報を取り出せます。

Suicaに限らずPasmoやNanacoやマイナンバーカード等、色んなNFCタグをタッチしてみるのが楽しいです。

大成功ですね!笑。

IDmを取り出す

次は、こちらの記事のプログラムを実行してみます!

@undo0530さんありがとうございます!

https://qiita.com/undo0530/items/89540a03252e2d8f291b

@undo0530さんのプログラムはこちらです。

suica.py

# -*- coding: utf-8 -*-
import binascii
import nfc
import time
from threading import Thread, Timer

# Suica待ち受けの1サイクル秒
TIME_cycle = 1.0
# Suica待ち受けの反応インターバル秒
TIME_interval = 0.2
# タッチされてから次の待ち受けを開始するまで無効化する秒
TIME_wait = 3

# NFC接続リクエストのための準備
# 212F(FeliCa)で設定
target_req_suica = nfc.clf.RemoteTarget("212F")
# 0003(Suica)
target_req_suica.sensf_req = bytearray.fromhex("0000030000")

print 'Suica waiting...'
while True:
    # USBに接続されたNFCリーダに接続してインスタンス化
    clf = nfc.ContactlessFrontend('usb')
    # Suica待ち受け開始
    # clf.sense( [リモートターゲット], [検索回数], [検索の間隔] )
    target_res = clf.sense(target_req_suica, iterations=int(TIME_cycle//TIME_interval)+1 , interval=TIME_interval)
    if target_res != None:

        #tag = nfc.tag.tt3.Type3Tag(clf, target_res)
        #なんか仕様変わったっぽい?↓なら動いた
        tag = nfc.tag.activate_tt3(clf, target_res)
        tag.sys = 3

        #IDmを取り出す
        idm = binascii.hexlify(tag.idm)
        print 'Suica detected. idm = ' + idm
        #---------------------------------------------------------------
        # このした一行だけ、@undo0530 さんのプログラム実行時エラーになったため、コメントアウトしました
        # print 'sleep ' + TIME_wait + ' seconds'
        #---------------------------------------------------------------
        time.sleep(TIME_wait)
    #end if
    clf.close()
#end while

実行

sudo python suica.py

idmを取れました!

2枚目も、三枚目も続けてタッチすることができます!

ぜひ試してみてください!

@undo0530さんありがとうございます!みなさん、ぜひ@undo0530さんのページをチェックしてみてください!

まとめ

ほぼ、nfcpyを入れれば、仕事が終わりのイメージでした!笑

とても簡単に試すことができました!

 

これで、入退室管理や、カードでのID確認、会員管理、カードキーの実装などなど色々できそうですね!

これから、カードをかざすことで、何か(サーボ)を動かす実験を作ってみたいですね!

はてなブックマーク - RaspberryPiで!SONYのPaSoRi(RC-S380)で(NFC)Felica情報を読み取る!
LINEで送る
Pocket

One Comment

Add a Comment

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

By continuing to use the site, you agree to the use of cookies. more information

The cookie settings on this website are set to "allow cookies" to give you the best browsing experience possible. If you continue to use this website without changing your cookie settings or you click "Accept" below then you are consenting to this.

Close