RFIDを使ってみよう (基本編)
作成日: 2004/3/26  最終更新日: 2004/5/18



◆概要

ここでは,Texas Instruments(以下TI)製のRFIDリーダー S2000 MicroReaderを制御するためのサンプルソフトウェアを紹介し,RFIDを用いた実世界システムを作るための基本的な手順について解説していきます.

RFIDについての基本的な情報や,リーダーとPCの接続などについては準備編を参考にしてください.また,タグの読み取り範囲を変更するためのアンテナの設計方法について,アンテナ編で紹介しています.




◆RFIDリーダー制御用ソフトウェア

私が作成したTI S2000 MicroReader制御用のサンプルソフトウェアを紹介します.
このサンプルを使うと,

  1. タグIDの一回読み取り
  2. タグIDの連続読み取り
  3. タグIDの書き込み(対応するタグのみ)

などのRFIDリーダーの基本的な機能を簡単に試すことができます(図1).

また,より実践的な機能として,「特定のIDを認識したときに任意の処理を行う」ことができます.サンプルでは特定のIDを認識したときのみウインドウを開き,IDに応じた 画像を表示しています(図2).

 

図1 ソフトウェアのスクリーンショット

(1) ID未検出の状態

(2) ID[10000]を認識したときの動作

(3) ID[10001]を認識したときの動作

図2 ソフトウェアの動作例
特定のタグID認識時に画像を表示する.



◆ダウンロード

  • RfidForm.zip
    実行ファイルとサンプル用画像ファイルです.
  • RfidFormSource.zip
    ソースコードです.Visual Studio .NET を用いて,C#で書かれています.

◆インストール

このソフトは .NET + C# で書かれているため,事前に Microsoft .NET Framework再頒布パッケージ (23.7 MB) をインストールしておく必要があります. .Net Frameworkがインストールされていれば,実行ファイルを起動すれば動作するはずです.





◆基本的な使い方

1. RFIDリーダーへの接続

- コンボボックスから接続するシリアルポート(COM1〜COM20)を選択し,「接続」ボタンを押します.

- 接続に成功すれば,「ポートをオープンしました」とメッセージが表示され,「一回読取」「連続読取開始」「書き込み」「切断」の各ボタンが利用可能になります.
- 接続に失敗すると,「ポートのオープンに失敗しました」とメッセージが表示されます.COMポートの指定が正しいか,ノートパソコンの場合はUSB⇔シリアル変換ケーブルがささっているかを確認してください.

※利用できるシリアルポート番号の一覧は,コントロールパネル→システム→ハードウェア→デバイスマネージャ→ポート にて 確認できます.

2. 一回読み取り

- RFIDリーダーに接続後,「一回読取」ボタンを押すと,タグのIDを一度だけ読み込みます.

 

- タグを認識した場合は,右上のID用テキストボックスにID番号が表示されます.
- タグがリーダー(アンテナ)の近くに存在しない場合は,ID用テキストボックスに「No Read」と表示されます.

3. 書き込み
- RFIDリーダーに接続後,右横の書込用テキストボックスにIDを入力して,「書き込み」ボタンを押すと,タグにIDを書き込みます.

- IDの書き込みに成功した場合は,右上のID用テキストボックスに書き込んだID番号が表示されます.
- 書込用IDボックスの値が不正な場合(空白,数値でないなど)は,再度入力を促すメッセージが表示されます.

※エラーメッセージが表示されない場合でも,ID用テキストボックスに書き込んだIDが表示されない場合は,書き込みに失敗している可能性があります.読み込みコマンドでも読み込めなければ,再度書き込みを行ってみてください.

4. 連続読み取り

- RFIDリーダーに接続後,「連続読取開始」ボタンを押すと,連続読取を開始します.

- 連続読取を開始すると,「連続読取停止」ボタンがアクティブになります.「連続読取停止」「切断」「一回読取」ボタンを押すまで,タグIDを連続的に取得します.

- タグの検出状態が更新されると,右上のID用テキストボックスのID番号が更新されます.

5. RFIDリーダーから切断

- RFIDリーダーに接続後,「切断」ボタンを押すと,RFIDとの接続を切断します.

6. ソフトウェアの終了
- ウインドウの×ボタンを押すと,いつでもソフトウェアを終了できます.連続読取やシリアルポートへの接続も自動的に終了します.
番外: オプション設定

-右下の「デバッグメッセージを表示する」をチェックしておくと,左側のテキストボックスにデバッグ用メッセージが表示されます.(通常は非表示)

-「取り除く操作を検出する」をチェックしておくと,タグが取り除かれたとき(IDが「検出→非検出」になった時)を検出し,IDをクリアします.
チェックをはずすと,一度認識したIDは新しいIDを認識するまで保持されます.

 



◆実践的な使い方

次に,特定のIDとキーワード(URLなど),を事前に登録し,ID認識時にキーワードを用いて特定の処理を行う方法を説明します.ここでは,特定のIDを認識すると,画像ファイルを開く,という処理を行います.

1. IDを登録する

実行ファイルと同一のディレクトリにある,"items.txt"というファイルを編集します.
items.txtの中には,以下のようなタブ区切り形式でID,タイトル,ファイル名を書いていきます.
※ここではタブを\tと表記しています.実際にはタブに変換する必要があります.また,文字コードはShiftJISにしておく必要があります.(メモ帳で表示できれば大丈夫です.)


//(ID)\t(タイトル)\t(ファイル名)
10000\tぬいぐるみ\tponyo.png 10001\tのぽぽん\tnopo.png 10002\t夕焼け\tsunset.jpg

対応する画像ファイルは,ソフトウェアの実行ディレクトリの"image"フォルダに入れてください.

 

2. 連続読取モードにする.

- RFIDリーダーに接続後,「連続読取開始」ボタンを押し,連続読取モードにする.

- 詳細は基本的な使い方を参照.

3. 登録済みのIDを認識時,イベントを処理する.

以下に示すように,DealEventメソッド内でIDが登録済みかどうか確認し,必要なイベント処理を記述します. ここでは,ピクチャーボックスを配置したフォームを開いて,画像を表示させています.
//ID検出時の処理を行う
void DealEvent(long id)
{
	//IDが0の場合に行う処理 (IDが検出されなくなったときに発生)
	if(id == 0)
	{
		//画像表示フォームを非表示にする.
		if(form !=null)
			form.Dispose();
	}
	//通常のID検出時に行いたい処理を記述.
	else
	{
		//検出されたIDを登録済みのIDと比較する
		foreach(Item item in itemHolder.Values)
		{
			if(item == null)
				break;
			//登録済みIDと一致した場合の処理
			if(id == item.id)
			{
				//画像表示フォームを表示する.
				if(form != null) {
					form.Dispose();
					form = new ImageForm(item);
					form.Show();
					form.BringToFront();
					form.Update();
					return;
				}
			}
			//全ての登録済みIDと一致しなかった場合,フォームが開いていたら閉じる
			if(form != null)
				form.Dispose();
		}
	}
	return;
}
4. ソフトウェアの終了

- ウインドウの×ボタンを押して,ソフトウェアを終了します.

※必ず×ボタンを押してソフトウェアを終了してください.
 
タスクマネージャなどで強制終了すると,リソースの開放などが失敗して,最悪の場合ブルースクリーンになってWindowsの再起動が必要になります.
 
連続読取中にもし強制終了してしまった場合は,一度RFIDリーダーの電源を抜き挿しして,リーダーを再起動してください.




◆おわりに

「特定のIDを特定のキーワード(URL,ファイル名,プログラム名など)と結びつけて任意の処理をする」方法は,RFIDを用いた実世界システムの基本となるものです.
ここでは,特定の画像ファイルを表示する,という処理を行いましたが,同様の方法で「Webページを表示する」「音楽を再生する」「メールを送信する」など,さまざまな処理を比較的容易に行うことができます.

また,ここでは実際にRFIDリーダーを制御するためのコードについては紹介していません.具体的な処理方法について知りたい場合は,ソースコード内の"RFIDComm.cs"などを参考にしてみてください.TIのWebサイトのデータシートも参考になると思います.




◆関連URL


[RFIDぶらり旅]

[デバイスふらり旅]