Página 1 de 1

Comunicação ESP32 LORA HELTEC com módulo PN532 NFC RFID

Enviado: 12/Mar/2019, 02:17
por asena
Boa noite! Fernando tudo bem existe alguma forma de comunicar o esp32 lora com o modulo PN532 NFC RFID?
Ja tentei via I2C,SPI mas sem sucesso.
O erro esta em anexo.

/* Connect
GND ----- GND
VCC ----- 5V
SDA ----- SDA
SCL ----- SCL
- Key Code
*/

#include <Wire.h>
#include <PN532_I2C.h>
#include <PN532.h>
#include <NfcAdapter.h>

PN532_I2C pn532i2c(Wire);
PN532 nfc(pn532i2c);

//Define a interface de comunicação
/*#if 0
#include <SPI.h>
#include <PN532_SPI.h>
#include "PN532.h"
PN532_SPI pn532spi(SPI, 10);
PN532 nfc(pn532spi);

#elif 1
#include <PN532_HSU.h>
#include <PN532.h>
PN532_HSU pn532hsu(Serial1);
PN532 nfc(pn532hsu);

#else
#include <Wire.h>
#include <PN532_I2C.h>
#include <PN532.h>
#include <NfcAdapter.h>

PN532_I2C pn532i2c(Wire);
PN532 nfc(pn532i2c);
#endif
*/
void setup(void) {
Serial.begin(115200);
nfc.begin();

uint32_t versiondata = nfc.getFirmwareVersion();
if (! versiondata) {
Serial.print("Não encontrou placa PN53x");
while (1); // parada
}

// Obteve dados ok
Serial.print("Chip encontrado PN5"); Serial.println((versiondata>>24) & 0xFF, HEX);
Serial.print("Firmware ver. "); Serial.print((versiondata>>16) & 0xFF, DEC);
Serial.print('.'); Serial.println((versiondata>>8) & 0xFF, DEC);
Serial.println("");
// Definir o número máximo de tentativas de repetição para ler um cartão
// Isso nos impede de esperar eternamente por um cartão, que é
// o comportamento padrão do PN532.
nfc.setPassiveActivationRetries(0xFF);

// configurar placa para ler etiquetas RFID
nfc.SAMConfig();

Serial.println("Esperando por um cartão ISO14443A");
}

void loop(void) {
boolean success;
uint8_t uid[] = { 0, 0, 0, 0, 0, 0, 0 }; // Buffer para armazenar o UID retornado
uint8_t uidLength; // Comprimento do UID (4 ou 7 bytes, dependendo do tipo de cartão ISO14443A)

// Aguarde por um tipo de cartões ISO14443A (Mifare, etc.). Quando um é encontrado
// 'uid' será preenchido com o UID e uidLength indicará
// se o uid tiver 4 bytes (Mifare Classic) ou 7 bytes (Mifare Ultralight)
success = nfc.readPassiveTargetID(PN532_MIFARE_ISO14443A, &uid[0], &uidLength);

if (success) {
Serial.println("Encontrei um cartão!");
Serial.print("Comprimento de UID: ");Serial.print(uidLength, DEC);Serial.println(" bytes");
Serial.print("UID Valor: ");
String hex_value = "";
for (uint8_t i=0; i < uidLength; i++)
{
Serial.print(" 0x");Serial.print(uid, HEX);
//Serial.print(" ");Serial.print(uid, HEX);
hex_value += (String)uid;
}

Serial.println(", value="+hex_value);

if(hex_value == "13816044131") {
Serial.println("Esta é a tag chave. ");
}
else if(hex_value == "11818312831") {
Serial.println("Esta é a etiqueta do cartão. ");
}
else if(hex_value == "63156295") {
Serial.println("Esta é a etiqueta do telefone. ");
}
else
Serial.println("Eu não encontrei.");


Serial.println("");
// Espere 1 segundo antes de continuar
delay(1000);
}
else
{
// PN532 provavelmente expirou esperando por um cartão
//Serial.println("Esperando por um cartão ...");
}
}