RFID problem

Hello,

I am new in arduino programming but I am trying to get up to speed.

First of all, I don’t know if this is the right place for my problem but to be honest I don’t know if it is a programming problem or a physical one.

I have bought a RFID-RC522 but I am having problems reading the cards.

I can read the big white ones and display the UID but i cannot read the small, round one (key cards). I have tried all the key cards I have in the house and I couldn’t read any of them.

I have made sure that I have the proper connections and that they are touching everything. I have also tried with another module (another RFID-RC522) but the same problem which got me thinking it might be a software problem.

I have used the examples from here and the examples from the RFID from this website (Down on the page under rc522.rar).

During the last 4 days I can tell you that I have tried all the relevant code samples that I could find online but none of them work for the key cards, they only worked for the big white ones.

code:

  • rc522 example → dumpInfo
/*
 * ----------------------------------------------------------------------------
 * This is a MFRC522 library example; see https://github.com/miguelbalboa/rfid
 * for further details and other examples.
 * 
 * NOTE: The library file MFRC522.h has a lot of useful info. Please read it.
 * 
 * Released into the public domain.
 * ----------------------------------------------------------------------------
 * Example sketch/program showing how to read data from a PICC (that is: a RFID
 * Tag or Card) using a MFRC522 based RFID Reader on the Arduino SPI interface.
 * 
 * When the Arduino and the MFRC522 module are connected (see the pin layout
 * below), load this sketch into Arduino IDE then verify/compile and upload it.
 * To see the output: use Tools, Serial Monitor of the IDE (hit Ctrl+Shft+M).
 * When you present a PICC (that is: a RFID Tag or Card) at reading distance
 * of the MFRC522 Reader/PCD, the serial output will show the ID/UID, type and
 * any data blocks it can read. Note: you may see "Timeout in communication"
 * messages when removing the PICC from reading distance too early.
 * 
 * If your reader supports it, this sketch/program will read all the PICCs
 * presented (that is: multiple tag reading). So if you stack two or more
 * PICCs on top of each other and present them to the reader, it will first
 * output all details of the first and then the next PICC. Note that this
 * may take some time as all data blocks are dumped, so keep the PICCs at
 * reading distance until complete.
 * 
 * Typical pin layout used:
 * -----------------------------------------------------------------------------------------
 *             MFRC522      Arduino       Arduino   Arduino    Arduino          Arduino
 *             Reader/PCD   Uno           Mega      Nano v3    Leonardo/Micro   Pro Micro
 * Signal      Pin          Pin           Pin       Pin        Pin              Pin
 * -----------------------------------------------------------------------------------------
 * RST/Reset   RST          9             5         D9         RESET/ICSP-5     RST
 * SPI SS      SDA(SS)      10            53        D10        10               10
 * SPI MOSI    MOSI         11 / ICSP-4   51        D11        ICSP-4           16
 * SPI MISO    MISO         12 / ICSP-1   50        D12        ICSP-1           14
 * SPI SCK     SCK          13 / ICSP-3   52        D13        ICSP-3           15
 */

#include <SPI.h>
#include <MFRC522.h>

#define RST_PIN 9 // 
#define SS_PIN 10 //

MFRC522 mfrc522(SS_PIN, RST_PIN); // Create MFRC522 instance

void setup() {
 Serial.begin(115200); // Initialize serial communications with the PC
 while (!Serial); // Do nothing if no serial port is opened (added for Arduinos based on ATMEGA32U4)
 SPI.begin(); // Init SPI bus
 mfrc522.PCD_Init(); // Init MFRC522
 ShowReaderDetails(); // Show details of PCD - MFRC522 Card Reader details
 Serial.println(F("Scan PICC to see UID, type, and data blocks..."));
}

void loop() {
 // Look for new cards
 if ( ! mfrc522.PICC_IsNewCardPresent()) {
 return;
 }

 // Select one of the cards
 if ( ! mfrc522.PICC_ReadCardSerial()) {
 return;
 }

 // Dump debug info about the card; PICC_HaltA() is automatically called
 mfrc522.PICC_DumpToSerial(&(mfrc522.uid));
}

void ShowReaderDetails() {
 // Get the MFRC522 software version
 byte v = mfrc522.PCD_ReadRegister(mfrc522.VersionReg);
 Serial.print(F("MFRC522 Software Version: 0x"));
 Serial.print(v, HEX);
 if (v == 0x91)
 Serial.print(F(" = v1.0"));
 else if (v == 0x92)
 Serial.print(F(" = v2.0"));
 else
 Serial.print(F(" (unknown)"));
 Serial.println("");
 // When 0x00 or 0xFF is returned, communication probably failed
 if ((v == 0x00) || (v == 0xFF)) {
 Serial.println(F("WARNING: Communication failure, is the MFRC522 properly connected?"));
 }
}

and RFID example → cardRead

/**
/**
* Read a card using a mfrc522 reader on your SPI interface
* Pin layout should be as follows (on Arduino Uno):
* MOSI: Pin 11 / ICSP-4
* MISO: Pin 12 / ICSP-1
* SCK: Pin 13 / ISCP-3
* SS: Pin 10
* RST: Pin 9
*
* Script is based on the script of Miguel Balboa. 
* New cardnumber is printed when card has changed. Only a dot is printed
* if card is the same.
*
* @version 0.1
* @author Henri de Jong
* @since 06-01-2013
*/

#include <SPI.h>
#include <RFID.h>

#define SS_PIN 10
#define RST_PIN 9

RFID rfid(SS_PIN, RST_PIN); 

// Setup variables:
    int serNum0;
    int serNum1;
    int serNum2;
    int serNum3;
    int serNum4;

void setup()
{ 
  Serial.begin(115200);
  SPI.begin(); 
  rfid.init();
  
}

void loop()
{
    
    if (rfid.isCard()) {
        if (rfid.readCardSerial()) {
            if (rfid.serNum[0] != serNum0
                && rfid.serNum[1] != serNum1
                && rfid.serNum[2] != serNum2
                && rfid.serNum[3] != serNum3
                && rfid.serNum[4] != serNum4
            ) {
                /* With a new cardnumber, show it. */
                Serial.println(" ");
                Serial.println("Card found");
                serNum0 = rfid.serNum[0];
                serNum1 = rfid.serNum[1];
                serNum2 = rfid.serNum[2];
                serNum3 = rfid.serNum[3];
                serNum4 = rfid.serNum[4];
               
                //Serial.println(" ");
                Serial.println("Cardnumber:");
                Serial.print("Dec: ");
		Serial.print(rfid.serNum[0],DEC);
                Serial.print(", ");
		Serial.print(rfid.serNum[1],DEC);
                Serial.print(", ");
		Serial.print(rfid.serNum[2],DEC);
                Serial.print(", ");
		Serial.print(rfid.serNum[3],DEC);
                Serial.print(", ");
		Serial.print(rfid.serNum[4],DEC);
                Serial.println(" ");
                        
                Serial.print("Hex: ");
		Serial.print(rfid.serNum[0],HEX);
                Serial.print(", ");
		Serial.print(rfid.serNum[1],HEX);
                Serial.print(", ");
		Serial.print(rfid.serNum[2],HEX);
                Serial.print(", ");
		Serial.print(rfid.serNum[3],HEX);
                Serial.print(", ");
		Serial.print(rfid.serNum[4],HEX);
                Serial.println(" ");
             } else {
               /* If we have the same ID, just write a dot. */
               Serial.print(".");
             }
          }
    }
    
    rfid.halt();
}

I cannot add RFID.h and RFID.cpp because of the limit characters but you can find them on the above links. If you want me to post them here, let me know and i`ll add another post with them. (they are the default ones, haven’t touched them)

If you have ideas what’s wrong with it, please let me know, i`d appreciate your help.

Thank you.



If you have ideas what's wrong with it, please let me know,

I think you have two very different types of token.

The hardware and the code is for a Mifaire type token. It looks like the fobs are 125KHz tokens. So if that is true there is nothing you can do in just software to read both types of card on the same hardware.

The two types of token are incompatible.

Hello and thank you for your reply.

If by fobs you mean the key cards, i can tell you that the blue one came in the package together with the big white one.

A few weeks ago, I manage to read all my key cards but everything was working really slow . I would scan the key card and after 10 seconds of processing, the UID would appear on the screen but back then, the white card was the one that I could not read. Now is the other way around. I can tell you that at least the blue ones should be on 13.56.

If I scan the white card, it says that it is Mifare 1K so I am just gonna take a wild guess and say that the blue one should be the same since they came in the same package.

The cards are S50 which from a little research on the web are 13.56MHz.

If there is nothing I can do about the key chips, can you recommend a cheap RFID and some key cards I could buy ?

A few weeks ago, I manage to read all my key cards

That would have been good to know on the first post.

So what has changed between now and then?
Is the code the same?

but everything was working really slow

Well that is what you will have to investigate.
It is always good to start from something that is working and then try and modify / improve it.

So post the code that reads both but is slow and we can go from there.

The code that I have used few weeks ago I did not save but as far as I can remember it was one of the two examples above. I don't remember which one.

Back then I could not read the white card, but the blue key chip worked. Now it is the other way around. I never got them both to work.

If someone has a rfid-rc522, could you please use that example and tell me if you can read key cards ? I have seen people on youtube that are using the exact code and it works for them.

Anyone ? anything ?

Unskipp:
Anyone ? anything ?

Well no, you have been asked for code and you have given none. You have said:-

far as I can remember it was one of the two examples above. I don't remember which one.

So try both and find out.
You are the one with the hardware and the fobs, there is little else anyone can do if you do not cooperate.

So I am back here to let everyone know, just in case they end up with the same problem, how I fixed it.

First of all, as the grumpy old man above said, the key fobs were on 125KHz. They came together in the same package with the 13.56 RFID reader but they were on different frequencies. I ended up ordering a few of each type on the right frequency.

Second of all, use this library for RFID : GitHub - miguelbalboa/rfid: Arduino RFID Library for MFRC522 . It is very good one you spend a bit of time and read about everything (what every function is doing and how to use them).

Last but not least, MAKE SURE you solder the pins on the rfid board. In that way you get 100% everything is alright.

Hope this post will help some people in case they will end up with the same problems .

I was about to reply that those buttons like exactly like the 125 kHz ones I have here.

I have made sure that I have the proper connections and that they are touching everything

I was also hoping you didn't mean literally "touching" but "soldered together properly".

i try to verify dumpinfo but i have error code.

DumpInfo:42: error: 'MFRC522' does not name a type
DumpInfo.ino: In function 'void setup()':
DumpInfo:48: error: 'mfrc522' was not declared in this scope
DumpInfo.ino: In function 'void loop()':
DumpInfo:55: error: 'mfrc522' was not declared in this scope
DumpInfo:60: error: 'mfrc522' was not declared in this scope
DumpInfo:65: error: 'mfrc522' was not declared in this scope

How to handle them somehow???

i try to verify dumpinfo

Do not expect us to guess what you are trying to compile. POST YOUR CODE.

How to handle them somehow???

Download!!! and!!! install!!! the!!! required!!! library!!!

Does the extra punctuation help? No? Then you stop doing it, too.

Hello,

I am new in arduino programming and RFID

I need RFID with maximum read distance of 1 meter. Is there any RFID module like this? If there is, Where can I buy? .

I am sorry for my mistake, and thank you.

I need RFID with maximum read distance of 1 meter. Is there any RFID module like this?

Your only chance is a UHF RFID - they are not cheap but this is the cheapest one I have come across:-