Help us understand the problem. What is going on with this article?

Raspberry PiでFelicaのIDmを表示する

概要

簡単な入室管理のために、まずはRaspberry PiとPaSoRiでカードのIDmを取得する.

動作環境

  • Mac OSX(EI Capitan)
  • Raspberry Pi2 Model B
  • PaSoRi RC-S380P

Raspberry Piセットアップ

OSダウンロード

日本のミラーサイトからダウンロード
https://www.raspbian.org/RaspbianMirrors

イメージのインストール

https://www.raspberrypi.org/documentation/installation/installing-images/mac.md

SD cardの刺さっている場所を調べる

$ diskutil list
/dev/disk0 (internal, physical):
   #:                       TYPE NAME                    SIZE       IDENTIFIER
   0:      GUID_partition_scheme                        *500.1 GB   disk0
   1:                        EFI EFI                     209.7 MB   disk0s1
   2:                  Apple_HFS Macintosh HD            499.2 GB   disk0s2
   3:                 Apple_Boot Recovery HD             650.0 MB   disk0s3
/dev/disk1 (internal, physical):
   #:                       TYPE NAME                    SIZE       IDENTIFIER
   0:     FDisk_partition_scheme                        *32.2 GB    disk1
   1:             Windows_FAT_32 NO NAME                 32.2 GB    disk1s1

今回はdisk1。
違う人は、これ以降のdisk1を自分の相応しい値に変更。

アンマウントしておく

$ diskutil unmountDisk /dev/disk1

SD cardにデータをコピー

$ sudo dd bs=1m if=2015-11-21-raspbian-jessie.img of=/dev/rdisk1

Ctrl+Tを押すと途中経過が見える

動作確認

Micro SDカードを基盤に刺して、優先LANを接続し、USBから給電

ip 確認し、ssh接続

$ arp -a
$ ssh pi@[ipアドレス]  #パスワードはraspberry

初期設定

$ sudo raspi-config

Expand Filesystem

3.5GBしか認識してないので、必要なら拡張を行う

Change User Password

piのパスワード変更(多分passwdでも大丈夫)

Internationalisation Options

Timezoneを変更 Asia/Tokyoへ

リポジトリサーバーの変更

/etc/apt/sources.list を編集
ミラーリストをコメントアウトし、日本のリポジトリサーバーを追加

deb http://ftp.jaist.ac.jp/raspbian jessie main contrib non-free rpi
$ sudo apt-get update
$ sudo apt-get upgrade

MicroSDカードの寿命を延ばす

以下を参考にさせてもらった

http://denshikousaku.net/extend-life-expectancy-of-raspberry-pi-sd-card

スワップをゼロにしておく

In Raspberry PI

pi@raspberrypi:~ $ free
             total       used       free     shared    buffers     cached
Mem:        948108     158008     790100      12796      13480      84156
-/+ buffers/cache:      60372     887736
Swap:       102396          0     102396
pi@raspberrypi:~ $ sudo swapoff --all
pi@raspberrypi:~ $ free
             total       used       free     shared    buffers     cached
Mem:        948108     158604     789504      12796      13500      84648
-/+ buffers/cache:      60456     887652
Swap:            0          0          0

再起動後もスワップを設定しないようにする

$ sudo apt-get remove dphys-swapfile

電源をぶっこぬいてチェック

pi@raspberrypi:~ $ free
             total       used       free     shared    buffers     cached
Mem:        948108     157400     790708      12748      13448      83668
-/+ buffers/cache:      60284     887824
Swap:            0          0          0

PaSoRi

以下の記事を参考にさせてもらいました

http://blog.shibayan.jp/entry/20150427/1430067533

PaSoRiを接続

pi@raspberrypi:~ $ lsusb 
Bus 001 Device 004: ID 054c:06c3 Sony Corp. 
Bus 001 Device 003: ID 0424:ec00 Standard Microsystems Corp. SMSC9512/9514 Fast Ethernet Adapter
Bus 001 Device 002: ID 0424:9514 Standard Microsystems Corp. 
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

Sonyデバイスを発見

nfcpyをインストール

http://nfcpy.readthedocs.org/en/latest/topics/get-started.html

$ sudo apt-get install python-pip
$ sudo pip2 install --upgrade pip
$ sudo pip2 install nfcpy
$ pip show nfcpy
Name: nfcpy
Version: 0.11.1
Summary: Python module for Near Field Communication
Home-page: https://launchpad.net/nfcpy
Author: Stephen Tiedemann
Author-email: stephen.tiedemann@gmail.com
License: EUPL
Location: /usr/local/lib/python2.7/dist-packages
Requires: pyserial, libusb1

pipを更新してインストール

IDmの取得(サンプルを実行してみる)

$ git clone https://github.com/nfcpy/nfcpy.git
$ cd nfcpy
$ git checkout stable/0.11
$ sudo python examples/tagtool.py show
[nfc.clf] searching for reader on path usb
[nfc.clf] using SONY RC-S380/P NFC Port-100 v1.11 at usb:001:005
** waiting for a tag **

試しにSuica をタッチすると、IDmとかが表示される

sudoを使わずに実行できるようにする

lsusb で確認したReaderのIDをつかって実行すると、打つべきコマンドが表示される(nfcpy 0.10以降)

$ python examples/tagtool.py --device usb:054c:06c3
[nfc.clf] searching for reader on path usb:054c:06c3
[main] access denied for device with path usb:054c:06c3
[main] first match for path usb:054c:06c3 is usb:001:005
[main] usb:001:005 is owned by root but you are pi
[main] members of the root group may use usb:001:005
[main] you may want to add a udev rule to access this device
[main] sudo sh -c 'echo SUBSYSTEM==\"usb\", ACTION==\"add\", ATTRS{idVendor}==\"054c\", ATTRS{idProduct}==\"06c3\", GROUP=\"plugdev\" >> /etc/udev/rules.d/nfcdev.rules'
[main] no contactless reader available

指定されたコマンドを実行した後、ReaderのUSBを抜き差しをするとsudo をつけなくても実行できるようになります。

example以外で実行

simple sample

IDmだけとれればいいので、exampleを参考にIDmだけとるスクリプトを作成.
止めるためには、別ターミナルからプロセスをkillする必要あり
とりあえず、SuicaのIDmはとれました

import binascii
import nfc


class MyCardReader(object):

    def on_connect(self, tag):
        print "touched"
        self.idm = binascii.hexlify(tag.idm)
        return True

    def read_id(self):
        clf = nfc.ContactlessFrontend('usb')
        try:
            clf.connect(rdwr={'on-connect': self.on_connect})
        finally:
            clf.close()

if __name__ == '__main__':
    cr = MyCardReader()
    while True:
        print "touch card:"
        cr.read_id()
        print "released"
        print cr.idm
ihgs
掲載内容は私個人の見解であり、所属する組織の公式見解ではありません。
fujitsu
富士通グループのソフトウェア技術者有志により運営しているコミュニティです。
http://www.fujitsu.com/jp
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした