【VB.Net】EtherNetタイプのRFIDリーダと接続する~RFIDとは何か?~

どうも!リョクちゃです。

久々のVB.Net記事の更新です。

タイトル通り、以前にRFIDリーダを使う機会があったので

RFIDとは何かから学んだことを紹介していきます。

EtherNet経由で接続されたRFIDリーダをVB.Netで制御し、

まずは接続するところからを記事にします。

読込みや書込みに関しては、また別の記事で紹介していきます。

ちなみに前回のVB.Net記事はこちら

VB.Netにおける除算エラーについて簡単に紹介していきます。除算のエラーをアプリケーションの実行中に発生させてしまい、強制的にアプリケーションが止められてしまって、どうしたらいいか悩んでる方の参考になれば嬉しいです。まずは簡単にエラーについて学んでみましょう。



RFIDとは

そもそもRFIDとは何か、

Radio Frequency IDentifier

の略で、調べてみると

RFIDradio frequency identifier)とは、ID情報を埋め込んだRFタグから、電磁界電波を用いた近距離(周波数帯によって数センチメートル~数メートル)の無線通信によって情報をやりとりするもの、および技術全般を指す。 従来のRFタグは、複数の電子素子が乗った回路基板で構成されていたが、近年、小さなワンチップのIC (集積回路)で実現できるようになってきた。 これはICタグと呼ばれ、そのサイズからゴマ粒チップと呼ばれることもある。 一般的にRFIDとはICタグ、その中でも特にパッシブタイプのICタグのみを指して用いられることが多い。

出典: フリー百科事典『ウィキペディア(Wikipedia)』

簡単にかみ砕くと、電波によってデータのやり取りをする機器ですね。

  • データを読込んだり書き込んだりするのがリーダと呼ばれる機器
    ⇒ RFIDリーダ
  • データが蓄積されている、されるのがタグと呼ばれる機器
    ⇒ RFIDタグ IDタグ って呼ばれています。

になります。

最近では、各業界で様々な活用をされていますね。

例えば、ユニクロがわかりやすいかもしれません。

ユニクロの製品のだいたい(ほぼすべて?)には、このRFIDが使われています。

皆さんも経験したことがあるのではないでしょうか?

ユニクロではカートに入れた商品をレジの横のカート置き場に置くことで

自動で購入金額を算出し、レジに表示してくれています。

流れとしては、

  1. カート置き場にカートを置く
  2. カート内のタグをRFIDで読み取る
  3. タグに書込まれた情報から商品の価格を抽出
  4. 集計後レジへ表示

といった流れになるのでしょうか。

最近では、このようなカートを置くだけで会計ができる、セルフレジ方式の多くは

RFIDを活用しています。

※会計自体はお客さんが現金もしくは電子決済を選びます。

食品分野ではなかなか難しいですが、近年では検証もされているようです。

※流通に関しては、RFIDが活用されています。店舗運用に関しては検証段階?

コンビニエンスストアにおける食品ロス削減に関する取組

まだまだ、これからのRFID、今後が楽しみですね。

スポンサーリンク




特徴

以下のような特徴があります。

  • 非接触でIDの読み取りが可能
  • データの書き換えが可能
  • バーコードと違って汚れても読み取れる
  • 電波で読み取るので遮蔽物の影響を受けにくい(電波が通れば)

RFIDタグ

タグにもいくつかのタイプがあります。

  • パッシブタイプ
  • アクティブタイプ
  • セミアクティブタイプ

パッシブタイプ

IDタグの中に電池が搭載されていないタグに分類され、

ICカード、PasmoやSuica、ICOCAなどがパッシブタイプに該当します。

実はICカードもRFIDなんですね。

読み取れる距離も近距離で、だいたい数十センチ程度になります。

書込めるメモリの容量もタグによってさまざまで、

数十~数千バイトになります。

パッシブタイプは、電池内蔵されていないことから

自身で電波を発することができないので、基本的には

RFIDリーダからのエネルギーで動作をします。

寿命も一般的には、半永久的といわれています。

アクティブタイプ

パッシブタイプとは違って、電池が内蔵されており、自身で電波を発することができます。

読み取れる距離も長く、数10メートル以上で可能です。

自動車のキーやスポーツ分野での活用がされています。

スポーツ分野だと、マラソンやタイムを計るときの機器として活用されるケースがあります。

最近では落とし物防止用のキーホルダに内蔵されていることもありますね。

これを落としたくないモノに付けておいて、いざなくなったときでも

キーホルダの場所を検索することでどこにあるかすぐにわかりますね。

画像のようなモノになります。スマートタグって言われていますね。

寿命はパッシブタイプと違って、電池が内蔵されていることから

数年程度と言えます、使用頻度によって変わってくるでしょう。

セミアクティブタイプ

こちらはパッシブタイプとアクティブタイプの特徴を併せ持ったタグに分類されます。

パッシブタイプより、読み取れる距離が長い

アクティブタイプより、電池の消耗が少ない

といった特徴があり、両者の欠点を補ってくれるようなのがセミアクティブになりますね。

良い点を集めたRFIDですね。

使用例としては、スポーツに関する事例が多く

  • レースのタイム計測(スポーツ競技判定)
    自転車やマラソン、駅伝

スポーツ分野で目覚ましい活躍をされているようです。

今回使用したRFID

以下の組み合わせのモノを使用しています。

No機器名メーカ名備考画像
1V680S(RFIDリーダ)OmronEtherNetタイプ
2V680S-D2KF67M(IDタグ)Omronメモリ容量:2000バイト
質量:12g
形状:40×40×5(mm)
アクセス回数:1兆回

接続構成

以下のような構成になります。

RFIDとの接続

VB.Netで接続するには、System.Net.Socketsクラスを使います。

ネットワークへのアクセスを厳密に制御する必要のある開発者のための、Windows ソケット (Winsock) インターフェイスのマネージド実装が用意されています。

System.Net.Sockets 名前空間

といったのがサポートされているクラスになります。

使うには、まず変数として宣言をしておきます。

Private or Public 変数名 As System.Net.Sockets.TcpClient
Private or Public 変数名 As System.Net.Sockets.NetworkStream

この二つを最初に宣言します。

TcpClientは、TCPネットワークサービス用のクライアント接続が提供されています。

TCP : Transmission Control Protocol

インターネットにおいて標準的に利用されているプロトコルです。

インターネットで使われているものだと認識してもらえればと思います。

ソケットを作成

変数の宣言をしたら、ソケットを生成します。

以下の記述で生成ができます。(インスタンスの生成ともいいます。)

変数名 = New System.Net.Sockets.TcpClient

接続先の情報も変数として準備しておきます。

Dim 変数名 As String = “接続する機器のIPアドレス”
Dim 変数名 As String = “接続する機器のポート”

TCP接続

ソケットを生成し、接続する機器のパラメータ準備もできたので

実際に機器に対して、以下の記述で接続を試みます。

TcpClient変数.Connect(“接続する機器のIPアドレス”, “接続する機器のポート”)

NetworkStreamも取得しておきます。

通信が確立した後のデータのやり取りで使います。

変数名 = TcpClient変数.GetStream()

メモ
ストリーム(Stream) : 順々に流れてくるデータを指しています。

Connectを実行し、特に例外が発生していなければ通信ができています。

気になるようであれば、以下を実行し接続状態を取得します。

TcpClient変数名.Connected

戻り値が
  • Trueなら接続されている
  • Falseなら接続されていない
となります。

最後にコードは以下になります。

まとめ

RFIDとは何かから触れ、実際にRFIDリーダとVB.Netで

接続してみるところまでを紹介していきました。

接続に関しては、Socketクラスを使えば意外にもあっさりとできてしまいます。

接続の仕方で悩まれている方の参考になれば嬉しいです。

次回以降で、読み込みや書き込みについても紹介できたらと思います。

最後までお読みいただき、ありがとうございます。

・こちらの書籍を参考にVB.Net勉強しています。

スポンサーリンク