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

如何通过NFC实现Arduino经RFID-RC522向Android手机传输温湿度数据?

实现方案分步指南

1. 硬件确认

  • 确保RC522模块与Arduino接线正确:SDA接D10,SCK接D13,MOSI接D11,MISO接D12,RST接D9,电源必须接3.3V(接5V会烧毁模块)。
  • DHT11接线:VCC接5V,GND接GND,DATA接D2(可自定义,代码中对应修改引脚号即可)。

2. Arduino端代码实现

需要依赖两个库:MFRC522(RC522驱动)和DHT(DHT11驱动)。核心逻辑是让RC522工作在卡模拟模式,将DHT11采集的温湿度数据写入模拟NFC卡的指定块,供手机读取。

代码示例

#include <SPI.h>
#include <MFRC522.h>
#include <DHT.h>

// RC522引脚定义
#define SS_PIN 10
#define RST_PIN 9
MFRC522 mfrc522(SS_PIN, RST_PIN);

// DHT11定义
#define DHTPIN 2
#define DHTTYPE DHT11
DHT dht(DHTPIN, DHTTYPE);

// 存储温湿度的NFC块地址(选择块4,避开系统保留块)
const byte blockAddr = 4;
// NFC块数据缓冲区,固定16字节
byte blockData[16];

void setup() {
  Serial.begin(9600);
  SPI.begin();
  mfrc522.PCD_Init();
  dht.begin();
  
  // 配置RC522为卡模拟模式
  mfrc522.PCD_SetRegisterBitMask(mfrc522.TxControlReg, 0x03);
  mfrc522.PCD_SetRegisterBitMask(mfrc522.RxControlReg, 0x03);
}

void loop() {
  // 读取温湿度数据
  float humidity = dht.readHumidity();
  float temperature = dht.readTemperature();
  
  // 检查传感器读取是否正常
  if (isnan(humidity) || isnan(temperature)) {
    Serial.println("DHT11数据读取失败");
    delay(2000);
    return;
  }
  
  // 将温湿度转为固定格式字符串,控制长度不超过16字节
  String dataStr = "T:" + String(temperature, 1) + "C H:" + String(humidity, 1) + "%";
  dataStr.getBytes(blockData, sizeof(blockData));
  
  // 填充剩余字节为0,避免乱码
  for (int i = dataStr.length(); i < 16; i++) {
    blockData[i] = 0;
  }
  
  // 将数据写入模拟NFC卡的指定块
  mfrc522.MIFARE_SetValue(blockAddr, (uint32_t*)blockData);
  
  // 每秒更新一次数据
  delay(1000);
}

3. Android端数据读取

无需开发复杂APP,用系统或第三方工具即可:

  • 打开手机NFC功能,将手机靠近RC522模块。
  • 手机会识别到模拟NFC卡,读取块4的数据,即可看到T:XX.XC H:XX.X%格式的温湿度信息。
  • 若需自定义APP,可使用Android NFC API,监听TECH_DISCOVERED意图,读取对应块的数据并解析展示。

关键注意事项

  • RC522卡模拟模式兼容性:部分品牌手机可能对RC522的模拟卡识别存在差异,建议多机型测试。
  • 数据长度限制:每个NFC块仅16字节,需严格控制温湿度字符串长度(示例中保留1位小数刚好符合要求)。
  • 电源稳定性:建议给Arduino接外部电源,避免USB供电不足导致RC522工作异常。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 16:50:19