
Raspberry PiでRFIDリーダーを使用します。
コメントⓘ Cet article peut avoir été partiellement ou totalement traduit à l'aide d'outils automatiques. Nous nous excusons des erreurs que cela pourrait engendrer.
このチュートリアルは、Raspberry Piで電子機器を発見するためのファイルの2番目の部分です。まだ読んでいない場合は、Raspberry PiでLEDを制御するための最初のチュートリアルを参照することをお勧めします。
識別システム、在庫管理、支払い、またはホームオートメーションのいずれであっても、RFIDチップはますます使用されています。
このチュートリアルでは、Raspberry PiとRC522 RFIDリーダーでRFIDカードを読み取る方法を説明します。
チュートリアルの最後に、RFIDバッジを読み取り、それが期待どおりのものかどうかを確認し、結果に応じて緑または赤のLEDを点灯させることができます。あなたがしなければならないすべてはあなたの選んだプロジェクトにこの基本的な例を適合させることです!
必要な装備
このチュートリアルを完了するには、次の資料が必要です。
RC522 RFIDリーダーを組み立てる
RC522 RFIDモジュールを受け取ると、2 x 8ピンのセットが付属していることがわかります。したがって、最初のステップは、これらのピンのうち8つをRFIDリーダーにはんだ付けすることです。パニックにならないでください、はんだ付けはとても簡単です!
したがって、RFIDカードにあるスロットにPINを挿入し、アイロンではんだ付けする必要があります。

一度も溶接したことがない場合は、この優れたガイドを参考にして、framboise314.frのFrançoisから溶接する方法を学んでください。
RFIDリーダーとLEDをRaspberry Piに接続する
RFIDバッジを読み取ってLEDを制御できるようにするコードを書く前に、すべてのコンポーネントをRaspberry Piに接続する必要があります。
念のため、コンポーネントの接続と取り外しは常にRaspberry Piをオフにして行う必要があります。
RC522 RFIDリーダーをRaspberry Piに接続する
プラグインする最初のコンポーネントはRFIDリーダーです。
RFIDリーダーを制御するには、外部ライブラリを使用します。残念ながら、これはコードに直接入力されたGPIOポートで記述されています。つまり、これらを個別に構成することはできず、ライブラリで提供されているものとまったく同じポートを使用する必要があります。
接続する必要があるRaspberry PiのリーダーポートとGPIOポートの一覧表を以下に示します。

このシリーズの最初のチュートリアルには、Raspberry PiのGPIOポートのマップが記載されています。
LEDを接続する
RFIDリーダーの後、LEDをRaspberry Piに接続しましょう。
非常に単純なアセンブリを作成します。各LEDのアノード(細長い脚)はGPIOポートに接続され、2つのLEDのアノードは同じ抵抗に接続され、それ自体がRaspberry PiのGroundタイプのGPIOポートに接続されます。
したがって、2つのLEDに1つの抵抗を使用し、ケーブルの数を制限します。
最後に、RFIDカードとLEDがPiに接続されると、これに似たアセンブリができます。

RFIDバッジを読み取るプログラムを作成します。
機能回路があり、RFIDリーダーを使用するために必要なRaspberry PiのSPIポートをアクティブ化し、RFIDバッジを読み取るプログラムを記述するだけです。
前のチュートリアルと同様に、プログラムはPythonで作成されます。このチュートリアルはPythonコースではありません。プログラムについて簡単に説明します。Pythonの詳細については、Python入門プログラミングコースをご覧ください。
Raspberry PiのSPIプロトコルをアクティブ化する
プログラムを作成する前に、Raspberry PiでSPIプロトコルを有効にして、RFIDモジュールを使用できるようにします。
それをアクティブにするには、コマンドを実行するだけです sudo raspi-config
、ラズベリーで、次に選択します Interfacing Options
、SPI
、Yes
そして最後に Finish
。
pi-rc522ライブラリをインストールする
最後の前提条件として、RC522プレーヤーを制御できるPython3 "pi-rc522"ライブラリをインストールします。
PythonのライブラリマネージャーであるPip3を使用します。
次のコマンドを実行するだけです。
sudo pip3 install pi-rc522
RFIDバッジの識別子を読み取るプログラムを作成する
各RFIDバッジには一意の識別子があります。これは、この識別子を読み取り、それを承認済み識別子のリストと比較することで、バッジが承認されているかどうかを確認できます。
したがって、RFIDバッジの一意の識別子を読み取ることができるプログラムを作成します。
前のチュートリアルで行ったように、プログラムをフォルダーに書き込みます /home/pi/electronic
(まだ作成していない場合は、フォルダーを作成します)。
このフォルダにファイルを作成します read_rfid_uid.py
次のコードをその中に入れます:
#!/usr/bin/env python3.5
#-- coding: utf-8 --
import RPi.GPIO as GPIO #Importe la bibliothèque pour contrôler les GPIOs
from pirc522 import RFID
import time
GPIO.setmode(GPIO.BOARD) #Définit le mode de numérotation (Board)
GPIO.setwarnings(False) #On désactive les messages d'alerte
rc522 = RFID() #On instancie la lib
print('En attente d'un badge (pour quitter, Ctrl + c): ') #On affiche un message demandant à l'utilisateur de passer son badge
#On va faire une boucle infinie pour lire en boucle
while True :
rc522.wait_for_tag() #On attnd qu'une puce RFID passe à portée
(error, tag_type) = rc522.request() #Quand une puce a été lue, on récupère ses infos
if not error : #Si on a pas d'erreur
(error, uid) = rc522.anticoll() #On nettoie les possibles collisions, ça arrive si plusieurs cartes passent en même temps
if not error : #Si on a réussi à nettoyer
print('Vous avez passé le badge avec l'id : {}'.format(uid)) #On affiche l'identifiant unique du badge RFID
time.sleep(1) #On attend 1 seconde pour ne pas lire le tag des centaines de fois en quelques milli-secondes
ファイルが保存されると、次のコマンドで実行が許可されます。
sudo chmod +x /home/pi/electronic/read_rfid_uid.py
これで、次のコマンドでプログラムを呼び出すことができます。
/home/pi/electronic/read_rfid_uid.py
リーダーの前でRFIDバッジを通過するたびに、その一意の識別子が表示されます。
バッジが有効かどうかを表示するプログラムを作成します。
バッジの一意の識別子を読み取ることができるようになったので、先ほどのコードを変更して、読み取った識別子をプログラムで記述された識別子と比較するだけです。
したがって、前のプログラムを少し変更して、読み込まれたuidとプログラムで記述されたuidを比較し、結果に応じて赤または緑のLEDを点灯させます。
以前のファイルを新しいファイルにコピーします verify_rfid.py
以下のコードに合わせて修正します。
行を編集 RFID_UID
RFIDタグのIDを入力します!
#!/usr/bin/env python3.5
#-- coding: utf-8 --
import RPi.GPIO as GPIO #Importe la bibliothèque pour contrôler les GPIOs
from pirc522 import RFID
import time
GPIO.setmode(GPIO.BOARD) #Définit le mode de numérotation (Board)
GPIO.setwarnings(False) #On désactive les messages d'alerte
LED_RED = 3 #Définit le numéro du port GPIO qui alimente la led rouge
LED_GREEN = 5 #Définit le numéro du port GPIO qui alimente la led verte
RFID_UID = [21, 35, 5, 43, 57] #Définit l'UID du badge RFID
#Définit la fonction permettant d'allumer une led
def turn_led_on (led) :
GPIO.setup(led, GPIO.OUT) #Active le contrôle du GPIO
GPIO.output(led, GPIO.HIGH) #Allume la led
#Définit la fonction permettant d'éteindre une led
def turn_led_off (led) :
GPIO.setup(led, GPIO.OUT) #Active le contrôle du GPIO
GPIO.output(led, GPIO.LOW) #Eteind la led
#Définit la fonction permettant d'allumer la rouge et éteindre la verte
def turn_red_on () :
turn_led_off(LED_GREEN) #Eteind la led verte
turn_led_on(LED_RED) #Allume la led rouge
#Définit la fonction permettant d'allumer la verte et éteindre la rouge
def turn_green_on () :
turn_led_off(LED_RED) #Eteind la led rouge
turn_led_on(LED_GREEN) #Allume la led verte
rc522 = RFID() #On instancie la lib
print('En attente d'un badge (pour quitter, Ctrl + c): ') #On affiche un message demandant à l'utilisateur de passer son badge
#On va faire une boucle infinie pour lire en boucle
while True :
rc522.wait_for_tag() #On attnd qu'une puce RFID passe à portée
(error, tag_type) = rc522.request() #Quand une puce a été lue, on récupère ses infos
if not error : #Si on a pas d'erreur
(error, uid) = rc522.anticoll() #On nettoie les possibles collisions, ça arrive si plusieurs cartes passent en même temps
if not error : #Si on a réussi à nettoyer
if RFID_UID == uid :
print('Badge {} autorisé !'.format(uid))
turn_green_on()
else :
print('Badge {} interdit !'.format(uid))
turn_red_on()
time.sleep(1) #On attend 1 seconde pour ne pas lire le tag des centaines de fois en quelques milli-secondes
プログラムを起動してテストするだけです!
その後、スマートロックの作成や、RFIDタグを使用したジュークボックスなど、独自のプロジェクトにコードを適合させることができます。
詳細については、このチュートリアルのすべてのコードをRaspbian FranceのGithubで入手できます。
次のチュートリアルでは、Raspberry Piを使用してサーボモーターを制御する方法を説明します。