2

I've been following the instructions of this blog post to set up an RC522 RFID reader and the test script shows me that the reader is working fine. On the other hand I had problems using this tutorial:

git clone https://github.com/mxgxw/MFRC522-python cd MFRC522-python sudo python MFRC522.py

When I run the MFRC22.py, nothing happens. I tried running it with verbose output (here). Somewhere it says:

Traceback (most recent call last):
  File "MFRC522.py", line 5, in <module>
    import MFRC522
  File "/home/pi/SPI-Py/MFRC522.py", line 21, in <module>
    MIFAREReader = MFRC522.MFRC522()
TypeError: 'module' object is not callable

This is the python code:

#!/usr/bin/env python
# -*- coding: utf8 -*-

import RPi.GPIO as GPIO
import MFRC522
import signal

continue_reading = True

# Capture SIGINT for cleanup when the script is aborted
def end_read(signal,frame):
    global continue_reading
    print "Ctrl+C captured, ending read."
    continue_reading = False
    GPIO.cleanup()

# Hook the SIGINT
signal.signal(signal.SIGINT, end_read)

# Create an object of the class MFRC522
MIFAREReader = MFRC522.MFRC522()

# Welcome message
print "Welcome to the MFRC522 data read example"
print "Press Ctrl-C to stop."

# This loop keeps checking for chips. If one is near it will get the UID and authenticate
while continue_reading:

    # Scan for cards    
    (status,TagType) = MIFAREReader.MFRC522_Request(MIFAREReader.PICC_REQIDL)

    # If a card is found
    if status == MIFAREReader.MI_OK:
        print "Card detected"

    # Get the UID of the card
    (status,uid) = MIFAREReader.MFRC522_Anticoll()

    # If we have the UID, continue
    if status == MIFAREReader.MI_OK:

        # Print UID
        print "Card read UID: "+str(uid[0])+","+str(uid[1])+","+str(uid[2])+","+str(uid[3])

        # This is the default key for authentication
        key = [0xFF,0xFF,0xFF,0xFF,0xFF,0xFF]

        # Select the scanned tag
        MIFAREReader.MFRC522_SelectTag(uid)

        # Authenticate
        status = MIFAREReader.MFRC522_Auth(MIFAREReader.PICC_AUTHENT1A, 8, key, uid)

        # Check if authenticated
        if status == MIFAREReader.MI_OK:
            MIFAREReader.MFRC522_Read(8)
            MIFAREReader.MFRC522_StopCrypto1()
        else:
              print "Authentication error"

What am I doing wrong?

1 Answer 1

2

It seems like you messed up with your files which caused that.

For example, the git repo has MFRC522.py file already and the line 21 reads something else. It seems like you overwrote the file with something else. You need to name your own files something different (prefix it with "my" or your name just to be sure).

You don't need to run the original MFRC522.py, this is just a library and intended to be used by other scripts.

The git repo has the following scripts which you can actually run: Dump.py, Read.py, and Write.py

If you want to add a new script, it must be named something different from MFRC522.py because it already exists.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge that you have read and understand our privacy policy and code of conduct.

Not the answer you're looking for? Browse other questions tagged or ask your own question.