仮想的な NFC-F/Type 3カードとし、
NFC対応のAndroid端末(GALAXY NEXUS)から読み書きしてみました。
今回用いたモノ:
- "Arduino Pro Mini 328 8Mhz 3.3V"
Felica Plugは1.8~3.7V動作の為、5VのArduinoボードだとレベル変換が必要となります。その点、このボードは3.3V動作なのでそのまま使えます。クロックも8Mhzで省電力です。 - "Felica Plug RC-S802"
マイコンと接続して、Felicaカードとして振る舞えるモジュール。 - "FeliCa Plug ピッチ変換基板 (フラットケーブル付)"
便利なピッチ変換基板があるので使うことにしました。FFC付きです。 - ジャンパワイヤ、ピンソケット 等々...
尚、Arduino Pro MiniにはUSB端子がないので、アダプタとして
今回はスイッチサイエンスのFTDI USBシリアル変換アダプターを使いました。
まずは、Felica PlugのArduino向けライブラリをダウンロード。
ありがたく使わせていただきましょう。
これをダウンロードしてアーカイブを展開します。
(ライブラリの使い方は、同梱のFeliCaPlug-sjis.txtに記載されています。)
さらに、それをArduinoのライブラリディレクトリに追加するのですが
その内の"FeliCaPlug.h"が最新のArduino環境ではコンパイルできない為、要変更です。具体的には "WProgram.h" を Arduino.h に変更するだけです。
(ライブラリの使い方は、同梱のFeliCaPlug-sjis.txtに記載されています。)
さらに、それをArduinoのライブラリディレクトリに追加するのですが
その内の"FeliCaPlug.h"が最新のArduino環境ではコンパイルできない為、要変更です。具体的には "WProgram.h" を Arduino.h に変更するだけです。
--- FeliCaPlug.cpp +++ FeliCaPlug.cpp @@ -7,7 +7,7 @@ #include stdio.h #include string.h #include inttypes.h -#include "WProgram.h" +#include "Arduino.h" #include "Print.h" #ifdef CONFIG_FELICA_PLUG_EEPROM #include "EEPROM.h"
次に、Arduino Pro Miniに ピンソケットをハンダ付けします。
私は適当に必要な分だけ付けておきました。
次に、Felica Plugとピッチ変換基板を接続します。
Felica Plugにフラットケーブル(ピッチ変換基板付属品)を差し込み、
そのまま反対側にピッチ変換基板を接続するだけです。
フラットケーブルは青いカバーがある面を上にしておき、
Felica Plugのチップがある面、ピッチ変換基板のロゴがある面を上にして各々を差し込みます。
私は適当に必要な分だけ付けておきました。
次に、Felica Plugとピッチ変換基板を接続します。
Felica Plugにフラットケーブル(ピッチ変換基板付属品)を差し込み、
そのまま反対側にピッチ変換基板を接続するだけです。
Felica Plugとピッチ変換基板を FFC(フラットケーブル)で接続したところ。
ピッチ変換基板からはさらにジャンパワイヤなどで配線します
フラットケーブルは青いカバーがある面を上にしておき、
Felica Plugのチップがある面、ピッチ変換基板のロゴがある面を上にして各々を差し込みます。
さらに、ピッチ変換基板とArduino Pro Miniを接続します。
Felica Plugおよびピッチ変換基板側のピン配置については
Felica Developers' Blog の記事を参照してください:
http://blog.felicalauncher.com/sdk_for_air/?p=2463
ピッチ変換基板の"FFC-B"という表記がある側から順に、GND、RFDet、SW、IRQ、SEL、DATA、SPICLK、VDD となります。
さて、Felica PlugのプロトコルはSPIをベースにしたものですが、先述のライブラリではArduinoのSPI機能を使うのではなく、ソフトウェア的に通信を行っています。
従って、各ピンはライブラリの初期設定から任意に変更しても構いません (たぶん)。
今回は、Arduino Pro Miniにピンソケットをハンダ付けする都合により、
ピンをある程度まとめた配置にしてみました。(めんどくさかったからです!(笑))
※ もちろん、ソースコード上でピン配置を定義する必要があります。
- RFDet 3
- SW 9
- IRQ 2
- SEL
10→ 4 - DATA
11→ 5 - SPICLK
12→ 6
Felica Plugと配線したArduino Pro Miniに、USBシリアル変換アダプタ(写真奥側)を接続したもの。 ピン配置はライブラリの初期設定から少し変更しています。 |
ソースコードは、ライブラリに付属しているサンプル "FelicaPlugType3" を改変したものです。
setParamでモードを"FELICA_PLUG_MODE_TYPE3"(12FC)とすることで、Type3のFTモードとなります。
以上で準備完了です。
setParamでモードを"FELICA_PLUG_MODE_TYPE3"(12FC)とすることで、Type3のFTモードとなります。
注意すべきは、データフォーマットコードです。
今回使用したFelica Plugはスイッチサイエンスが個人向けに販売している物の為、
データフォーマットコードとして0x00, 0x1c を設定しなければなりません。
(参照: SWITCH SCIENCE - FelicaPlugの使い方)
また、先ほどのピン配置をソースコード上で定義することを忘れないようにしましょう。
(参照: SWITCH SCIENCE - FelicaPlugの使い方)
また、先ほどのピン配置をソースコード上で定義することを忘れないようにしましょう。
以上で準備完了です。
では、Android端末から読み書きを行ってみます。
先述のとおり、使用した端末は GALAXY NEXUS (Android 4.2のNFC対応端末)です。
Nexus端末ですので、もちろん"おさいふケータイ"には非対応です。
(でも、Felica PlugはNFC-Fということで読み書きできるのです。)
とりあえず、NXPの"NFC TagInfo"というアプリを用いて読み取りをしてみました。
端末の裏側に埋め込まれているアンテナ近くに、Felica Plugを近づけると...。
このようにType3 (NFC-F)のカードとして認識され、
NDEFがRead & Writeとなっていることが確認できました。
また文頭の動画のとおり、NXPの"NFC TagWriter"というアプリを用いて
実際にデータを読み書きすることもできました。
めでたし、めでたし。
さて...これを使って作りたいモノがあるので、
続けて取り掛かりたいと思います (^^)♪ それでは。
参考にさせていただいたページ (感謝♪):
先述のとおり、使用した端末は GALAXY NEXUS (Android 4.2のNFC対応端末)です。
Nexus端末ですので、もちろん"おさいふケータイ"には非対応です。
(でも、Felica PlugはNFC-Fということで読み書きできるのです。)
とりあえず、NXPの"NFC TagInfo"というアプリを用いて読み取りをしてみました。
端末の裏側に埋め込まれているアンテナ近くに、Felica Plugを近づけると...。
このようにType3 (NFC-F)のカードとして認識され、
NDEFがRead & Writeとなっていることが確認できました。
NFC TagInfoにて、Felica Plugが認識されたところ。 |
また文頭の動画のとおり、NXPの"NFC TagWriter"というアプリを用いて
実際にデータを読み書きすることもできました。
NFC TagWriterにて、文字列を書き込んだところ。 |
さて...これを使って作りたいモノがあるので、
続けて取り掛かりたいと思います (^^)♪ それでは。
参考にさせていただいたページ (感謝♪):
- Felica Developers' Blog - Arduino向けFeliCa Plug 制御ライブラリの提供 [RFワールド No.12連動 -機器構成①-]
- SWITCH SCIENCE - FelicaPlugの使い方
- SlideShare - About Felica Plug
- hiro99ma blog - FeliCa Plugでできること (初期化まで)
p.s.
記事のタイトルが長過ぎました。反省...(^^;)
0 件のコメント:
コメントを投稿
お気軽にコメントをお寄せください m(_ _)m♪
"コメントの記入者"欄から[名前/URL]を選ぶと、登録なしでコメント投稿していただけます。