RaspberryPiでICカード

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


カテゴリー iot