在这个Raspberry Pi RFID RC522教程中,我将先容如何设置和连接Raspberry Pi和RFID RC522芯片。这是一个很实用的教程,以便于你之后各种不同的项目,例如利用它作为考勤系统、利用它来打开一个锁。
RFID RC522是基于MFRC522微掌握器的非常低本钱的RFID(射频识别)读写器。该微掌握器通过SPI协议供应数据,并通过创建一个13.56MHz的电磁场来事情,该电磁场用于与RFID标签进行通信。

确保你的RFID RC522购买的标签在13.56MHz的频率上运行,否则将无法读取。

本教程将示范如何连接RC522以及编写Python脚本以与芯片进行交互,以便读取和写入RFID标签。如果你想展示一些数据信息,你可以利用像16×2液晶显示器扩展这个教程。
设备清单树莓派 2/3
Micro SD卡
RC522 RFID
面包板
组装RFID RC522
购买RFID RC522读卡器时你会把稳到的一件事情是,个中90%的人没有利用已经焊接好的插头引脚。这意味着你必须自己做,幸运的是,焊接插头引脚是一个相称大略的任务,乃至对付初学者。
1.首先,如果您利用RC522收到的标头引脚不是精确的大小,那么您只有一行8个引脚。
2.将接头引脚向上穿过RC522的孔。一个便利的窍门是把标头引脚的长边插入面包板,然后把电路放在标头引脚的顶部。面包板将握住引脚,使其更随意马虎焊接到RFID RC522电路。
3.现在利用热的烙铁和一些焊料,逐步地焊接每个引脚。请记住,在焊接之前,最好轻微加热接头,这样可以确保焊料更多地粘附在接头上,并减少了形成冷接头的机会。我们还建议小心利用的焊料量。
4.现在头插针已经焊接到您的RFID电路上,现在可以利用了,您可以连续教程。
连接RFID RC522
在您的RFID RC522,你会创造,有它8个可能的连接,这是SDA(串行数据旗子暗记),SCK(串行时钟),MOSI(主出从入),MISO(主入从出),IRQ(中断要求),GND(地面电源),RST(复位电路)和3.3V(3.3V电源输入)。我们须要连接所有这些,但IRQ连接到我们的Raspberry Pi的GPIO引脚。
您可以将这些直接连接到GPIO引脚,或者像我们在本教程中所做的那样,将RFID RC522插入我们的面包板,然后从那里连接到我们的Raspberry Pi的GPIO引脚。
将RFID RC522连接到Raspberry Pi相称大略,只须要将7个GPIO引脚直接连接到RFID阅读器。请遵照下表,并查阅我们的GPIO指南,查看连接RC522所需的GPIO引脚位置。
SDA连接到引脚24。
SCK连接到引脚23。
MOSI连接到引脚19。
MISO连接到引脚21。
GND连接到引脚6。
RST连接到引脚22。
3.3v连接到引脚1。
为RFID RC522设置Raspbian
在我们开始在我们的Raspberry Pi上利用RFID RC522的过程之前,我们将首先对其配置进行变动。默认情形下,树莓派的SPI(串行外设接口)被禁用不要担心,由于重新启用此接口非常大略,只需按照以下步骤配置Raspberry Pi和Raspbian即可利用SPI接口。
1.首先打开raspi-config工具,打开终端并运行以下命令:
sudo raspi-config
2.该工具将加载一个显示各种不同选项的屏幕。如果您想深入理解这些选项,可以参阅本书入门部分的raspi-config指南。
在这里利用箭头键选择“ 5接口选项 ”。选中此选项后,按Enter键。
3.现在不才一个屏幕上,您想要再次利用箭头键选择“ P4 SPI ”,再次按Enter键选择高亮显示的选项。
4.现在将讯问您是否要启用SPI接口,利用箭头键选择Yes,然后按Enter连续。你须要等一下子,而raspi- config工具在启用SPI的时候也是这么做的。
5.一旦通过raspi-config工具成功启用了SPI接口,您该当会看到屏幕上涌现以下文本:“ SPI接口已启用 ”。
在SPI接口完备启用之前,我们将首先重新启动Raspberry Pi。要做到这一点首先回到终端按回车,然后按ESC。
在Raspberry Pi 的终端中输入以下的linux命令重启你的Raspberry Pi。
sudo reboot
6.一旦Raspberry Pi完成重启,我们现在可以检讨确认它已经被启用。最大略的方法是运行以下命令查看是否列出了spi_bcm2835。
lsmod | grep spi
如果你看到spi_bcm2835,那么你可以连续,跳到7和8,进行到下一节。如果由于某种缘故原由,当您输入上一个命令时没有涌现,请考试测验实行以下3个步骤。
7.如果由于某种缘故原由SPI模块没有激活,我们可以通过在我们的Raspberry Pi上运行以下命令来手动编辑启动配置文件。
sudo nano /boot/config.txt
8.在配置文件中,利用Ctrl + W查找“ dtparam = spi = on ”。
如果您找到了,请检讨前面是否有#号。如果这是删除它,由于这是注释激活线。如果找不到该行,只需在文件底部添加“ dtparam = spi = on ”即可。
完成变动后,可以按Ctrl + X,然后按Y,然后按Enter以保存变动。
现在,您可以再次从第5步开始,重新启动Raspberry Pi,然后检讨模块是否已启用。
为RFID RC522准备好Python现在我们已经将RFID RC522电路连接到Raspberry Pi,现在我们可以启动它,开始编程Python中的大略脚本以与芯片进行交互。
我们将向您展示如何编写的脚本将基本向您展示如何从RFID芯片读取数据以及如何写入数据。这些将为您供应如何处理数据的基本观点,并将成为更多RFID RC522教程的根本。
1.在开始编程之前,我们首先须要更新我们的Raspberry Pi,以确保其运行所有软件的最新版本。在Raspberry Pi上运行以下两个命令来更新它。
sudo apt-get update sudo apt-get upgrade
2.现在我们须要做的末了一件事是安装python2.7-dev包,只需在Raspberry Pi上运行以下命令即可安装它。
sudo apt-get install python2.7-dev
3.首先,我们必须首先克隆Python Library SPI Py并将其安装到我们的Raspberry Pi。这个库有助于处理与SPI的交互,并且是本教程的关键组件,由于我们须要Raspberry Pi与RFID RC522进行交互。
在Raspberry Pi上运行以下两个命令来克隆源代码。
cd ~git clone https://github.com/lthiery/SPI-Py.git
4.现在将Python Py Python库克隆到我们的Raspberry Pi中,我们须要安装它,这是非常大略的,由于我们须要做的便是变动它的目录并在Raspberry Pi上运行一个大略的python命令。
cd ~/SPI-Pysudo python setup.py install
5.现在我们已经安装了SPI-Py,现在我们可以从PiMyLifeUp Github中克隆我们的RFID RC522 Python代码。这个存储库中包含两个文件:
MFRC522.py是RFID RC522电路的一个实现。
SimpleMFRC522.py采取MFRC522.py文件,并大大简化它。
为了克隆这个仓库,你可以在Raspberry Pi中输入以下两个命令。
cd ~git clone https://github.com/pimylifeup/MFRC522-python.git
6.现在将存储库保存到我们的Raspberry Pi中,我们可以开始为我们的RFID RC522进行编程。首先,我们将向您展示如何利用RC522将数据写入RFID卡。只需进入下一节开始编程我们的第一个Python脚本。
用RFID RC522写入
对付我们的第一个Python脚本,我们将向您展示如何将RC522的数据写入您的RFID标签。由于SimpleMFRC522脚本,这将是相对大略的,但我们仍旧会进入每个部分的代码字。
1.首先将目录切换到我们新克隆的文件夹,然后开始编写我们的Write.py python脚本。
cd ~/MFRC522-pythonsudo nano Write.py
2.在这个文件中,写下面几行代码。这基本上会哀求您输入笔墨,然后将笔墨写入RFID标签。
#!/usr/bin/env pythonimport RPi.GPIO as GPIOimport SimpleMFRC522
这段代码的第一行有助于见告终端如何阐明文件,它让它知道它该当在实行时利用Python,而不是其他的东西,如Bash。
我们的第一个导入,RPi.GPIO具有与GPIO引脚交互所需的所有功能,我们须要这个来确保在脚本运行完成后它们被打消。
第二次导入,在我们的SimpleMFRC522库中导入,这是我们将用来实际与RFID RC522进行交谈的地方,与基本的MFRC522库比较,它极大地简化了处理芯片。
reader = SimpleMFRC522.SimpleMFRC522()
这一行创建一个SimpleMFRC522作为工具的副本,运行它的设置功能,然后将它存储在我们的reader变量中。
try: text = raw_input('New data:') print(\公众Now place your tag to write\公众) reader.write(text) print(\"大众Written\"大众)
我们的下一个代码块保存在一个try语句中,这样我们就可以捕获任何非常并精确清理。确保在考试测验之后保留“选项卡”:由于Python对空缺敏感,并且它在代码块之间有所不同。
这里的第二行是从命令行读入一个输入,我们利用Python 2.7中的raw_input来读入所有的输入并将其存储在我们的文本变量中。
通过第三行,我们利用print()来关照用户,他们现在可以将RFID标签放在阅读器上进行书写。
之后,在我们的第四行代码中,我们利用reader工具将存储在文本变量中的值写入RFID标签,这基本上见告RFID RC522电路将文本值写入某个扇区。
末了在第五行代码中,我们再次利用print()来关照用户我们已经成功写入RFID标签。
finally: GPIO.cleanup()
我们末了的两行代码基本上处理脚本的退出。末了总是在try语句之后涌现,意思是不管我们运行GPIO.cleanup()函数。这是至关主要的,由于清理失落败可能会阻挡其他脚本正常事情。
3.一旦你完成了你的脚本的写作,它该当看起来如下所示。
#!/usr/bin/env pythonimport RPi.GPIO as GPIOimport SimpleMFRC522reader = SimpleMFRC522.SimpleMFRC522()try: text = raw_input('New data:') print(\"大众Now place your tag to write\"大众) reader.write(text) print(\公众Written\"大众)finally: GPIO.cleanup()
一旦你感到高兴的是代码看起来是精确的,你可以通过按下Ctrl + X然后按下Y然后末了按Enter来保存文件。
4.现在我们已经写我们的脚本,我们将要末了测试它。在测试脚本之前,确保您有一个方便的RFID标签。准备好之后,在Raspberry Pi的终端中输入以下命令。
sudo python Write.py
5.你将被哀求写入新的数据,在我们的例子中,我们只是大略地输入pimylifeup。当你对自己写的东西满意的时候,按下回车键。
6.完成后,将RFID标签放在RFID RC522电路的顶部。一旦检测到,它会立即将新数据写入标签。如果成功,您该当看到“ 写入 ”涌如今您的命令行中。
您可以查看下面的示例输出以查算作功运行的样子。
pi@raspberrypi:~/MFRC522-python $ sudo python Write.pyNew data:pimylifeupNow place your tag to writeWritten
7.现在,您已经成功编写了您的Write.py脚本,现在我们可以连续向您展示如何在本教程的下一部分中从RFID RC522读取数据。
用RFID RC522读取
现在我们已经写了我们的脚本来利用我们的RC522来写入RFID标签,现在我们可以编写一个脚本来读取这个数据。
1.首先,通过变动目录来确保我们位于精确的位置,然后运行nano开始编写Read.py脚本。
cd ~/MFRC522-pythonsudo nano Read.py
2.在这个文件中,写下面几行代码。这个脚本将基本上等待,直到您将您的RFID标签放在RFID RC522阅读器上,它将输出标签上读取的数据。
#!/usr/bin/env pythonimport RPi.GPIO as GPIOimport SimpleMFRC522
第一行代码基本上见告操作系统如何处理文件,当用户实行它。否则,它会考试测验运行它作为一个普通的脚本文件,而不是一个python文件。
第一个导入是RPi.GPIO。这个库包含了所有处理Raspberry Pi的GPIO引脚的函数,我们紧张导入这个函数来确保在脚本实行完成后进行清理。
第二个导入是SimpleMFRC522。这个脚本包含一些帮助功能,使得从RFID RC522的写入和读取处理变得非常随意马虎,没有它,我们大略的脚本将变得相称长。
reader = SimpleMFRC522.SimpleMFRC522()
这一行非常主要,由于它调用SimpleMFRC522的创建函数,然后将其作为工具存储到我们的reader变量中,以便稍后与之交互
try: id, text = reader.read() print(id) print(text)
下一个代码块包含在一个try语句中,我们利用它来捕获可能发生的非常,并很好地处理它们。您须要确保在try之后利用“ tabs ”,由于Python对空缺敏感。
这段代码中的第二行打电话给我们的阅读器工具,在这种情形下,它基本上见告电路开始读取放置在RC522阅读器顶部的任何RFID标签。
通过第三行和第四行,我们利用print()打印出读取RFID芯片时收到的信息,个中包括与RFID标签关联的ID和存储在标签上的文本。
finally: GPIO.cleanup()
末了两行代码处理脚本的终止。finally语句总是在try语句之后触发,纵然我们得到一个非常。
这可以确保不管我们运行GPIO.cleanup()函数。
由于未能打消GPIO,以是非常主要,可以防止其他脚本正常事情。
3.现在您已经完成了为您的RFID RC522 编写您的Read.py脚本,它该当看起来如下所示:
#!/usr/bin/env pythonimport RPi.GPIO as GPIOimport SimpleMFRC522reader = SimpleMFRC522.SimpleMFRC522()try: id, text = reader.read() print(id) print(text)finally: GPIO.cleanup()
一旦你确定你已经输入了精确的代码,你可以通过按Ctrl + X然后按Y然后末了按Enter来保存文件。
4.现在我们已经完成了我们的Read.py脚本,我们须要测试它。在我们测试脚本之前,捉住一个你想读的RFID标签。一旦你准备好了,在Raspberry Pi的终端中输入以下命令。
sudo python Read.py
5.现在脚本正在运行,您只需将您的RFID标签放在RFID RC522电路的顶部。一旦Python脚本检测到RFID标签被放置在顶部,它将立即读取数据并将其打印回给您。
下面显示了一个成功输出的例子。
pi@raspberrypi:~/MFRC522-python $ sudo python Read.py827843705425pimylifeup
7.如果您成功从您的Read.py脚本吸收到数据,并利用您的Write.py脚本将文本推送到卡上,那么您已经成功设置了Raspberry Pi来连接RFID RC522电路。
在稍后的教程中,我们将会深入磋商这些脚本和RFID芯片。这包括探索如何在其他酷派DIY Pi项目中设置考勤系统。
如果您喜好这款Raspberry RFID RC522教程,或有任何反馈,请随时不才面留言!










