続々 FeliCa Plug と Arduino と私
Windows 開発環境構築手順編
1. Arduino - Software から Arduino IDE をダウンロードして、インストールする。これを記載している時点では Arduino 1.0.5 が正式リリースの最新版。
2. Arduino を Windows PC に接続する。
3. Arduino 統合開発環境を起動する。
4.Arduino 統合開発環境のメニューからツール→マイコンボードから使用する Arduino を選択する。
5.Arduino 統合開発環境のメニューからツール→シリアルポートから使用するシリアルポートを選択する。どのシリアルポートを選択して良いのか判らない場合はコントロールパネルからデバイスマネージャーを起動して「ポート (COM と LPT)」を展開する。表示されたデバイスから「USB Serial Port」の COMx を選択すれば良い筈。
6. 「Arduino向けFeliCa Plug制御ライブラリ」 ダウンロードページ « FeliCa Developers' Blog から制御ライブラリをダウンロードする。
7. 制御ライブラリを適当なフォルダに展開する。
8. 制御ライブラリが書かれた時期の Arduino の開発環境と現在の開発環境の差異があるので、以下のパッチを適用する。
--- FeliCaPlug.cpp.orig 2011-05-06 11:14:27.000000000 +0900 +++ FeliCaPlug.cpp 2013-08-30 14:02:51.274641100 +0900 @@ -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"
9. マイドキュメントの Arduino フォルダ下の libraries フォルダに FeliCaPlug フォルダを作成して、FeliCaPlug フォルダに制御ライブラリの以下のファイルをコピーする。マイドキュメントの Arduino フォルダが無い場合は Arduino 統合開発環境をインストールしたフォルダにlibraries フォルダがあるのでその下に FeliCaPlug フォルダを作成してファイルをコピーする。
- FeliCaPlug.cpp
- FeliCaPlug.h
10. Arduino 統合開発環境に以下のコードをコピーして、画面上部の○ボタンの「→」を押してコンパイルと Arduino への転送を実行する。
#include <FeliCaPlug.h> #define BLOCK_SIZE 16 #include <inttypes.h> #define NUM_OF_BLOCKS 1 uint8_t ftBlockData[BLOCK_SIZE * NUM_OF_BLOCKS]; FeliCaPlug plug; void setup(void) { /* * スイッチサイエンスで購入した FeliCa Plug では * データフォーマットコード 0x001c を使用しましょうと言う事らしい * See http://trac.switch-science.com/wiki/FeliCaPlug */ uint8_t dfc[2] = { 0x00, 0x1c, }; uint8_t userParam[4] = { 0x01, 0x23, 0x45, 0x67, }; Serial.begin(9600); plug.initPort(); plug.setLEDPin(FELICA_PLUG_LED_PIN); plug.setParam(FELICA_PLUG_MODE_FT, dfc, userParam); plug.setBlockData(ftBlockData, NUM_OF_BLOCKS, 0); plug.setFTReadCallback(ftReadCallback); plug.setFTWriteCallback(ftWriteCallback); } void loop(void) { for (;;) { plug.doLoop(); } } void ftReadCallback(uint16_t blockNum) { static int n; for (int i = 0; i < BLOCK_SIZE; i++) { ftBlockData[i] = n++; } } void ftWriteCallback(uint16_t blockNum) { }
11. FeliCa リーダライタなり NFC リーダライタなりで適当に一ブロックを Read Without Encryption してみて読み出せるデータが毎回変更される事を楽しむ。