RFID-RC522でICカード読み取り
配線
SDAーー24
SCKーー23
MOSIーー19
MISOーー21
IRQーー18
GNDーーGND
RSTーー22
3.3Vーー3.3v
設定
SPIモードを有効
Pi-rc255ライブラリのインストール
sudo pip3 install pi-rc522
以下ソース
#!/usr/bin/env python3.5
#-- coding: utf-8 --
import RPi.GPIO as GPIO
from pirc522 import RFID
import time
GPIO.setmode(GPIO.BOARD)
GPIO.setwarnings(False)
rc522 = RFID()
print('Tack card (end, Ctrl + c): ')
#
if __name__ == '__main__':
try:
while True :
rc522.wait_for_tag()
(error, tag_type) = rc522.request()
if not error :
(error, uid) = rc522.anticoll()
if not error :
print('RFID : {}'.format(uid))
time.sleep(1)
except KeyboardInterrupt:
pass
実行結果
Tack card (end, Ctrl + c): RFID : [19, 215, 73, 191, 50] RFID : [101, 31, 65, 119, 76]
RFID 19,215,73,191,50 だが最後の50はカードメーカコード
UID 19,215,73,191 10進数
13,7,49,BF 16進数
おまけ
RC225に付属していたカードが不良で読み出せない
LEDで読み込み可能なら青LED
待機中なら赤LED
赤led+ 3
青led+ 5
LEDgndーー 200オーム ーーGND
以下ソース
#!/usr/bin/env python3.5
#-- coding: utf-8 --
import RPi.GPIO as GPIO
from pirc522 import RFID
import time
GPIO.setmode(GPIO.BOARD)
GPIO.setwarnings(False)
rc522 = RFID()
LED_AKA = 3
LED_AO = 5
GPIO.setup(LED_AKA, GPIO.OUT)
GPIO.setup(LED_AO, GPIO.OUT)
print('Tack card (end, Ctrl + c): ')
#On affiche un message demandant à l'utilisateur de passer son badge
if __name__ == '__main__':
try:
while True :
GPIO.output(LED_AKA, GPIO.LOW)
GPIO.output(LED_AO, GPIO.HIGH)
rc522.wait_for_tag()
(error, tag_type) = rc522.request()
if not error :
(error, uid) = rc522.anticoll()
if not error :
print('RFID : {}'.format(uid))
#print(uid)
GPIO.output(LED_AO, GPIO.LOW)
GPIO.output(LED_AKA, GPIO.HIGH)
time.sleep(1)
except KeyboardInterrupt:
GPIO.output(LED_AKA, GPIO.LOW)
GPIO.output(LED_AO, GPIO.LOW)
pass