LESSON 039
非接触通信用の高集積リーダ/ライタを使う
○ 今回は高集積リーダ/ライタについてを説明します。
○ NFC(Near Field Communication「近距離無線通信」)通信方法は、デバイス同士を近づかざすかざす)ことで通信できる技術になります。日本では、電波法の微弱無線局の規定があり、この法律を守る必要があります。
○ 交通系ICカードやクレジットカード、スマートフォン端末などに多く搭載されており、私たちの生活で広く活用されているのです。
〇 アクセス制御の開発、電子錠、タイムレコーディング用の端末などでも用いられます。
○ 通信可能距離が短い
通信可能距離は NFC 10cm
Wi-Fi 約100m
Bluetooth 約10m
赤外線通信 約30cm~1m
○ 通信速度が比較的遅い
通信速度は NFC 最大847kビット/秒
(106k、212k、424k、847kビット/秒の4種類)
Wi-Fi 最大6.9Gビット/秒
Bluetooth 最大24Mビット/秒
○ NFCにはさまざまなメリットがあります。
処理速度が速い
双方向通信が可能
セキュリティ面に優れている
○ RC522 RFID リーダーモジュールを適用する方法を学習します。
○ RC522 RFIDセット
・コンタクトレスリーダーチップMFRC522を使ったRFIDリーダーライタモジュール
双方向で最高 848kbit / s のMIFARE®高速転送速度を使用した非接触通信をサポート
動作電源 : 3.3V
動作電流 : 13-26mA
動作周波数 : 13.56MHz
電界強度 : μV/m (未定)
ここが判らないため電波法の適応が判りません。
・カード型RFIDタグ
対応可能なカードタイプ
mifare1 S50、mifare1 S70、Mifare UltraLight、Mifare Pro、mifare DESFire
・キーホルダー型RFIDタグ
・ SPI( serial peripheral interface シリアル・ペリフェラル・インタフェース) を使用します。
・ 電波法で処罰されるのは、違法な設備(機器)を販売した人ではなく使用した人であることに注意が必要です。
-
- 構成部品
- 配線図
- スケッチ
- 結果
- まとめ
Arduino
USBケーブル
RFID‐RC522 モジュール
RFID キーリングICタグ
RFID NFCカード
ジャンパー線
GPIO 9 ⇒ RST
GPIO 10 ⇒ SDA
GPIO 11 ⇒ MOS
GPIO 12 ⇒ MOSI
GPIO 13 ⇒ SCK
3.3V ⇒ 3.3V
GND ⇒ GND
#include <SPI.h>
#include <MFRC522.h>
int RST_PIN = 9;
int SS_PIN = 10;
MFRC522 mfrc522(SS_PIN, RST_PIN);
void setup()
{
Serial.begin(9600);
SPI.begin();
mfrc522.PCD_Init();
}
void loop()
{
if ( ! mfrc522.PICC_IsNewCardPresent())
{
return;
}
if ( ! mfrc522.PICC_ReadCardSerial())
{
return;
}
String content= "";
Serial.print("UID tag :");
for (byte i = 0; i < mfrc522.uid.size; i++)
{
Serial.print(mfrc522.uid.uidByte[i] < 0x10 ? " 0" : " ");
Serial.print(mfrc522.uid.uidByte[i], HEX);
content.concat(String(mfrc522.uid.uidByte[i] < 0x10 ? " 0" : " "));
content.concat(String(mfrc522.uid.uidByte[i], HEX));
}
Serial.println();
Serial.print("Message : ");
content.toUpperCase();
if (content.substring(1) == "F9 9B F3 97") //change here the UID of the card/cards that you want to give access
{
Serial.println(" - OK - ");
Serial.println();
delay(2000);
}
else {
Serial.println(" - × - ");
Serial.println();
delay(2000);
}
}
解説
#include <SPI.h>
SPIは、短距離用の簡便な同期通信のライブラリです。
- #include <MFRC522.h>
MFRC522用のライブラリです。
MFRC522 変換(SSピン, RSTピン);
MFRC522 の変数を設定
- void setup() 内
SPI.begin();
SPI始動
変数.PCD_Init();
PCDの初期化
- void loop() 内
変数.PICC_IsNewCardPresent()
カードを確認する
変数.PICC_ReadCardSerial()
読取り可能かを確認する
for (byte i = 0; i < mfrc522.uid.size; i++)
{
Serial.print(mfrc522.uid.uidByte[i] < 0x10 ? ” 0″ : ” “); —- ①
Serial.print(mfrc522.uid.uidByte[i], HEX);
content.concat(String(mfrc522.uid.uidByte[i] < 0x10 ? ” 0″ : ” “));
content.concat(String(mfrc522.uid.uidByte[i], HEX));
}
カードのシリアル番号を取得する。
if (content.substring(1) == “シリアル番号“) —- ②
{
Serial.println(” – OK – “);
else
{ Serial.println(” – × – “);
}
カードのシリアル番号の照合する。
上の①で調べたシリアル番号を②に代入すれば - OK - が表示します。
NFCカード のシリアル番号を登録しているため
登録したNFCカードの時は - OK - が表示
それ以外の場合は – × - を表示
〇 NFC通信方法は双方向ではありますが、今回はカードの認証方法に留めました。
○ 電波法は販売者には責任は無く、使用者側に責任があります。ですので微弱無線適合マークの無い製品の使用は総務省の許可が必要になります。
○ Arduino を 学ぶ上で書籍やWebpageを参考に作っていますが、私なりに噛み砕いて書いているつもりですが、判らない点がありましたら連絡下さい。