PN532 Driver library This library provides an abstract API to drive the pn532 nfc chip, with I2C/HSU/SPI interface. Its based on the Seeed Studio's Arduino version.
Dependents: PN532_ReadUid Nfctest2
PN532/examples/p2p_with_ndef_library/p2p_with_ndef_library.ino@0:db8030e71f55, 2016-09-13 (annotated)
- Committer:
- dotnfc
- Date:
- Tue Sep 13 06:01:19 2016 +0000
- Revision:
- 0:db8030e71f55
first commit
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
dotnfc | 0:db8030e71f55 | 1 | // send a NDEF message to adnroid or get a NDEF message |
dotnfc | 0:db8030e71f55 | 2 | // |
dotnfc | 0:db8030e71f55 | 3 | // note: [NDEF library](https://github.com/Don/NDEF) is needed. |
dotnfc | 0:db8030e71f55 | 4 | |
dotnfc | 0:db8030e71f55 | 5 | #include "SPI.h" |
dotnfc | 0:db8030e71f55 | 6 | #include "PN532_SPI.h" |
dotnfc | 0:db8030e71f55 | 7 | #include "snep.h" |
dotnfc | 0:db8030e71f55 | 8 | #include "NdefMessage.h" |
dotnfc | 0:db8030e71f55 | 9 | |
dotnfc | 0:db8030e71f55 | 10 | PN532_SPI pn532spi(SPI, 10); |
dotnfc | 0:db8030e71f55 | 11 | SNEP nfc(pn532spi); |
dotnfc | 0:db8030e71f55 | 12 | uint8_t ndefBuf[128]; |
dotnfc | 0:db8030e71f55 | 13 | |
dotnfc | 0:db8030e71f55 | 14 | void setup() |
dotnfc | 0:db8030e71f55 | 15 | { |
dotnfc | 0:db8030e71f55 | 16 | Serial.begin(115200); |
dotnfc | 0:db8030e71f55 | 17 | Serial.println("-------Peer to Peer--------"); |
dotnfc | 0:db8030e71f55 | 18 | } |
dotnfc | 0:db8030e71f55 | 19 | |
dotnfc | 0:db8030e71f55 | 20 | void loop() |
dotnfc | 0:db8030e71f55 | 21 | { |
dotnfc | 0:db8030e71f55 | 22 | #if 1 |
dotnfc | 0:db8030e71f55 | 23 | Serial.println("Send a message to Android"); |
dotnfc | 0:db8030e71f55 | 24 | NdefMessage message = NdefMessage(); |
dotnfc | 0:db8030e71f55 | 25 | message.addUriRecord("http://www.seeedstudio.com"); |
dotnfc | 0:db8030e71f55 | 26 | int messageSize = message.getEncodedSize(); |
dotnfc | 0:db8030e71f55 | 27 | if (messageSize > sizeof(ndefBuf)) { |
dotnfc | 0:db8030e71f55 | 28 | Serial.println("ndefBuf is too small"); |
dotnfc | 0:db8030e71f55 | 29 | while (1) { |
dotnfc | 0:db8030e71f55 | 30 | } |
dotnfc | 0:db8030e71f55 | 31 | |
dotnfc | 0:db8030e71f55 | 32 | } |
dotnfc | 0:db8030e71f55 | 33 | |
dotnfc | 0:db8030e71f55 | 34 | message.encode(ndefBuf); |
dotnfc | 0:db8030e71f55 | 35 | if (0 >= nfc.write(ndefBuf, messageSize)) { |
dotnfc | 0:db8030e71f55 | 36 | Serial.println("Failed"); |
dotnfc | 0:db8030e71f55 | 37 | } else { |
dotnfc | 0:db8030e71f55 | 38 | Serial.println("Success"); |
dotnfc | 0:db8030e71f55 | 39 | } |
dotnfc | 0:db8030e71f55 | 40 | |
dotnfc | 0:db8030e71f55 | 41 | delay(3000); |
dotnfc | 0:db8030e71f55 | 42 | #else |
dotnfc | 0:db8030e71f55 | 43 | Serial.println("Get a message from Android"); |
dotnfc | 0:db8030e71f55 | 44 | int msgSize = nfc.read(ndefBuf, sizeof(ndefBuf)); |
dotnfc | 0:db8030e71f55 | 45 | if (msgSize > 0) { |
dotnfc | 0:db8030e71f55 | 46 | NdefMessage msg = NdefMessage(ndefBuf, msgSize); |
dotnfc | 0:db8030e71f55 | 47 | msg.print(); |
dotnfc | 0:db8030e71f55 | 48 | Serial.println("\nSuccess"); |
dotnfc | 0:db8030e71f55 | 49 | } else { |
dotnfc | 0:db8030e71f55 | 50 | Serial.println("failed"); |
dotnfc | 0:db8030e71f55 | 51 | } |
dotnfc | 0:db8030e71f55 | 52 | delay(3000); |
dotnfc | 0:db8030e71f55 | 53 | #endif |
dotnfc | 0:db8030e71f55 | 54 | } |
dotnfc | 0:db8030e71f55 | 55 |