Hi Everyone!
I'm trying to emulate a tag using a NFC Module V3 with a PN532 chip (from Elechouse) in order to read it using an Android phone, and this Arduino code:
#include "SPI.h"
#include "PN532_SPI.h"
#include "emulatetag.h"
#include "NdefMessage.h"
PN532_SPI pn532spi(SPI, 10);
EmulateTag nfc(pn532spi);
uint8_t ndefBuf[120];
NdefMessage message;
int messageSize;
uint8_t uid[4] = { 0x12, 0x34, 0x56, 0x78 };
void setup()
{
Serial.begin(115200);
Serial.println("------- Emulate Tag --------");
message = NdefMessage();
message.addUriRecord("http://www.seeed.com");
messageSize = message.getEncodedSize();
if (messageSize > sizeof(ndefBuf)) {
Serial.println("ndefBuf is too small");
while (1) { }
}
Serial.print("Ndef encoded message size: ");
Serial.println(messageSize);
message.encode(ndefBuf);
// comment out this command for no ndef message
nfc.setNdefFile(ndefBuf, messageSize);
// uid must be 3 bytes!
nfc.setUid(uid);
nfc.init();
}
void loop(){
// uncomment for overriding ndef in case a write to this tag occured
//nfc.setNdefFile(ndefBuf, messageSize);
// start emulation (blocks)
nfc.emulate();
// or start emulation with timeout
//if(!nfc.emulate(1000)){ // timeout 1 second
// Serial.println("timed out");
// }
// deny writing to the tag
//nfc.setTagWriteable(false);
if(nfc.writeOccured()){
Serial.println("\nWrite occured !");
uint8_t* tag_buf;
uint16_t length;
nfc.getContent(&tag_buf, &length);
NdefMessage msg = NdefMessage(tag_buf, length);
msg.print();
}
delay(1000);
}
I have installed the app "NFC Tools" on my phone (S7 Edge) and when I put my phone over the NFC Module, the app shows the message "Tag detected" but all the data is blank, i.e.;
Tag Type: Unkown FeliCa
Serial Number: 00:00:00:00:00:00:00:00
PMm: 0x000000000000000
System Code: 0x0000
What am I missing?
Thanks in advance!