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

寻求Seeed XIAO+PN532与手机NFC双向通信代码支持(编程新手)

Seeed XIAO + PN532 NFC双向收发实现方案

硬件接线(I2C模式)

  • Seeed XIAO D4(SDA)→ PN532 SDA引脚
  • Seeed XIAO D5(SCL)→ PN532 SCL引脚
  • Seeed XIAO 3.3V → PN532 VCC引脚
  • Seeed XIAO GND → PN532 GND引脚

依赖库安装

打开Arduino IDE,通过库管理器搜索Adafruit PN532并安装,同时确保其依赖的Adafruit Unified Sensor库也完成安装。

XIAO端代码实现

以下代码实现基础的NFC双向收发:检测手机NFC设备、读取手机发送的数据、向手机写入数据,串口打印调试信息。

#include <Wire.h>
#include <Adafruit_PN532.h>

// I2C模式初始化PN532
Adafruit_PN532 nfc(Wire);

void setup(void) {
  Serial.begin(115200);
  while (!Serial) delay(10); // 等待串口连接

  nfc.begin();

  uint32_t versiondata = nfc.getFirmwareVersion();
  if (!versiondata) {
    Serial.print("未检测到PN532模块,请检查接线");
    while (1); // 模块未连接时暂停程序
  }
  
  // 打印固件版本信息
  Serial.print("PN532固件版本: ");
  Serial.print((versiondata >> 24) & 0xFF, HEX);
  Serial.print('.');
  Serial.println((versiondata >> 16) & 0xFF, HEX);
  
  // 配置模块为NFC读写器模式
  nfc.SAMConfig();
}

void loop(void) {
  uint8_t success;
  uint8_t uid[] = { 0, 0, 0, 0, 0, 0, 0 }; // 存储设备UID
  uint8_t uidLength; // UID字节长度

  // 等待检测到NFC设备(如手机)
  success = nfc.readPassiveTargetID(PN532_MIFARE_ISO14443A, uid, &uidLength);

  if (success) {
    Serial.println("\n检测到NFC设备");
    Serial.print("UID长度: "); Serial.print(uidLength, DEC); Serial.println("字节");
    Serial.print("UID: ");
    for (uint8_t i=0; i<uidLength; i++) {
      Serial.print(uid[i], HEX); Serial.print(" ");
    }
    Serial.println();

    // 读取手机模拟标签的块4数据
    uint8_t data[16];
    success = nfc.mifareclassic_ReadBlock(4, data);
    if (success) {
      Serial.print("读取到手机数据: ");
      for (uint8_t i=0; i<16; i++) {
        Serial.print((char)data[i]);
      }
      Serial.println();
    } else {
      Serial.println("读取失败:请确保手机模拟的是MIFARE Classic标签");
    }

    // 向手机标签块4写入数据
    uint8_t writeData[] = "Hello XIAO NFC!";
    memset(data, 0, 16); // 清空缓冲区
    memcpy(data, writeData, strlen((char*)writeData));
    success = nfc.mifareclassic_WriteBlock(4, data);
    if (success) {
      Serial.println("数据已发送至手机");
    } else {
      Serial.println("发送失败:检查手机标签是否可写入");
    }

    delay(1000); // 避免重复处理同一设备
  }
}

手机端操作步骤

  1. 打开手机NFC开关,确保NFC功能正常启用
  2. 安装NFC工具类APP,选择「创建」→「文本」,输入要发送的内容
  3. 选择「模拟」→「模拟MIFARE Classic标签」,将手机靠近PN532模块
  4. 手机会自动读取XIAO发送的内容,同时XIAO的串口监视器会打印手机发送的数据

常见错误排查

  • 接线问题:确认SDA/SCL引脚未接反,必须使用3.3V供电(PN532不支持5V),GND需共地
  • 库缺失:检查Arduino IDE中是否已安装完整的Adafruit PN532依赖库
  • 串口不匹配:串口监视器波特率需设置为115200,与代码一致
  • 手机设置问题:部分手机需在NFC设置中开启「读写权限」,模拟标签类型需选择MIFARE Classic

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.11 11:38:10