将PN532与Raspberry Pi一起使用

Using the PN532 with the Raspberry Pi

PN532是一种多功能的NFC(近场通信)模块,可用于读取和编写NFC标签以及实现RFID系统。将PN532与Raspberry Pi一起使用,您可以将NFC功能集成到您的项目中,以供访问控制,无接触式付款和IoT设备等应用程序。该指南将带您进行设置,并使用覆盆子Pi使用PN532。


你需要什么

  1. 覆盆子pi (任何具有GPIO支持的模型,例如PI 3,PI 4)
  2. PN532 NFC模块
  3. 面包板和跳线电线
  4. SSH访问Raspberry Pi或连接的键盘的计算机并监视
  5. Python安装在Raspberry Pi上

步骤1:将PN532接线到Raspberry Pi

PN532模块支持多个通信协议,包括I2C,SPI和UART。本指南为简单起见使用I2C接口。

连接(I2C模式)

PN532针 覆盆子Pi Pin
VCC 3.3V(引脚1)
gnd 地面(引脚6)
SDA SDA(引脚3,GPIO2)
SCL SCL(引脚5,GPIO3)
SEL0 gnd
SEL1 VCC

笔记: SEL0和SEL1引脚确定通信模式。将SEL0连接到GND和SEL1与VCC选择I2C模式。


步骤2:在Raspberry Pi上启用I2C接口

  1. 打开Raspberry Pi配置工具:
    sudo raspi-config
    
  2. 导航到 接口选项> I2C 并启用它。
  3. 重新启动覆盆子Pi:
    sudo reboot
    

步骤3:安装所需的工具和库

  1. 更新您的Raspberry Pi:
    sudo apt update && sudo apt upgrade -y
    
  2. 安装I2C工具:
    sudo apt install -y i2c-tools
    
  3. 安装用于I2C通信和PN532功能的Python库:
    pip install adafruit-circuitpython-pn532
    

步骤4:验证连接

  1. 使用 i2cdetect 在I2C总线上检测到PN532:
    sudo i2cdetect -y 1
    
  2. 您应该在地址看到PN532 0x24 或者 0x48。如果不:
    • 检查您的布线。
    • 确保PN532供电。

步骤5:使用Python读取NFC标签

以下Python脚本演示了如何使用PN532读取NFC标签。

Python代码示例

import board
import busio
from adafruit_pn532.i2c import PN532_I2C

# I2C connection setup
i2c = busio.I2C(board.SCL, board.SDA)
pn532 = PN532_I2C(i2c, debug=False)

# Configure PN532 to read NFC tags
pn532.SAM_configuration()

print("Waiting for an NFC tag...")

while True:
    uid = pn532.read_passive_target(timeout=0.5)
    if uid is not None:
        print(f"Found NFC tag with UID: {uid.hex()}")

步骤6:PN532的应用

  1. 访问控制: 创建一个基于NFC的门锁系统。
  2. 非接触式付款: 使用NFC卡模拟支付系统。
  3. 物联网项目: 使用NFC标签触发自动化事件。
  4. 数据记录: 将数据写入NFC标签以进行库存或跟踪目的。

故障排除

  1. 未检测到设备:

    • 验证SDA和SCL连接。
    • 确保在Raspberry Pi上启用I2C接口。
    • 检查I2C模式的SEL0和SEL1 PIN配置。
  2. 读取错误:

    • 确保NFC标签在PN532的范围内。
    • 检查金属物体或其他电子设备的干扰。
  3. I2C错误:

    • 确保I2C总线上没有矛盾的设备。

结论

PN532 NFC模块是用于在Raspberry Pi项目中添加NFC和RFID功能的多功能工具。通过遵循本指南,您可以设置并使用PN532用于访问控制,IoT自动化和无接触式数据交换等应用程序。尝试阅读和编写NFC标签,以探索此功能强大的模块的全部潜力!

发表评论

Notice an Issue? Have a Suggestion?
If you encounter a problem or have an idea for a new feature, let us know! Report a problem or request a feature here.