ArduinoでRFIDリーダーを使う
ハードウェアを使ったある種の認証形態をプロジェクトに利用したいと思っているなら、この基盤を使ってみて下さい。パララックスRFID(電波による個体識別)リーダーの設定は、配線が4ヶ所だけで、ものすごく簡単です。ArduinoにRFIDカードからの情報を転送するためにシリアル・プロトコルを使います。今回は、Arudinoのシステムでの、このRFIDリーダーの使用を簡単に解説します。
まずは必要なコンポーネントを集める簡単なステップから始めましょう。必要なものは;
- ジャンパーワイヤー4本
- パララックスRFIDリーダー
- Arduino開発ボード
- ブレッドボード(オプション)
- それだけです。では、次のステップへ…
ステップ2
- RFIDリーダーとArduinoを下記のピンマッピングの要領で配線します。
- Arduino Rx = RFID SOUT
- Arduino D2 = RFID Enable
- Arduino GND = RFID GND
- Arduino 5v = RFID VCC
- D2はデジタルピン番号2番です。
ステップ3
- Arduinoにコードを書き込みます。
- RFIDへの多種多彩なAnduinoコードがありますが、現在、確認した中ではベンジャミン・エッケルによるコードが一番です。コメントを日本語かして保管資料として彼のコードを載せておきます。
/** * author Benjamin Eckel * date 10-17-2009 * * Minor edits by Riley Porter * 2-27-2011 */ #define RFID_ENABLE 2 //RFID を利用可能にする #define CODE_LEN 10 //RFID タグの文字列の最大値を設定 #define VALIDATE_TAG 1 //tagをゆうこうかすべき #define VALIDATE_LENGTH 200 //maximum reads b/w tag read and validate #define ITERATION_LENGTH 2000 //時間, in ミリ秒, ユーザが自分で調整する #define START_BYTE 0x0A #define STOP_BYTE 0x0D char tag[CODE_LEN]; void setup() { Serial.begin(2400); pinMode(RFID_ENABLE,OUTPUT); } void loop() { //main Arduino Loopの開始 enableRFID(); //RFIDカードの利用を可能にする getRFIDTag(); //タグを読むn if(isCodeValid()) { //タグが有効か確認する disableRFID(); //RFIDをlow power modeにする。 sendCode(); //コードをシリアルポートに送信 delay(ITERATION_LENGTH); //デバウンス? } else { disableRFID(); //不完全なコードの場合.. Serial.println("ノイズを検知しました");
} Serial.flush(); clearCode(); } /** * メモリースペースを空にする。 */ void clearCode() { for(int i=0; i<CODE_LEN; i++) { tag[i] = 0; } } /** * タグをパソコンに送信する */ void sendCode() { //変数(コード)が有効か確認するためにここにreturnを加えた。
Serial.print("TAG:"); char full_tag[10]; for(int i=0; i<CODE_LEN; i++) { if (i == 9) //Edits by riley porter Serial.println(tag[i]); //最後のバイト数かどうかここで確認する
else //これがもし新しい行を出力するならコードがごちゃごちゃになる Serial.print(tag[i]); } } /**************************************************************/ /******************** RFID Functions ***********************/ /**************************************************************/ void enableRFID() { digitalWrite(RFID_ENABLE, LOW); } void disableRFID() { digitalWrite(RFID_ENABLE, HIGH); } /** * ブロックする function, RFID tag停止してからRFIDを読む. */ void getRFIDTag() { byte next_byte; while(Serial.available() <= 0) {} if((next_byte = Serial.read()) == START_BYTE) { byte bytesread = 0; while(bytesread < CODE_LEN) { if(Serial.available() > 0) { //wait for the next byte if((next_byte = Serial.read()) == STOP_BYTE) break; tag[bytesread++] = next_byte; } } } } /** * 次のタグが現在のタグと合致するか見るために一時停止する
*/ boolean isCodeValid() { byte next_byte; int count = 0; while (Serial.available() < 2) { //there is already a STOP_BYTE in buffer delay(1); //probably not a very pure millisecond if(count++ > VALIDATE_LENGTH) return false; } Serial.read(); //throw away extra STOP_BYTE if ((next_byte = Serial.read()) == START_BYTE) { byte bytes_read = 0; while (bytes_read < CODE_LEN) { if (Serial.available() > 0) { //wait for the next byte if ((next_byte = Serial.read()) == STOP_BYTE) break; if (tag[bytes_read++] != next_byte) return false; } } } return true; }
- この時点で、RFIDリーダーはArduinoと通信でき、コードをいつでもハックすることができます。ご自分で素敵なプロジェクトを作ってみましょう。
- ターミナルにタグをプリントする以外にRFIDリーダーを使用するためにハックするのがsendCode機能です。完全にコードを理解するには、データシートをすべて読んで下さい。こちらからダウンロードして下さい.
ステップ4
- やることはこれで全部です。これが基本的なスタブで、ArduinoでのRFIDリーダーを使って、独自の経験を追加する事をお進めします。
RFIDタグに接続して読み取る事が出来たら、もっと大きなプロジェクトにこれを組み入れる事も出来ます。RFID対応キャンディ保管庫やRFIDのガレージドア開閉などに利用してみては?他にも様々な事に利用可能なので、挑戦してみて下さい!
<この記事はMakeのこちらの記事超訳です。http://makezine.com/projects/using-the-parallax-rfid-reader-with-an-arduino/>
サインスマート 13.56MHz RFID Mini モジュールキット オートロック 非接触 ICカードキー カード式錠 for Arduino UNO Mega 2560 R3 Nano AVR Raspberry Pi
posted with AZlink at 2014.6.13
サインスマート(SainSmart)
売り上げランキング: 33844
No Comment to " ArduinoでRFID NFCリーダーを使う簡単コード "