2.2.7 MFRC522 RFIDモジュール

前書き

無線周波数識別(RFID)は、オブジェクト(またはタグ)と質問デバイス(またはリーダー)の間の無線通信を使用して、そのようなオブジェクトを自動的に追跡したり識別したりする技術を指す。

この技術の最も一般的なアプリケーションには、小売サプライチェーン、軍事サプライチェーン、自動決済方法、荷物の追跡と管理、ドキュメントの追跡と医薬品管理などが含まれておる。

このプロジェクトでは、読み取りと書き込みにRFIDを使用する。

部品

_images/list_2.2.7.png

原理

RFID

無線周波数識別(RFID)は、オブジェクト(またはタグ)と質問デバイス(またはリーダー)の間の無線通信を使用して、 そのようなオブジェクトを自動的に追跡したり識別したりする技術を指す。 タグの送信範囲はリーダーから数メートルに制限されている。 リーダーとタグの間の明確な見通し線は必ずしも必要ではない。

ほとんどのタグには、少なくとも1つの集積回路(IC)とアンテナが含まれている。 マイクロチップは情報を保存し、リーダーとの無線周波数(RF)通信を管理する。 パッシブタグは独立したエネルギー源を持たず、リーダーによって提供される外部電磁信号に依存して動作する。 しかしアクティブタグバッテリーなどの独立したエネルギー源が含まれている。 したがって、処理、送信機能と範囲が拡大している可能性がある。

_images/image230.png

MFRC522

MFRC522は、読み取りと書き込みカードチップの一種である。通常、13.56MHzの無線で使用される。NXP Companyによって発売された低電圧、低コスト、小型の非接触カードチップであり、インテリジェント機器と持ち転びやすい手持ちデバイスの最良の選択である。

MF RC522はすべてのタイプの13.56MHzパッシブ非接触通信方法とプロトコルで完全に開示された高度な変調と復調の概念を使用している。 さらに、MIFARE製品を検証するための高速CRYPTO1暗号化アルゴリズムをサポートしている。 MFRC522は最大424kbit/sの双方向データ伝送速度で、MIFAREシリーズの高速非接触通信もサポートしている。 13.56MHz高集積リーダーカードシリーズの新しいメンバーとして、MF RC522は既存のMF RC500とMF RC530と非常に似ているが、多くの違いがある。 配線が少ないシリアル方式でホストマシンと通信する。SPI、I2C、とシリアルUARTモード(RS232に類似)から選択できる。 これにより、接続の削減、PCBボードスペースの節約(サイズの縮小)、およびコストの削減に役立つ。

回路図

_images/image331.png

実験手順

ステップ1: 回路を作る

_images/image232.png

ステップ2: SPI構成 (SPIを設定している場合は、このステップをスキップしてください。)

C言語ユーザー向け

ステップ3: コードのフォルダーに入る。

cd /home/pi/davinci-kit-for-raspberry-pi/c/2.2.7/

ステップ4: コードをコンパイルする。

make read
make write

注釈

カードIDの読み取りまたは書き込みには二つの例があり、必要に応じていずれかを選択できる。

ステップ5: EXEファイルを実行する。

sudo ./read
sudo ./write

コードの説明

InitRc522();

この関数はRFID RC522モジュールを初期化するために使用される。

uint8_t read_card_data();

この関数はカードのデータを読み取るために使用され、読み取りが成功すると「1」が返されます。

uint8_t write_card_data(uint8_t *data);

この関数はカードのデータを書き込むために使用され、書き込みが成功すると「1」を返します。 *data は、カードに書き込まれる情報です。

Python言語ユーザー向け

ステップ 2: ライブラリをインストールします。

spidev ライブラリは、SPI との対話を処理するのに役立ち、Raspberry Pi が RFID RC522 と対話するために必要なので、このチュートリアルの重要なコンポーネントです。

次のコマンドを実行して、pip 経由で spidev を Raspberry Pi にインストールします。

sudo pip3 install spidev

MFRC522 ライブラリのインストールに進みます。 MFRC522 ライブラリは MFRC522.pySimpleMFRC522.py の 2 つのファイルで構成されています。

MFRC522.py が RFID RC522 インターフェイスの実装である場合、このライブラリは Pi の SPI インターフェイスを介して RFID と通信するという面倒な作業をすべて処理します。

SimpleMFRC522.pyMFRC522.py ファイルを取り、少数の関数のみを扱えるようにすることでファイルを大幅に簡素化します。

sudo pip3 install mfrc522

ステップ3: コードのフォルダーに入る。

cd /home/pi/davinci-kit-for-raspberry-pi/python/2.2.7

ステップ4: EXEファイルを実行する。

sudo python3 2.2.7_read.py
sudo python3 2.2.7_write.py

注釈

2.2.7_read.py を実行すると、カードの ID とテキストがシェルに出力されます。 2.2.7_write.py を実行した後、最初にメッセージを書き込み、Enter を押して確認し、最後にカードを MFRC522 RFID モジュールに置いて書き込みを完了する必要があります。

コード

注釈

以下のコードを 変更/リセット/コピー/実行/停止 できます。 ただし、その前に、 davinci-kit-for-raspberry-pi/python のようなソースコードパスに移動する必要があります。

# read
import time
from mfrc522 import SimpleMFRC522
import RPi.GPIO as GPIO

reader = SimpleMFRC522()

def main():
    while True:
        print("Reading...Please place the card...")
        id, text = reader.read()
        print("ID: %s\nText: %s" % (id,text))
        time.sleep(3)

def destroy():
    GPIO.cleanup()

if __name__ == '__main__':
    try:
        main()
    # When 'Ctrl+C' is pressed, the program destroy() will be  executed.
    except KeyboardInterrupt:
        destroy()
# write
from mfrc522 import SimpleMFRC522
import RPi.GPIO as GPIO

reader = SimpleMFRC522()

def main():
    while True:
        text = input('Please write new data:')
        print("Please place the card to complete writing")
        reader.write(text)
        print("Data writing is complete")

def destroy():
    GPIO.cleanup()

if __name__ == '__main__':
    try:
        main()
    # When 'Ctrl+C' is pressed, the program destroy() will be  executed.
    except KeyboardInterrupt:
        destroy()

コードの説明

reader = SimpleMFRC522()

SimpleMFRC522() クラスをインスタンス化します。

reader.read()

この機能は、カードデータを読み取るために使用されます。 読み取りが成功すると、IDとテキストが返されます。

reader.write(text)

この機能は、カードに情報を書き込むために使用されます。「Enter」キーを押して書き込みを終了します。 text は、カードに書き込まれる情報です。

現象画像

_images/image233.jpeg