寻求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); // 避免重复处理同一设备 } }
手机端操作步骤
- 打开手机NFC开关,确保NFC功能正常启用
- 安装NFC工具类APP,选择「创建」→「文本」,输入要发送的内容
- 选择「模拟」→「模拟MIFARE Classic标签」,将手机靠近PN532模块
- 手机会自动读取XIAO发送的内容,同时XIAO的串口监视器会打印手机发送的数据
常见错误排查
- 接线问题:确认SDA/SCL引脚未接反,必须使用3.3V供电(PN532不支持5V),GND需共地
- 库缺失:检查Arduino IDE中是否已安装完整的Adafruit PN532依赖库
- 串口不匹配:串口监视器波特率需设置为115200,与代码一致
- 手机设置问题:部分手机需在NFC设置中开启「读写权限」,模拟标签类型需选择MIFARE Classic
内容的提问来源于stack exchange,提问作者Broski
相关产品推荐
相关产品推荐

