Raspberry Pi 3 Model B & MIFARE RC522 RFID Tag Reading
Intro: Raspberry Pi 3 Model B & MIFARE RC522 RFID Tag Reading
*EDIT: This instructable was updated to use the latest raspbian version (2017-04-10)
This instructable is about reading rfid tags using the MIFARE RC522 RFID
module and a Raspberry pi 3 B. I'm not an expert in any way concerning electronics or IoT for that matter so I'm just sharing personal experience and the solution I found after nights of testing every proposed solution I came across the web.
The module I bought is using the SPI Interface. Not all modules support it. You might have bought an identical module that supports UART or some other interface. So before we begin check again that your module supports SPI.
STEP 1: Solder the Module Pins
IMPORTANT: Some shops ship the module with two pin headers. A straight-one and one in an L shape (90 degrees angle). If your module came with the pin header not soldered onto the module board then solder the module pins or else the module will not work.
This is my first soldering so don't do what I did. I put too much solder on the contacts which resulted in these little shiny balls of solder. For proper soldering, I followed Adafruit Guide To Excellent Soldering
STEP 2: Connect the Raspberry Pi GPIO Pins to the Module
Connect the Raspberry Pi GPIO pins to the module according to the next table:
Pin name Pin
SDA --> 24
SCK --> 23
MOSI --> 19
MISO --> 21
GND --> 6
RST --> 22
3.3V --> 1
I use a breadboard in my project. The connections are implemented in the same way, though. Feel free to connect the Pi's GPIO Pins directly to the module Pins if you have female-to-female jumper cables.
STEP 3: Install & Configure the Right Software
- Download & Install on your SD card the 2017-04-10-raspbian-jessie.zip
- When you're done with the installation, open a console and hit
raspi-config
- Use the interactive menu to enable the SPI Interface.
- Reboot your PI using:
sudo reboot
- When you login again check to see that the SPI Interface is enabled
sudo nano /boot/config.txt
Try to find a line that says:
dtparam=spi=on
If you see the above line then SPI is enabled
- Save & Reboot your PI using:
sudo reboot
- When you login again check to see that the spi_bcm2835 module is loaded
lsmod | grep spi
- Install python2.7-dev: [thanks Teenage kicks, IngmarV2]
sudo apt-get install python2.7-dev
- Download and Install SPI-Py executing the following commands:
git clone https://github.com/lthiery/SPI-Py.git
cd SPI-Py
sudo python setup.py install
Install MFRC522-python
git clone https://github.com/mxgxw/MFRC522-python.git
cd MFRC522-python
You should be ready to read your first RFID Tag! Type:
python Read.py
NOTE: You can install other python libraries too. This is just for reference.
STEP 4: Acknowledgements & Helpful Links
Here I'd like to acknowledge the work of others as I acquired a piece of information in every forum thread, article I came across and also post some helpful links for reference:
28 Comments
Haakima 2 years ago
Welcome to the MFRC522 data read example
Press Ctrl-C to stop.
i am not getting any uid's.
how can i solve this prob please
ChaitraN1 7 years ago
i followed all the steps you mentioned above but i am getting only these two lines as output. i updated and upgraded also.
Welcome to the MFRC522 data read example
Press Ctrl-C to stop.
i am not getting any uid's.
Haakima 2 years ago
kuldeep0001 6 years ago
i am also facing the same problem ..... so plz tell me what you did to resolve the problem
mbellas 7 years ago
Hi ChaitraN1,
I can't give you an answer if you don't provide any info. i.e. What is your module? What version of raspbian are you using? etc
Michael
mbellas 7 years ago
Hi ChaitraN1,
In the meantime I updated the instructable to use the latest raspbian version (2017-04-10). Please see if it resolves the issues you had.
Michael
DorianW4 7 years ago
I got exactly the same problem.
Followed the instruction, tripple checked the wiring, all I get is:
Welcome to the MFRC522 data read example
Press Ctrl-C to stop.
SPI Module is the spi_bcm2835
DorianW4 7 years ago
The RC522 Kit I use is this one:
http://www.ebay.de/itm/252715001811?_trksid=p2060353.m2749.l2649&ssPageName=STRK%3AMEBIDX%3AIT
DorianW4 7 years ago
Got mine to work, was a broken RC522 module.
Thanks to mbellas for the help. :)
NicholasH91 6 years ago
sameera48 6 years ago
1.As connect to 7" inch LCD used resolution of 800*400 pixel &the capactive touch.HDMI and USB its working properly.
2.while using 2nd link RFID RC522 reader is working properly
3.while join the both RFID unable to Read the Tags
4.what is the steps for I2C to connect the RFID RC522 to raspberrypi which library file was installed in that
can u Checking following list may resolve
the issue.
>>https://alselectro.wordpress.com/2016/08/20/7-touch-screen-lcd-for-raspberry-pi-driver-installation-with-virtual-keyboard/
>>http://raspmer.blogspot.in/2015/07/how-to-use-rfid-rc522-on-raspbian.html
AlishaD10 6 years ago
Thanks for the instructable! Followed all the steps but I am getting the following error:
File "Read.py", line 47
key = [0xFF,0xFF,0xFF,0xFF,0xFF,0xFF]
^
SyntaxError: invalid syntax
How can I fix this?
mbellas 6 years ago
Hi AlishaD10,
try to clone MFRC522-python from github again. Perhaps you edited the file?
Michael
AlishaD10 6 years ago
Thanks Michael, the error I now get is
ImportError: No module named spi
I have read about this happening (SPI issues) with the new Raspberry Pi 3...but thought these issues were resolved in the new Rasbian version.
mbellas 6 years ago
Have you followed the steps above? It seems that your SPI is not enabled? If the problem continues send me a PM,
Michael
AlishaD10 6 years ago
Heya,
I enabled the SPI and double checked with lsmod | grep spi...still no joy.
I managed to get it working using some different code. - https://www.raspberrypi.org/forums/viewtopic.php?p...
Thanks for your help :)
vjm2 6 years ago
Thanks for this great tutorial.
I could set up my RC522 pretty fast. But how exactly can I write the RFID tag?
I tried: sudo python Write.py
Which somehow writes: Sector 8 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
to the card.
But how can I add a specific value, for example my name and a number, could not find any example on google, maybe you have a good link/tutorial ?
mbellas 6 years ago
Ι haven't tried to write on a tag before but concerning Write.py what it does is that it writes data on the card and then deletes it (replacing it with zeros).
data = []
# Fill the data with 0x00
for x in range(0,16):
data.append(0x00)
print "Now we fill it with 0x00:"
MIFAREReader.MFRC522_Write(8, data)
print "\n"
My point is that this script already writes data to your tags. Perhaps you can adapt it to your needs,
Michael
meier_jrg 7 years ago
I got everythink to work with the standard tag and card (the ones that came with the RFID-RC522 module). I also have different tags (NTAG216 888 Byte) that I want to use with the module but I get authentication errors. Can you help me?
dharris451 7 years ago
Great article mbellas.
I followed the steps of the project and now I have a raspberry (B) with connected RC522; using the example snippet Read.py I can obtain the ID code of a NFC tag (four integers, eg formatted as follows: 136.34.54.67).
However, I need to read and write the contents of the tag, for instance a brief text string to be read and spoken out with text to speech software (I use Festival, correctly working on my raspberry).
The problem is that I only can read the tag ID and not other tag contents; any hint to solve this problem?