Lettore rfid

Ho un problema con un lettore di tessere rfid
ho inserito 10 codici e molto spesso queste tessere mi danno errore
Aprendo il monitor seriale dello sketch che ho creato in alcune occasioni il codice è completamente diverso da quello registrato inizialmente
in altre occasioni il codice è giusto ma comunque dice errato
È capitato anche a voi ?

Facci vedere il codice e dacci un esempio di codice rfid "reale" e quello "letto" dallo sketch, e vediamo di cosa possa trattarsi.

invio 2 immagini dove leggo la chiave , esco dal monitor seriale, riapro e Rileggo

[code]
/*    LETTORE CODICE TESSERE


PINOUT:
RC522 MODULE    Uno/Nano    
SDA             D10
SCK             D13
MOSI            D11
MISO            D12
IRQ             N/A
GND             GND
RST             D9
3.3V            3.3V

*/
 
#include <SPI.h>
#include <RFID.h>
/* Vengono definiti PIN del RFID reader*/
#define SDA_DIO 10  // 53 per Arduino Mega
#define RESET_DIO 9
#define delayRead 1000 // Time of delay 
 
/* Viene creata una istanza della RFID libreria */
RFID RC522(SDA_DIO, RESET_DIO); 
 
 
 
void setup()
{ 
  Serial.begin(9600);
  /* Abilita SPI*/
  SPI.begin(); 
  /* Viene inizilizzato RFID reader */
  RC522.init();
  Serial.println("Setup");
}
 
void loop()
{
  /* Temporary loop counter */
  byte i;
   
  // Se viene letta una tessera
  if (RC522.isCard())
  {
    // Viene letto il suo codice 
    RC522.readCardSerial();
    String codiceLetto ="";
    Serial.println("Codice delle tessera letto:");
     
    // Viene caricato il codice della tessera, all'interno di una Stringa
    for(i = 0; i <= 4; i++)
    {
      codiceLetto+= String (RC522.serNum[i],HEX);
      codiceLetto.toUpperCase();
    }
    Serial.println(codiceLetto);
    delay(delayRead);
    Serial.println();
    Serial.println();
  }
}

[/code]

questa è la descrizione delle chiavi che ho acquistato su ebay

10pcs/lot 13.56MHz RFID IC Key Tags Keyfobs Token Tag Keychain Kit fashioKTPTM

questo del lettore

Lettore Sensore Di Induzione Per Arduino HQ Set MFRC-522 Rfid Kit Accessori 3.3V

passatempo: due cose ...

  1. quando indichi un prodotto, metti sempre il link così, chi ti vuole aiutoare, lo trova direttamnete senza dover andare a fare tante ricerche.

  2. porto la tua attenzione su QUESTA mia segnalazione. Per questa volta ho modificato io il post, ma, cortesemente, in futuro, tienne conto. Grazie mille per la collaborazione :slight_smile:

Guglielmo

Non ci vedo nulla di particolare o errato, se non due cose. Primo, EVITA le variabili “String”, usa le “stringhe C” ossia char array. Secondo, dovresti verificare se la readCardSerial() restituisce true prima di leggere i dati.

Detto questo, vedi e prova questa versione del tuo codice:

/*    LETTORE CODICE TESSERE
PINOUT:
RC522 MODULE    Uno/Nano   
SDA             D10
SCK             D13
MOSI            D11
MISO            D12
IRQ             N/A
GND             GND
RST             D9
3.3V            3.3V
*/
 
#include <SPI.h>
#include <RFID.h>
/* Vengono definiti PIN del RFID reader*/
#define SDA_DIO 10  // 53 per Arduino Mega
#define RESET_DIO 9
#define DELAYREAD 1000 // Time of delay
 
/* Viene creata una istanza della RFID libreria */
RFID RC522(SDA_DIO, RESET_DIO);

// Buffer di lettura codice card (5 byte=10 caratteri+0x0)
char codiceLetto[12];
// Buffer di conversione da byte a esadecimale
char hex[3];

void setup()
{
  Serial.begin(9600);
  /* Abilita SPI*/
  SPI.begin();
  /* Viene inizilizzato RFID reader */
  RC522.init();
  Serial.println("Setup");
}

void loop()
{
  // Se viene letta una tessera
  if (RC522.isCard())
  {
    // Viene letto il suo codice
    if (RC522.readCardSerial()) {
      codiceLetto[0] = 0;
      Serial.println("Codice delle tessera letto:");       
      // Viene caricato il codice della tessera, all'interno di una stringa
      for(byte i = 0; i <= 4; i++)
      {
        sprintf(hex,"%02X", RC522.serNum[i]);
        strcat(codiceLetto, hex);
      }
      Serial.println(codiceLetto);
      delay(DELAYREAD);
      Serial.println();
      Serial.println();
    }
  }
}

This topic was automatically closed 120 days after the last reply. New replies are no longer allowed.