Shoeisha Technology Media

CodeZine(コードジン)

特集ページ一覧

Elixir+PhoenixとSpread.Viewsでリアルタイムな出勤管理アプリを作ろう

IoT時代の救世主! SpreadJSで作るデータ可視化アプリ 第2回

  • LINEで送る
  • このエントリーをはてなブックマークに追加

目次

Raspberry PiでのICカード読み取り処理

 ここまでで、Webの管理画面のサーバーサイドと表側のUIを作りました。ここからRaspberry Piでカード読み取りをします。

 PaSoRiはいくつか型番がありますが、今回はRC-S380を利用します。別の型番だとエラーが出る場合があるので気をつけましょう。

 PaSoRiは公式にはRaspberry Piに対応していませんが、nfcpyなどサードパーティ製のライブラリが存在します。今回はnfcpyをラップしたnode-nfcpy-idを利用します。

 事前に、Raspberry Pi上でNode.jsが動作するようにセットアップしておきましょう。筆者の環境は以下の通りです。

  • Raspberry Pi 3
  • Raspbian GNU/Linux 8(jessie)
  • Node.js 9.2.0

PaSoRiを使う準備

$ sudo apt-get install python-usb python-pip -y
$ sudo pip install -U nfcpy-id-reader
$ cat << EOF | sudo tee /etc/udev/rules.d/nfcdev.rules
SUBSYSTEM=="usb", ACTION=="add", ATTRS{idVendor}=="054c", ATTRS{idProduct}=="06c3", GROUP="plugdev"
EOF
再起動
$ sudo reboot
Raspberry Pi上にプロジェクト作成
$ mkdir shifttable-client
$ cd shifttable-client
$ npm init -y
モジュールのインストール
$ npm i --save node-nfcpy-id

 app.jsを作成し、サンプルプログラムを記述します。

app.js
const NfcpyId = require('node-nfcpy-id').default;
const nfc = new NfcpyId().start();

nfc.on('touchstart', (card) => {
  console.log('Card ID: ' + card.id);

  // card.type is the same value as that of nfcpy.
  // 2: Mifare
  // 3: FeliCa
  // 4: Mifare (DESFire)
  console.log('Card Type: ' + card.type);
});

// If the `mode` is `loop` or `non-loop`, event will occur when the card is removed
nfc.on('touchend', () => {
  console.log('Card was away.');
});

nfc.on('error', (err) => {
  // standard error output (color is red)
  console.error('\u001b[31m', err, '\u001b[0m');
});

 サンプルを動かしてみます。

$ node app.js

 これでICカードの情報を読み取ることができました。セットアップでつまずかなければすんなりいけると思います。

 筆者の場合はライブラリが対応していないPaSoRiの型番を利用していてエラーに悩まされました。利用する場合は型番に気をつけましょう。今回はRC-S380を利用しています。章の冒頭にも書いてますが大事なことなので二回言いました。


  • LINEで送る
  • このエントリーをはてなブックマークに追加

著者プロフィール

  • 菅原のびすけ(dotstudio株式会社)(スガワラ ノビスケ)

     日本最大規模のIoTコミュニティ「IoTLT」主催。岩手県立大学大学院ソフトウェア情報学研究科を卒業後、株式会社LIGでWebエンジニアとして入社し、Web開発に携わる。2016年にdotstudio株式会社を立ち上げ、今はIoT領域を中心に活動している。JavaScript Roboticsコミ...

バックナンバー

連載:IoT時代の救世主! SpreadJSで作るデータ可視化アプリ
All contents copyright © 2005-2018 Shoeisha Co., Ltd. All rights reserved. ver.1.5