You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

树莓派基于MFRC522的门禁系统代码异常求助

树莓派MFRC522门禁功能故障排查与修复

代码层面的核心问题

  • 类型不匹配导致权限判断失效:reader.read_id()返回的是整数类型,但你定义的allowed_id是字符串类型。整数与字符串永远不会相等,因此即使标签ID正确,也会被判定为拒绝访问。
  • 未定义变量引发报错:代码中print("Data:", text)里的text变量从未定义,运行到该行会直接抛出NameError。

修复后的代码示例

import RPi.GPIO as GPIO
from mfrc522 import SimpleMFRC522
import datetime

reader = SimpleMFRC522()

# 将允许的ID改为整数类型,与read_id()返回值类型匹配
allowed_id = 141854387750

try:
    while True:
        print("Hold an RFID tag near the reader")
        # 使用read()方法同时获取标签ID和存储的文本,避免未定义变量问题
        id, text = reader.read()
        
        if id == allowed_id:
            print("Access granted for Tag ID:", id)
            print("Data:", text)
        else:
            print("Access denied. Tag ID:", id)
            
except KeyboardInterrupt:
    GPIO.cleanup()

额外排查方向

如果修复代码后仍无法正常运行,检查以下硬件/环境问题:

  • 确认MFRC522模块与树莓派的接线是否正确(重点核对SDA、SCK、MOSI、MISO、GND、VCC引脚)。
  • 检查mfrc522库是否正确安装:运行pip install mfrc522确认安装状态。
  • 确保树莓派的SPI接口已启用:通过raspi-config进入“Interface Options”开启SPI功能。

内容的提问来源于stack exchange,提问作者Dan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.09 19:32:12