#include #include #include "boards.h" #include #include #include PN532_I2C pn532_i2c(Wire); NfcAdapter nfc = NfcAdapter(pn532_i2c); String tagId = "None"; String cleanString = ""; void setup() { Serial.begin(9600); Serial.println("System initialized"); nfc.begin(); initLoRa(); } void loop() { readNFC(); if (!cleanString.isEmpty()) { sendLoRaData(cleanString); } } void initLoRa() { Serial.println("Initializing LoRa..."); LoRa.setPins(RADIO_CS_PIN, RADIO_RST_PIN, RADIO_DI0_PIN); if (!LoRa.begin(LoRa_frequency)) { Serial.println("Starting LoRa failed!"); while (1); } Serial.println("LoRa initialized successfully!"); } void sendLoRaData(String data) { Serial.print("Sending LoRa data: "); Serial.println(data); LoRa.beginPacket(); LoRa.print("3 " + data); LoRa.endPacket(); } void readNFC() { if (nfc.tagPresent()) { NfcTag tag = nfc.read(); tagId = tag.getUidString(); Serial.print("Tag ID: "); Serial.println(tagId); if (tag.hasNdefMessage()) { NdefMessage message = tag.getNdefMessage(); int recordCount = message.getRecordCount(); Serial.print("Number of NDEF records: "); Serial.println(recordCount); for (int i = 0; i < recordCount; i++) { NdefRecord record = message.getRecord(i); int payloadLength = record.getPayloadLength(); byte payload[payloadLength]; record.getPayload(payload); String payloadAsString = ""; for (int c = 0; c < payloadLength; c++) { payloadAsString += String((char)payload[c]); } cleanString = payloadAsString; cleanString.remove(0, 3); Serial.print("Payload: "); Serial.println(cleanString); String uid = record.getId(); if (uid != "") { Serial.print("Record ID: "); Serial.println(uid); } } } else { Serial.println("No NDEF message found on the tag."); } delay(2000); } }