*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 on 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
- Use the interactive menu to enable the SPI Interface.
- Reboot your PI using:
- 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:
If you see the above line then SPI is enabled
- Save & Reboot your PI using:
- 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
sudo python setup.py install
You should be ready to read your first RFID Tag! Type:
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: