Arduino+RC-S620/SでFeliCa Push

2012-04-25   treby   IDm Snatcher  , , , このエントリーをはてなブックマークに追加

Arduino用のRC-S620/Sライブラリに含まれるサンプルプログラムの実行。シリアル通信はハードウェアのものを使用(デフォルト)

外観写真

なかなかどうして時間がかかった。結局、配線ミスが原因だったけれども。

配布されているライブラリの修正

紹介記事を読む限り、ライブラリには特に何も手を加えずとも実行できるとあるが、この記事が書かれたのは1年半前の話。2012年4月現在、Arduino IDEのバージョンが上がった影響で、少々の変更をしなければサンプルプログラムを動かすことができない。

具体的には、上のサイトで配布されているファイルの中の一つ、RCS620S.cppの一部を次のように変更すればよい。

#include "Arduino.h"    // NG : #include "WProgram.h"

というのも、もともとインクルードされていたWProgram.hは、2011年11月30日にリリースされたArduino 1.0からArduino.hという名前に変わったらしいのだ。なんという孔明。

PDE(Processing Development Environment)からとられたらしいスケッチの拡張子(.pde)が.ino(Arduinoのことらしい)に変わったことといい、この名称の変化はProcessingの色濃かったArduino IDEが、Arduinoの色を出す一環といったところだろうか。なお、Arduino 1.0からの変更点については、こちらのブログ記事がわかりやすかった。

配線

結論からいうとジャンパ線4本で実現できた。

図にあらためた接続図はおそらく後日詳細に書く機会があるだろうから、ここでは簡単に記すに留める。注意点としてはRC-S620/SのRXD端子はArduinoのTXポート(1ピン)に、TXD端子はRXポート(0ピン)に接続しなければならない。この点を私はしばらく勘違いしており、RXD端子にRXを、TXD端子にTXを接続していた。もちろん全然動かなかった。

あまりに動いてくれないものだから、てっきり接続を間違えてRC-S620/Sを壊してしまったのかと思った。しかも、その勘違いのまま新しいRC-S620/Sを注文してしまった。どうしよう。

実行

サンプルのスケッチ(FeliCaPush)を読むとsetup関数でRC-S620/Sを初期化するような記述がある。さらに次の行を読むと、初期化に失敗するとスケッチの実行をブロックするようになっているのが分かる。

  ret = rcs620s.initDevice();
  while (!ret) {}

これが意味するところは何か。それはスケッチを転送して1回目の実行は(RX,TXを開放しているだろうから)あきらめろということである。じゃあどうするのか。Arduino上のリセットボタンを押してやればよい。

するとLとラベリングされたLEDが点滅するのが分かるだろう。この状態でおサイフケータイをかざしてみると、次のようにFeliCaデータを受信できる。

Push通知を受け取った様子

なお、サンプルプログラムでは、http://twitter.com/SDK4FeliCaに転送されるようになっている。