概要
RFID(Radio Frequency Identification)は、電波を利用してICタグ(RFIDタグ)の識別情報を非接触で読み取る自動認識技術の総称です。バーコードと異なり、視線を遮る障害物越し・複数タグの一括読み取り・タグを探さずに認識できるという特徴を持ちます。
使用する周波数帯によって通信距離・速度・用途が大きく異なり、低周波(LF: 125kHz)から超高周波(UHF: 860〜960MHz)・マイクロ波(2.45GHz)まで幅広い規格があります。NFC(13.56MHz)はRFIDの一種です。
物流・製造業の部品管理・図書館の蔵書管理・衣料品の在庫管理・畜産管理・アクセス管理など、大量物品の自動識別が必要なあらゆる分野で活用されています。
歴史・背景
RFIDの原型は第二次世界大戦中の1940年代に遡ります。英国はレーダーに「IFF(Identification Friend or Foe)」システムを組み込み、味方の航空機を電波で識別しました。これがRFIDの先祖とされています。
商用RFIDの普及:
- 1970年代: 米国で家畜管理向けLF RFIDが実用化
- 1983年: 米国でRFIDの特許が初取得(Charles Walton)
- 1990年代: 高速道路ETC(Electronic Toll Collection)にUHF RFIDが採用
- 1999年: MIT Auto-IDセンターがEPC(Electronic Product Code)を提案
- 2003年: EPC Global(現GS1 EPCglobal)が設立、EPCコードの標準化
- 2003年: 米国ウォルマートがサプライヤーにUHF RFID導入を義務化(業界転換点)
- 2004年: ISO/IEC 18000-6C(EPC Gen2)が策定
- 2010年代: UHF RFIDタグが10円以下まで低価格化、アパレル業界での爆発的普及
- 2020年代: 国内コンビニ・スーパーでRFIDセルフレジの実証実験・本格導入
技術仕様
周波数帯別比較
| 周波数帯 | 略称 | 周波数 | 通信距離 | 速度 | 主な用途 |
|---|---|---|---|---|---|
| 低周波 | LF | 125〜134 kHz | 数cm〜50cm | 低速 | 動物管理・アクセス管理 |
| 高周波 | HF | 13.56 MHz | 数cm〜1m | 中速 | NFC・図書館・決済 |
| 超高周波 | UHF | 860〜960 MHz | 1〜12m | 高速 | 物流・アパレル・在庫 |
| マイクロ波 | MW | 2.45 GHz | 1〜数m | 高速 | 車両管理・工場 |
パッシブ / アクティブ / セミパッシブ
| タイプ | 電源 | 通信距離 | 価格 | 特徴 |
|---|---|---|---|---|
| パッシブ | 不要(リーダーの電波から電源) | 数cm〜12m | 安い(数円〜) | 電池不要・長寿命 |
| アクティブ | 内蔵電池 | 最大100m | 高め(数百円〜) | 長距離通信可能 |
| セミパッシブ(BAP) | 内蔵電池(通信は受信電波利用) | 数m〜30m | 中程度 | 低温環境・センサー統合 |
UHF RFID(EPC Gen2)の仕様
UHF RFIDはサプライチェーン・物流で最も広く使われるRFIDです:
| パラメータ | 値 |
|---|---|
| 規格 | ISO/IEC 18000-6C / EPC Gen2 v2 |
| 周波数(日本) | 920〜928 MHz(特定小電力) |
| 周波数(米国) | 902〜928 MHz |
| 周波数(欧州) | 865〜868 MHz |
| データレート | 最大640 kbps(リーダー→タグ) |
| 一括読み取り | 数百〜1,000タグ以上/秒 |
| メモリ | EPC: 96〜496 bit / User: 最大512 bit |
| 書き換え回数 | 10万回以上 |
EPCコード(96bit)の構造:
EPC(Electronic Product Code)96bit構成
┌──────────────┬──────────────────┬─────────────────┬──────────────────┐
│ Header(8bit) │ EPC Manager(28b) │ Object Class(24b)│ Serial No.(38b) │
└──────────────┴──────────────────┴─────────────────┴──────────────────┘
- Header: EPCコードのバージョン
- EPC Manager: 企業識別(GS1から付与)
- Object Class: 商品区分
- Serial No.: 個体シリアル番号
アンチコリジョン(衝突防止)
複数タグを同時に読み取るためのアンチコリジョンプロトコル:
- LF / HF(ISO14443): シングルデバイス読み取り用(複数は時分割)
- HF(ISO15693): スロット型ALOHAアンチコリジョン
- UHF(EPC Gen2): スロット型アローハ(Q値動的調整)
EPC Gen2では「Q」パラメータで16〜32768スロットを動的調整し、理論上数百〜数千タグを数秒で一括読み取り可能です:
リーダーがQ=4(16スロット)でQuery送信
→ タグがランダムにスロット番号を選択
→ スロット番号0のタグのみ応答(衝突なし → 読み取り成功)
→ 衝突スロットはQ値を増やして再試行
動作原理
パッシブUHF RFIDの動作
リーダーアンテナ RFIDタグ
| |
|--- RF電波(860-960MHz) --> | ← 電力供給・データ搬送
| | ← タグICが起動(整流・平滑)
| |
|--- Query(問い合わせ) --> |
|<-- RN16(ランダム番号) ---- | ← タグがスロット選択
| |
|--- ACK(RN16返送) -------> |
|<-- EPC(96bit)+ CRC16 ---- | ← 識別子送信
| |
|--- Req_RN ----------------> | ← 書き込み要求(オプション)
|<-- RN32 ------------------- |
|--- Write(Data + CRC) ---> |
|<-- 0(成功) --------------- |
バックスキャッター変調(UHF)
パッシブUHFタグはリーダーから送信された電波を反射(バックスキャッター)することでデータを送信します。タグのアンテナインピーダンスを変化させることで反射波の振幅・位相を変調します。電池不要での数メートル通信を可能にする巧妙な技術です。
電磁誘導(LF / HF)
LF・HFタグはリーダーのコイルアンテナが作る磁界から電磁誘導で電力を得ます。通信距離が短い(数cm〜1m)代わりに、液体・人体への影響が小さいため医療・食品分野でも使いやすい特性があります。
用途・ユースケース
物流・サプライチェーン
- 倉庫入出庫管理: 入出庫ゲートでパレット・ダンボールを一括読み取り
- 棚卸自動化: 棚を歩くだけでハンディリーダーが一括在庫確認
- 誤品出荷防止: 出荷ゲートで正しい商品・数量かチェック
- コールドチェーン: 冷蔵品の温度履歴をセンサー内蔵タグで記録
アパレル・小売
- 在庫精度向上: RFID導入で在庫精度99%以上を達成する事例多数
- セルフレジ: 複数商品を一括スキャン、手置き・ハンガーのまま読み取り
- スマートフィッティングルーム: 試着室でタグ読み取り、コーディネート提案
製造・工場管理
- 工程管理(WIP): 製造中仕掛品の工程進捗をリアルタイム把握
- 工具・治具管理: 工具の使用状況・校正期限管理
- 自動車部品追跡: エンジン・主要部品のシリアル番号・製造履歴管理
その他
- 図書館: 蔵書管理・返却自動化・盗難防止(EAS機能)
- 動物管理: 畜産(ISO11784/85 LFタグ)・ペットマイクロチップ
- アクセス管理: ビル入退室・工場エリア管理(MIFAREカード)
- ETC(電子料金収受): 高速道路のノンストップ料金収受(UHF)
- 医療: 患者リストバンド・医薬品の追跡管理
実装・開発のポイント
UHF RFIDリーダーモジュール選択
| モジュール/機器 | メーカー | 特徴 |
|---|---|---|
| M6E-NANO | SparkFun / ThingMagic | 小型・組み込みUHFモジュール |
| RRU2881 | Feig Electronic | 産業用高性能 |
| R2000 | Impinj | チップレベル、ゲートウェイ向け |
| Zebra FX Series | Zebra | 物流・倉庫向け固定リーダー |
| NUR05W | Nordic ID | 小型OEMモジュール |
Raspberry Pi でUHF RFID読み取り(Python + M6E Nano)
import serial
import time
class M6ENano:
def __init__(self, port='/dev/ttyUSB0', baud=115200):
self.ser = serial.Serial(port, baud, timeout=1)
def send_command(self, cmd):
"""コマンドフレーム送信"""
# CRC16計算
crc = self.calculate_crc(cmd)
frame = [0xFF] + [len(cmd)] + cmd + [crc >> 8, crc & 0xFF]
self.ser.write(bytes(frame))
def read_single_tag(self):
"""単一タグ読み取りコマンド"""
# 0x21: Read Tag Single
self.send_command([0x03, 0x21])
time.sleep(0.1)
response = self.ser.read(64)
if len(response) > 8:
# EPCデータを抽出(応答フォーマットに従ってパース)
epc_len = response[7]
epc = response[8:8+epc_len]
return epc.hex()
return None
def calculate_crc(self, data):
"""CRC-16/CCITT計算"""
crc = 0xFFFF
for b in data:
crc ^= b << 8
for _ in range(8):
if crc & 0x8000:
crc = (crc << 1) ^ 0x1021
else:
crc <<= 1
return crc & 0xFFFF
# 使用例
reader = M6ENano('/dev/ttyUSB0')
while True:
epc = reader.read_single_tag()
if epc:
print(f"EPC: {epc}")
# EPCISイベントとして記録
log_epcis_event(epc, timestamp=time.time())
time.sleep(0.5)
IoTプラットフォームとの連携
RFIDリーダーをIoTゲートウェイとして機能させ、MQTTでクラウドにデータ送信するアーキテクチャが一般的です:
import paho.mqtt.client as mqtt
import json
import time
MQTT_BROKER = "iot.example.com"
MQTT_TOPIC = "rfid/warehouse/gate1/read"
mqttc = mqtt.Client()
mqttc.connect(MQTT_BROKER, 1883)
def on_tag_read(epc, rssi):
payload = {
"epc": epc,
"rssi": rssi,
"location": "gate1",
"timestamp": time.time()
}
mqttc.publish(MQTT_TOPIC, json.dumps(payload))
# メインループ
while True:
tag = rfid_reader.read()
if tag:
on_tag_read(tag.epc, tag.rssi)
アンテナ配置の設計
UHF RFIDシステムのアンテナ配置で注意すべき点:
- 偏波: リニア偏波アンテナは特定方向のタグに有利、円偏波アンテナは向きを選ばない
- 反射: 金属棚・壁・床は電波を反射してマルチパス干渉を起こす。読み取り位置の実測が重要
- 液体: 液体は水分子が電波を吸収。水入りペットボトルの裏面タグは読み取り困難なことが多い
- 金属製品: 金属製品に貼るタグは「On Metal Tag」(フェライト裏打ち)を使用
他技術との比較
RFID vs バーコード
| 項目 | RFID(UHF) | バーコード(1D/2D) |
|---|---|---|
| 読み取り距離 | 数m | 数cm〜1m |
| 一括読み取り | 多数(数百/秒) | 1個ずつ |
| 視線 | 不要 | 必要 |
| 個体識別 | 可(ユニークID) | 商品種類のみ(通常) |
| タグコスト | 数円〜 | 1円以下 |
| データ更新 | 可(書き換え型) | 不可(印刷) |
| 障害物 | 金属・液体に弱い | 汚れ・破損に弱い |
RFID vs NFC
NFCはRFIDのHF(13.56MHz)規格をベースに、スマートフォン連携のためのP2P・セキュリティ機能を追加したものです。物流・在庫管理の大量一括読み取りはUHF RFID、スマートフォンとの個別認証・決済はNFCという使い分けが一般的です。
RFID vs BLE Asset Tracking
BLEアクティブタグは最大数十〜数百メートルの通信距離を持ち、電池でリアルタイム位置追跡が可能です。コストはRFIDより高いですが、屋内測位精度と継続的なモニタリングが必要な工場・病院での資産管理に使われます。