树莓派使用RFID进行数据读写

沉潇先生 2019-08-03 AM 74℃ 1条

树莓派接线

  • 所需要组件

    • 树莓派
    • SD卡
    • RC522 RFID

组装RFID RC522

  • SDA(串行数据信号),SCK(串行时钟),MOSI(主出从入),MISO(主入从出),IRQ(中断请求),GND(地面电源),RST(复位电路)和3.3V(3.3V电源输入)
  • rpi-pins-40-0.png
  • SDA连接到引脚24`。
  • SCK连接到引脚23
  • MOSI连接到引脚19
  • MISO连接到引脚21
  • GND连接到引脚6
  • RST连接到引脚22
  • 3.3v连接到引脚1

为RFID 设置Raspbian

  • 默认情况下,树莓派的SPI(串行外设接口)被禁用
  • 重新启动SPI接口

    • 打开raspi-config工具

      • sudo raspi-config
      • 打开SPI
      • 选择5
      • 打开SPI
      • 选择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 PiRFID 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.pyRFID 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
    • 1551965199704.png

用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

1551966407676.png


标签: raspberry, RFID, SPI

非特殊说明,本博所有文章均为博主原创。

评论啦~



唉呀 ~ 仅有一条评论


  1. repostone
    repostone

    非技术的路过。

    回复 2019-08-21 15:53