mirror of
https://github.com/Vale54321/schafkopf-bot.git
synced 2025-12-16 03:39:34 +01:00
added arduino nfcReader files (#42)
This commit is contained in:
committed by
GitHub
parent
76cb0eaf1a
commit
6259d0bef3
45
Arduino/nfcReader/NDEF/examples/CleanTag/CleanTag.ino
Normal file
45
Arduino/nfcReader/NDEF/examples/CleanTag/CleanTag.ino
Normal file
@@ -0,0 +1,45 @@
|
||||
// Clean resets a tag back to factory-like state
|
||||
// For Mifare Classic, tag is zero'd and reformatted as Mifare Classic
|
||||
// For Mifare Ultralight, tags is zero'd and left empty
|
||||
|
||||
#if 0
|
||||
#include <SPI.h>
|
||||
#include <PN532_SPI.h>
|
||||
#include <PN532.h>
|
||||
#include <NfcAdapter.h>
|
||||
|
||||
PN532_SPI pn532spi(SPI, 10);
|
||||
NfcAdapter nfc = NfcAdapter(pn532spi);
|
||||
#else
|
||||
|
||||
#include <Wire.h>
|
||||
#include <PN532_I2C.h>
|
||||
#include <PN532.h>
|
||||
#include <NfcAdapter.h>
|
||||
|
||||
PN532_I2C pn532_i2c(Wire);
|
||||
NfcAdapter nfc = NfcAdapter(pn532_i2c);
|
||||
#endif
|
||||
|
||||
void setup(void) {
|
||||
Serial.begin(9600);
|
||||
Serial.println("NFC Tag Cleaner");
|
||||
nfc.begin();
|
||||
}
|
||||
|
||||
void loop(void) {
|
||||
|
||||
Serial.println("\nPlace a tag on the NFC reader to clean.");
|
||||
|
||||
if (nfc.tagPresent()) {
|
||||
|
||||
bool success = nfc.clean();
|
||||
if (success) {
|
||||
Serial.println("\nSuccess, tag restored to factory state.");
|
||||
} else {
|
||||
Serial.println("\nError, unable to clean tag.");
|
||||
}
|
||||
|
||||
}
|
||||
delay(5000);
|
||||
}
|
||||
42
Arduino/nfcReader/NDEF/examples/EraseTag/EraseTag.ino
Normal file
42
Arduino/nfcReader/NDEF/examples/EraseTag/EraseTag.ino
Normal file
@@ -0,0 +1,42 @@
|
||||
// Erases a NFC tag by writing an empty NDEF message
|
||||
|
||||
#if 0
|
||||
#include <SPI.h>
|
||||
#include <PN532_SPI.h>
|
||||
#include <PN532.h>
|
||||
#include <NfcAdapter.h>
|
||||
|
||||
PN532_SPI pn532spi(SPI, 10);
|
||||
NfcAdapter nfc = NfcAdapter(pn532spi);
|
||||
#else
|
||||
|
||||
#include <Wire.h>
|
||||
#include <PN532_I2C.h>
|
||||
#include <PN532.h>
|
||||
#include <NfcAdapter.h>
|
||||
|
||||
PN532_I2C pn532_i2c(Wire);
|
||||
NfcAdapter nfc = NfcAdapter(pn532_i2c);
|
||||
#endif
|
||||
|
||||
void setup(void) {
|
||||
Serial.begin(9600);
|
||||
Serial.println("NFC Tag Eraser");
|
||||
nfc.begin();
|
||||
}
|
||||
|
||||
void loop(void) {
|
||||
Serial.println("\nPlace a tag on the NFC reader to erase.");
|
||||
|
||||
if (nfc.tagPresent()) {
|
||||
|
||||
bool success = nfc.erase();
|
||||
if (success) {
|
||||
Serial.println("\nSuccess, tag contains an empty record.");
|
||||
} else {
|
||||
Serial.println("\nUnable to erase tag.");
|
||||
}
|
||||
|
||||
}
|
||||
delay(5000);
|
||||
}
|
||||
44
Arduino/nfcReader/NDEF/examples/FormatTag/FormatTag.ino
Normal file
44
Arduino/nfcReader/NDEF/examples/FormatTag/FormatTag.ino
Normal file
@@ -0,0 +1,44 @@
|
||||
// Formats a Mifare Classic tags as an NDEF tag
|
||||
// This will fail if the tag is already formatted NDEF
|
||||
// nfc.clean will turn a NDEF formatted Mifare Classic tag back to the Mifare Classic format
|
||||
|
||||
#if 0
|
||||
#include <SPI.h>
|
||||
#include <PN532_SPI.h>
|
||||
#include <PN532.h>
|
||||
#include <NfcAdapter.h>
|
||||
|
||||
PN532_SPI pn532spi(SPI, 10);
|
||||
NfcAdapter nfc = NfcAdapter(pn532spi);
|
||||
#else
|
||||
|
||||
#include <Wire.h>
|
||||
#include <PN532_I2C.h>
|
||||
#include <PN532.h>
|
||||
#include <NfcAdapter.h>
|
||||
|
||||
PN532_I2C pn532_i2c(Wire);
|
||||
NfcAdapter nfc = NfcAdapter(pn532_i2c);
|
||||
#endif
|
||||
|
||||
void setup(void) {
|
||||
Serial.begin(9600);
|
||||
Serial.println("NDEF Formatter");
|
||||
nfc.begin();
|
||||
}
|
||||
|
||||
void loop(void) {
|
||||
|
||||
Serial.println("\nPlace an unformatted Mifare Classic tag on the reader.");
|
||||
if (nfc.tagPresent()) {
|
||||
|
||||
bool success = nfc.format();
|
||||
if (success) {
|
||||
Serial.println("\nSuccess, tag formatted as NDEF.");
|
||||
} else {
|
||||
Serial.println("\nFormat failed.");
|
||||
}
|
||||
|
||||
}
|
||||
delay(5000);
|
||||
}
|
||||
30
Arduino/nfcReader/NDEF/examples/P2P_Receive/P2P_Receive.ino
Normal file
30
Arduino/nfcReader/NDEF/examples/P2P_Receive/P2P_Receive.ino
Normal file
@@ -0,0 +1,30 @@
|
||||
// Receive a NDEF message from a Peer
|
||||
// Requires SPI. Tested with Seeed Studio NFC Shield v2
|
||||
|
||||
#include "SPI.h"
|
||||
#include "PN532_SPI.h"
|
||||
#include "snep.h"
|
||||
#include "NdefMessage.h"
|
||||
|
||||
PN532_SPI pn532spi(SPI, 10);
|
||||
SNEP nfc(pn532spi);
|
||||
uint8_t ndefBuf[128];
|
||||
|
||||
void setup() {
|
||||
Serial.begin(9600);
|
||||
Serial.println("NFC Peer to Peer Example - Receive Message");
|
||||
}
|
||||
|
||||
void loop() {
|
||||
Serial.println("Waiting for message from Peer");
|
||||
int msgSize = nfc.read(ndefBuf, sizeof(ndefBuf));
|
||||
if (msgSize > 0) {
|
||||
NdefMessage msg = NdefMessage(ndefBuf, msgSize);
|
||||
msg.print();
|
||||
Serial.println("\nSuccess");
|
||||
} else {
|
||||
Serial.println("Failed");
|
||||
}
|
||||
delay(3000);
|
||||
}
|
||||
|
||||
@@ -0,0 +1,71 @@
|
||||
// Receive a NDEF message from a Peer and
|
||||
// display the payload of the first record on a LCD
|
||||
//
|
||||
// SeeedStudio NFC shield http://www.seeedstudio.com/depot/NFC-Shield-V20-p-1370.html
|
||||
// LCD using the Adafruit backpack http://adafru.it/292
|
||||
// Adafruit Liquid Crystal library https://github.com/adafruit/LiquidCrystal
|
||||
// Use a Android of BlackBerry phone to send a message to the NFC shield
|
||||
|
||||
#include "SPI.h"
|
||||
#include "PN532_SPI.h"
|
||||
#include "snep.h"
|
||||
#include "NdefMessage.h"
|
||||
|
||||
#include "Wire.h"
|
||||
#include "LiquidCrystal.h"
|
||||
|
||||
PN532_SPI pn532spi(SPI, 10);
|
||||
SNEP nfc(pn532spi);
|
||||
uint8_t ndefBuf[128];
|
||||
|
||||
// Connect via i2c, default address #0 (A0-A2 not jumpered)
|
||||
LiquidCrystal lcd(0);
|
||||
|
||||
void setup() {
|
||||
Serial.begin(9600);
|
||||
// set up the LCD's number of rows and columns:
|
||||
lcd.begin(16, 2);
|
||||
Serial.println("NFC Peer to Peer Example - Receive Message");
|
||||
}
|
||||
|
||||
void loop() {
|
||||
Serial.println("Waiting for message from a peer");
|
||||
int msgSize = nfc.read(ndefBuf, sizeof(ndefBuf));
|
||||
if (msgSize > 0) {
|
||||
NdefMessage msg = NdefMessage(ndefBuf, msgSize);
|
||||
msg.print();
|
||||
|
||||
NdefRecord record = msg.getRecord(0);
|
||||
|
||||
int payloadLength = record.getPayloadLength();
|
||||
byte payload[payloadLength];
|
||||
record.getPayload(payload);
|
||||
|
||||
// The TNF and Type are used to determine how your application processes the payload
|
||||
// There's no generic processing for the payload, it's returned as a byte[]
|
||||
int startChar = 0;
|
||||
if (record.getTnf() == TNF_WELL_KNOWN && record.getType() == "T") { // text message
|
||||
// skip the language code
|
||||
startChar = payload[0] + 1;
|
||||
} else if (record.getTnf() == TNF_WELL_KNOWN && record.getType() == "U") { // URI
|
||||
// skip the url prefix (future versions should decode)
|
||||
startChar = 1;
|
||||
}
|
||||
|
||||
// Force the data into a String (might fail for some content)
|
||||
// Real code should use smarter processing
|
||||
String payloadAsString = "";
|
||||
for (int c = startChar; c < payloadLength; c++) {
|
||||
payloadAsString += (char)payload[c];
|
||||
}
|
||||
|
||||
// print on the LCD display
|
||||
lcd.setCursor(0, 0);
|
||||
lcd.print(payloadAsString);
|
||||
|
||||
Serial.println("\nSuccess");
|
||||
} else {
|
||||
Serial.println("Failed");
|
||||
}
|
||||
delay(3000);
|
||||
}
|
||||
42
Arduino/nfcReader/NDEF/examples/P2P_Send/P2P_Send.ino
Normal file
42
Arduino/nfcReader/NDEF/examples/P2P_Send/P2P_Send.ino
Normal file
@@ -0,0 +1,42 @@
|
||||
// Sends a NDEF Message to a Peer
|
||||
// Requires SPI. Tested with Seeed Studio NFC Shield v2
|
||||
|
||||
#include "SPI.h"
|
||||
#include "PN532_SPI.h"
|
||||
#include "snep.h"
|
||||
#include "NdefMessage.h"
|
||||
|
||||
PN532_SPI pn532spi(SPI, 10);
|
||||
SNEP nfc(pn532spi);
|
||||
uint8_t ndefBuf[128];
|
||||
|
||||
void setup() {
|
||||
Serial.begin(9600);
|
||||
Serial.println("NFC Peer to Peer Example - Send Message");
|
||||
}
|
||||
|
||||
void loop() {
|
||||
Serial.println("Send a message to Peer");
|
||||
|
||||
NdefMessage message = NdefMessage();
|
||||
message.addUriRecord("http://shop.oreilly.com/product/mobile/0636920021193.do");
|
||||
//message.addUriRecord("http://arduino.cc");
|
||||
//message.addUriRecord("https://github.com/don/NDEF");
|
||||
|
||||
|
||||
int messageSize = message.getEncodedSize();
|
||||
if (messageSize > sizeof(ndefBuf)) {
|
||||
Serial.println("ndefBuf is too small");
|
||||
while (1) {
|
||||
}
|
||||
}
|
||||
|
||||
message.encode(ndefBuf);
|
||||
if (0 >= nfc.write(ndefBuf, messageSize)) {
|
||||
Serial.println("Failed");
|
||||
} else {
|
||||
Serial.println("Success");
|
||||
}
|
||||
|
||||
delay(3000);
|
||||
}
|
||||
35
Arduino/nfcReader/NDEF/examples/ReadTag/ReadTag.ino
Normal file
35
Arduino/nfcReader/NDEF/examples/ReadTag/ReadTag.ino
Normal file
@@ -0,0 +1,35 @@
|
||||
|
||||
#if 0
|
||||
#include <SPI.h>
|
||||
#include <PN532_SPI.h>
|
||||
#include <PN532.h>
|
||||
#include <NfcAdapter.h>
|
||||
|
||||
PN532_SPI pn532spi(SPI, 10);
|
||||
NfcAdapter nfc = NfcAdapter(pn532spi);
|
||||
#else
|
||||
|
||||
#include <Wire.h>
|
||||
#include <PN532_I2C.h>
|
||||
#include <PN532.h>
|
||||
#include <NfcAdapter.h>
|
||||
|
||||
PN532_I2C pn532_i2c(Wire);
|
||||
NfcAdapter nfc = NfcAdapter(pn532_i2c);
|
||||
#endif
|
||||
|
||||
void setup(void) {
|
||||
Serial.begin(9600);
|
||||
Serial.println("NDEF Reader");
|
||||
nfc.begin();
|
||||
}
|
||||
|
||||
void loop(void) {
|
||||
Serial.println("\nScan a NFC tag\n");
|
||||
if (nfc.tagPresent())
|
||||
{
|
||||
NfcTag tag = nfc.read();
|
||||
tag.print();
|
||||
}
|
||||
delay(5000);
|
||||
}
|
||||
@@ -0,0 +1,86 @@
|
||||
#if 0
|
||||
#include <SPI.h>
|
||||
#include <PN532_SPI.h>
|
||||
#include <PN532.h>
|
||||
#include <NfcAdapter.h>
|
||||
|
||||
PN532_SPI pn532spi(SPI, 10);
|
||||
NfcAdapter nfc = NfcAdapter(pn532spi);
|
||||
#else
|
||||
|
||||
#include <Wire.h>
|
||||
#include <PN532_I2C.h>
|
||||
#include <PN532.h>
|
||||
#include <NfcAdapter.h>
|
||||
|
||||
PN532_I2C pn532_i2c(Wire);
|
||||
NfcAdapter nfc = NfcAdapter(pn532_i2c);
|
||||
#endif
|
||||
|
||||
void setup(void) {
|
||||
Serial.begin(9600);
|
||||
Serial.println("NDEF Reader");
|
||||
nfc.begin();
|
||||
}
|
||||
|
||||
void loop(void) {
|
||||
Serial.println("\nScan a NFC tag\n");
|
||||
|
||||
if (nfc.tagPresent())
|
||||
{
|
||||
NfcTag tag = nfc.read();
|
||||
Serial.println(tag.getTagType());
|
||||
Serial.print("UID: ");Serial.println(tag.getUidString());
|
||||
|
||||
if (tag.hasNdefMessage()) // every tag won't have a message
|
||||
{
|
||||
|
||||
NdefMessage message = tag.getNdefMessage();
|
||||
Serial.print("\nThis NFC Tag contains an NDEF Message with ");
|
||||
Serial.print(message.getRecordCount());
|
||||
Serial.print(" NDEF Record");
|
||||
if (message.getRecordCount() != 1) {
|
||||
Serial.print("s");
|
||||
}
|
||||
Serial.println(".");
|
||||
|
||||
// cycle through the records, printing some info from each
|
||||
int recordCount = message.getRecordCount();
|
||||
for (int i = 0; i < recordCount; i++)
|
||||
{
|
||||
Serial.print("\nNDEF Record ");Serial.println(i+1);
|
||||
NdefRecord record = message.getRecord(i);
|
||||
// NdefRecord record = message[i]; // alternate syntax
|
||||
|
||||
Serial.print(" TNF: ");Serial.println(record.getTnf());
|
||||
Serial.print(" Type: ");Serial.println(record.getType()); // will be "" for TNF_EMPTY
|
||||
|
||||
// The TNF and Type should be used to determine how your application processes the payload
|
||||
// There's no generic processing for the payload, it's returned as a byte[]
|
||||
int payloadLength = record.getPayloadLength();
|
||||
byte payload[payloadLength];
|
||||
record.getPayload(payload);
|
||||
|
||||
// Print the Hex and Printable Characters
|
||||
Serial.print(" Payload (HEX): ");
|
||||
PrintHexChar(payload, payloadLength);
|
||||
|
||||
// Force the data into a String (might work depending on the content)
|
||||
// Real code should use smarter processing
|
||||
String payloadAsString = "";
|
||||
for (int c = 0; c < payloadLength; c++) {
|
||||
payloadAsString += (char)payload[c];
|
||||
}
|
||||
Serial.print(" Payload (as String): ");
|
||||
Serial.println(payloadAsString);
|
||||
|
||||
// id is probably blank and will return ""
|
||||
String uid = record.getId();
|
||||
if (uid != "") {
|
||||
Serial.print(" ID: ");Serial.println(uid);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
delay(3000);
|
||||
}
|
||||
40
Arduino/nfcReader/NDEF/examples/WriteTag/WriteTag.ino
Normal file
40
Arduino/nfcReader/NDEF/examples/WriteTag/WriteTag.ino
Normal file
@@ -0,0 +1,40 @@
|
||||
#if 0
|
||||
#include <SPI.h>
|
||||
#include <PN532_SPI.h>
|
||||
#include <PN532.h>
|
||||
#include <NfcAdapter.h>
|
||||
|
||||
PN532_SPI pn532spi(SPI, 10);
|
||||
NfcAdapter nfc = NfcAdapter(pn532spi);
|
||||
#else
|
||||
|
||||
#include <Wire.h>
|
||||
#include <PN532_I2C.h>
|
||||
#include <PN532.h>
|
||||
#include <NfcAdapter.h>
|
||||
|
||||
PN532_I2C pn532_i2c(Wire);
|
||||
NfcAdapter nfc = NfcAdapter(pn532_i2c);
|
||||
#endif
|
||||
|
||||
void setup() {
|
||||
Serial.begin(9600);
|
||||
Serial.println("NDEF Writer");
|
||||
nfc.begin();
|
||||
}
|
||||
|
||||
void loop() {
|
||||
Serial.println("\nPlace a formatted Mifare Classic NFC tag on the reader.");
|
||||
if (nfc.tagPresent()) {
|
||||
NdefMessage message = NdefMessage();
|
||||
message.addUriRecord("http://arduino.cc");
|
||||
|
||||
bool success = nfc.write(message);
|
||||
if (success) {
|
||||
Serial.println("Success. Try reading this tag with your phone.");
|
||||
} else {
|
||||
Serial.println("Write failed.");
|
||||
}
|
||||
}
|
||||
delay(5000);
|
||||
}
|
||||
@@ -0,0 +1,41 @@
|
||||
#if 0
|
||||
#include <SPI.h>
|
||||
#include <PN532_SPI.h>
|
||||
#include <PN532.h>
|
||||
#include <NfcAdapter.h>
|
||||
|
||||
PN532_SPI pn532spi(SPI, 10);
|
||||
NfcAdapter nfc = NfcAdapter(pn532spi);
|
||||
#else
|
||||
|
||||
#include <Wire.h>
|
||||
#include <PN532_I2C.h>
|
||||
#include <PN532.h>
|
||||
#include <NfcAdapter.h>
|
||||
|
||||
PN532_I2C pn532_i2c(Wire);
|
||||
NfcAdapter nfc = NfcAdapter(pn532_i2c);
|
||||
#endif
|
||||
|
||||
void setup() {
|
||||
Serial.begin(9600);
|
||||
Serial.println("NDEF Writer");
|
||||
nfc.begin();
|
||||
}
|
||||
|
||||
void loop() {
|
||||
Serial.println("\nPlace a formatted Mifare Classic NFC tag on the reader.");
|
||||
if (nfc.tagPresent()) {
|
||||
NdefMessage message = NdefMessage();
|
||||
message.addTextRecord("Hello, Arduino!");
|
||||
message.addUriRecord("http://arduino.cc");
|
||||
message.addTextRecord("Goodbye, Arduino!");
|
||||
boolean success = nfc.write(message);
|
||||
if (success) {
|
||||
Serial.println("Success. Try reading this tag with your phone.");
|
||||
} else {
|
||||
Serial.println("Write failed");
|
||||
}
|
||||
}
|
||||
delay(3000);
|
||||
}
|
||||
Reference in New Issue
Block a user