所需要组件
- 树莓派
- SD卡
- RC522 RFID
组装RFID RC522
SDA
(串行数据信号),SCK
(串行时钟),MOSI
(主出从入),MISO
(主入从出),IRQ
(中断请求),GND
(地面电源),RST
(复位电路)和3.3V
(3.3V电源输入)- SDA
连接到引脚
24`。 SCK
连接到引脚23
。MOSI
连接到引脚19
。MISO
连接到引脚21
。GND
连接到引脚6
。RST
连接到引脚22
。3.3v
连接到引脚1
。
为RFID 设置Raspbian
- 默认情况下,树莓派的
SPI
(串行外设接口)被禁用 重新启动
SPI
接口打开
raspi-config
工具sudo raspi-config
- 选择
5
- 选择
SPI
- 一旦通过
raspi-config
工具成功启用了SPI
接口,您应该会看到屏幕上出现以下文本:“SPI
接口已启用 ”。
- 选择
重启
sudo reboot
验证是否开启成功
最简单的方法是运行以下命令查看是否列出了
spi_bcm2835
lsmod | grep spi
如果成功跳过下面,进行下一节.如果由于某种原因,当您输入上一个命令时没有出现,请尝试执行以下3个步骤.
如果由于某种原因
SPI
模块没有激活,我们可以通过在我们的Raspberry Pi上运行以下命令来手动编辑启动配置文件。sudo nano /boot/config.txt
在配置文件中,使用Ctrl + W查找
dtparam = spi = on
- 如果您找到了,请检查前面是否有
#
号。如果这是删除它,因为这是注释激活线。如果找不到该行,只需在文件底部添加dtparam = spi = on
即可 - 保存并退出
- 重启,并进行验证是否激活成功
安装使用RFID
先更新一下,确保所有软件为最新版本
sudo apt-get update sudo apt-get upgrade
安装
python2.7-dev
包sudo apt-get install python2.7-dev
首先,我们必须首先克隆
Python Library SPI Py
并将其安装到我们的Raspberry Pi
。这个库有助于处理与SPI
的交互,并且是本教程的关键组件,因为我们需要Raspberry Pi
与RFID RC522
进行交互。sudo git clone https://github.com/lthiery/SPI-Py.git
进行安装
cd SPI-Py/
sudo python setup.py install
现在我们已经安装了
SPI-Py
,现在我们可以从PiMyLifeUp Github
中克隆我们的RFID RC522 Python
代码。这个存储库中包含两个文件:MFRC522.py
是RFID RC522
电路的一个实现SimpleMFRC522.py
采用MFRC522.py
文件,并大大简化它。sudo git clone https://github.com/pimylifeup/MFRC522-python.git
用RFID RC522写入
编写
Write.py
cd MFRC522-python
sudo nano Write.py
#!/usr/bin/env python import RPi.GPIO as GPIO import 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()
函数。这是至关重要的,因为清理失败可能会阻止其他脚本正常工作
- 我们最后的两行代码基本上处理脚本的退出。最后总是在
- 保存并退出
运行
Write.py
sudo python Write.py
用RFID RC522读取
编写
Read.py
cd MFRC522-python
sudo nano Read.py
#!/usr/bin/env python import RPi.GPIO as GPIO import SimpleMFRC522
- 第一行代码基本上告诉操作系统如何处理文件,当用户执行它。否则,它会尝试运行它作为一个普通的脚本文件,而不是一个
python
文件
- 第一行代码基本上告诉操作系统如何处理文件,当用户执行它。否则,它会尝试运行它作为一个普通的脚本文件,而不是一个
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()
- 我们最后的两行代码基本上处理脚本的退出。最后总是在
try
语句之后出现,意思是不管我们运行GPIO.cleanup()
函数。这是至关重要的,因为清理失败可能会阻止其他脚本正常工作
- 我们最后的两行代码基本上处理脚本的退出。最后总是在
- 保存并退出
运行
Read.py
sudo python Read.py
看着好高端啊
非技术的路过。