Opgelost: RC522 RFID lezer leest (sommige) kaarten niet. (Deel 1)

Ik heb een probleem (mede-)ontdekt met de RC522 rfid kaartlezer modules die op ebay / aliexpress en dergelijk aangeboden worden: ze lezen sommige kaarten niet. In deze blogpost wil ik uitleggen wat het probleem is, en hoe het opgelost kan worden, in de hoop dat mensen die hetzelfde probleem tegenkomen daar wat aan hebben.

rfidadvertentiefoto
RC522 module (foto uit advertentie van verkoper)

En omdat het anders een erg droog stuk tekst wordt, schrijf ik halverwege een stuk onzin over een zomerjurk. (Want dit is mijn blog, en niet mijn scriptie :P)

Kieskeurige kaartlezers

Laat ik bij het begin beginnen:
Bij MakerSpace Leiden worden deze RFID-RC522 kaartlezers gebruikt om toegangskaarten te lezen in het deursysteem en bij de zwaardere machines waarvoor training nodig is. Deelnemers van de MakerSpace kunnen daarbij hun OV-chipkaart (Of een andere 13,56Mhz RFID kaart die ze al hebben) gebruiken. Ze kunnen dan deze kaart gebruiken om toegang te krijgen tot de MakerSpace, of om b.v.  (na relevante training en goedkeuring) de cirkelzaagtafel in te kunnen schakelen.

Het probleem dat daarbij boven water kwam, is dat sommige RC522 kaartlezers sommige kaarten niet lezen. (Wat voor de (on)nodige frustratie zorgt als het toevallig je eigen kaart is bij de lezer van de deur waar je door wilt… Of het is de kaartlezer van het project waar je mee bezig bent…)

Goed v.s. Slecht

Deze “slechte” kaartlezers lezen dan alleen de bij de kaartlezer meegeleverde blanco kaart en blauwe druppel.  (Zie foto uit advertentie). Andere kaarten, zoals b.v. de OVchipkaart, of een koffiemachine / kopieermachinekaart, wegwerp OV-kaartjes, bankpassen, en andere toegangskaarten worden niet gelezen. Dit terwijl de RC522 kaartlezer deze kaarten wel zou moeten kunnen lezen, zolang het 13,56 MHz RFID kaarten zijn. En “goede” kaartlezers lezen deze kaarten inderdaad.

(Er zijn enkele andere standaarden en frequenties, de RC522 kan alle kaarten lezen die de op deze module toegepaste MFRC522-chip ondersteunt: “The MFRC522 supports all variants of the MIFARE Mini, MIFARE 1K, MIFARE 4K, MIFARE Ultralight, MIFARE DESFire EV1 and MIFARE Plus RF identification protocols.” De koffie/kopieermachine kaart die ikzelf gebruik is een ISO/IEC14443-4 kaart, en ook deze kan worden gelezen door deze chip.)

Ik onderneem Stappen!

De eerste stap was de verschillende varianten van deze module te identificeren en in te delen op hun (on)geschiktheid om de diverse kaarten te kunnen lezen. Er blijken wat subtiele verschillen zichtbaar tussen de “goede” modules (Die alle kaarten lezen) en de “slechte” (Die alleen de meegeleverde kaart lezen). Hiervoor heb ik een aantal foto’s van “goede” en “slechte” kaartlezers gemaakt (Zie verderop).

De volgende stap was om uit te zoeken wáárom de “slechte” modules geen OV-chipkaarten e.d. willen lezen. En stap 2b is dan uiteraard om uit te zoeken of dit te repareren valt zodat deze kaartlezers wél alle soorten MIFARE / ISO/IEC14443-4 kaarten kunnen lezen. (Spoiler alert: Jazeker, dat is te repareren! Vervang C8,9,10 en 11. Zie verderop.)

Verschil moet er wezen:

En dit zijn de visuele verschillen tussen de “goede” en “slechte¨  kaartlezers:

RFID_RC522_COMPARE_GOODvsBAD_2
Goede lezer links, slechte rechts. Let op het kleurverschil van de condensatoren.

Let op de verschillende kleur condensators C4,5,6,7,8,9,10 en 11, en op de silkscreen van C2, R3,R4 en C3.

Bij de “slechte” lezer is een ander type condensators toegepast, die wit zijn ipv bruin. Dat kleurverschil is niet de oorzaak van slechter functioneren, maar het kan een hulpmiddel zijn om “goede” lezers (Met bruine condensatoren) te herkennen. De capaciteit is overigens hetzelfde, het verschil zit in de antennespoel, maar dat is niet goed zichtbaar. (Hopelijk wel meetbaar, en in elk geval merkbaar, want de “slechte” lezer leest geen OV-chipkaart e.d.)

De silkscreen van C2,3 en R3,4 staat bij de “goede” lezer links naast de componenten, en bij de “slechte” lezer symmetrisch rond het IC. Ook dit is uiteraard niet de óórzaak van het slechter functioneren van de “slechte” lezer, maar slechts een visueel hulpmiddel.

Een ander opvallend punt zijn de “fiducials”  in de linker en rechter bovenhoek van de print bij de “slechte” lezer. Deze 2 ronde puntjes zijn visuele hulpmiddelen voor een bestukkingsmachine en hebben niks te maken met de functie van de printplaat, maar ze zijn bruikbaar zijn om onderscheid te kunnen maken tussen beide varianten van de RFID-RC522. (Ten overvloede: ook deze fiducials zijn niet de reden van het slecht functioneren van de “slechte” lezer)

RFID_RC522_COMPARE_GOODvsBAD
Dezelfde foto, beter belicht. Het kleurverschil van de condensatoren valt nu minder op, maar de silkscreen en fiducials zijn nu duidelijker.

Op bovenstaande 2e foto is ook verschil in de antennespoel te zien, de banen zijn iets dunner en liggen verder uit elkaar bij de “slechte” lezer. Dit verschil is echter slecht te zien in het echt. (Maar waarschijnlijk de reden dat de spoel andere eigenschappen heeft)

RFID_RC522_COMPARE_GOOD
Close-up silkscreen rond IC en IC, goede lezer.
RFID_RC522_COMPARE_BAD
Idem, “slechte” lezer.

Er bleek nog een variant te zijn van een “slechte” lezer, die óók geen andere dan de meegeleverde kaarten kan lezen:

IMG_0349_Lineup
Van links naar rechts: Goede lezer, slechte lezer van het later ontdekte soort, slechte lezer zoals eerder getoond en besproken.
IMG_0351_OPTION3_BAD
close-up slechte lezer van het later ontdekte soort.

Opvallend aan deze printplaat is dat de montagegaten niet zijn doorgemetaliseerd. De referenties van C2,3, en R3,4 staan net als bij de goede lezer links naast de componenten en dus niet symmetrisch langs de chip zoals bij de andere “slechte” lezers. De soldermask is bij deze print ook een nét iets andere kleur, glanzender, en mogelijk dunner (Of de koperlaag is dikker). Ook op deze print staan fiducials (Op de foto in de linkerbovenhoek van de spoel en helemaal rechtsonder naast het kristal)

Ook bij deze “derde optie” is het onjuist functioneren niet te wijten aan eender welk van deze opvallende visuele verschillen. (Sterker nog, dikker koper en fiducials zijn eerder een reden om deze pcb als “beter” te beschouwen. Enig probleem: hij leest geen OV-chipkaarten e.d.)

Op basis van deze foto’s zou je kunnen proberen “goede” lezers te kunnen kopen, en geen “slechte”, echter, je krijgt niet altijd opgestuurd wat op de foto staat en de verschillen zijn dusdanig subtiel dat op basis hiervan claimen dat je niet gekregen hebt wat je gekocht hebt mogelijk erg lastig is. (Laat een reactie achter als je dit geprobeerd hebt. Hoogstwaarschijnlijk zijn er meer varianten op de markt dan die ik gefotografeerd heb.)

Als je een blauwe zomerjurk bestelt en je krijgt een rode zomerjurk, kun je claimen dat de kleur onjuist is, dat is een standaard claim. Als je een blauwe kaartlezer besteld en een blauwe kaartlezer ontvangt die weliswaar subtiel anders is waardoor ‘ie geen kaarten leest, kun je niet claimen dat de kleur onjuist is. (Als je een blauwe kaartlezer besteld en je krijgt een rode zomerjurk… Dan is er wat anders misgegaan*, al kun je in theorie claimen dat die rode zomerjurk geen kaarten leest, maar vermoedelijk voldoet dat aan de gegeven specificaties en krijg je dus geen nieuwe. Al draag ik uiteraard** nooit zomerjurken, ongeacht hun kleur, volgens mij kunnen ze geen RFID-kaarten lezen en hoort dat ook zo.)

How To Fix

Dat is natuurlijk het belangrijkste: Hoe zijn “slechte” lezers te repareren zodat ze alle kaarten lezen die ze horen te kunnen lezen?

Ik heb de chip van een “slechte” lezer op een “goede” lezer te gezet, en deze goede lezer blijft dan kaarten lezen. Het ligt dus niet aan de chips, die zijn goed.

Bij de “slechte” lezers van de foto (Niet de derde variant) bleek de resonantiefrequentie van de antenne te laag te liggen***. De antenne is een LC-kring, en de resonantiefrequentie is dus te corrigeren door de spoel of de condensators aan te passen. Omdat de spoel een op de printplaat ge-etste spoel is, is deze niet aan te passen, en dan blijven de condensators over. Er staat (C8+C10 == C9+C11) ongeveer 210pF, dit moet lager worden zodat de resonantiefrequentie omhoog gaat, ongeveer 185pF werkt goed.

Simpele howto voor iedereen met een goede soldeerbout. Slechts 2 eenvoudige stappen:

  1. Verwijder C8,C9,C10 en C11. Dit gaat goed met hete lucht en een pincet, of voor wie niet de luxe van een hete lucht soldeerstation heeft: door dusdanig veel tin toe te voegen dat de soldeerbout beide zijden van de condensator tegelijk kan verwarmen waarna de condensator weg te schuiven valt.
  2.  Plaats nieuwe condensatoren. C8 en C9 worden ieder 150pF, C10 en C11 worden ieder 33pF. (0805 NP0, 50V). (Direct 180pF plaatsen voor C8 en C9, en C10 en 11 open laten kan wellicht ook, maar ik had geen 180pF voorhanden. 47pF stapelen tot 188pF werkt ook, maar dit was bedoeld als een simpele howto…).

(Allright, 3 stappen. Stap 0 is ergens een stel 0805 150pF en 33pF condensatoren te kopen, maar aangezien geen enkele webshop mij daarvoor sponsoring aanbied, staat hier geen directe link.)

Voetnoten

* Sommige van die Aliexpres / ebay winkels verhandelen zowel kleding als elektronica. Handelaren handelen in handel… Het is niet eens de mafste combinatie die ik ben tegengekomen in een ebay-shop.

** Als man. Dat is niet per-se een excuus om geen zomerjurken te dragen, zeker tegenwoordig, maar ik ben heel saai 😛

*** meting gemaakt aan een “slechte” kaartlezer met een miniVNA Tiny (Ik kreeg de kans tijdelijk die VNA te lenen en was daar uiteraard erg blij mee. Hij is inmiddels terug naar zijn eigenAart ;)).

Meer info

Op de wiki van de MakerSpace heb ik al eerder over dit project geschreven.

Deel 1 uit de titel impliceert natuurlijk een deel 2.

Comments

5 responses to “Opgelost: RC522 RFID lezer leest (sommige) kaarten niet. (Deel 1)”

  1. […] to explain how to recognize these faulty readers and how to fix them. (There is a more detailed post in […]

  2. lukelectro Avatar

    Zojuist gevonden dat in 2015 hier ook iemand mee bezig was:

    https://forum.mikroe.com/viewtopic.php?f=147&t=64203

    Het interessante is dat hij een andere aanpak heeft, en de spoelen L1, L2 vervangt door exemplaren die meer stroom aan kunnen (Lagere DC weerstand neem ik aan), en C4,5 vervangt door 33pF.

  3. Artur Avatar
    Artur

    Hallo Lucas,
    dankjewel voor het delen van deze informatie!

    Ook ik heb een aantal van de PCB’s aangeschaft voor een bepaalde toepassing, ik gebruik een Arduino UNO om de data van de RC522 ‘bruikbaar’ te maken voor mijn specifieke toepassing.

    Maar nu mijn probleem, ik vermoed dat bij mij ook de resonantiefrequentie van de antennespoel niet klopt.
    voor mijn referentie even een vraagje: De resonantiefrequentie zou exact op 13,56 MHz moeten liggen?

    In mijn situatie maakt dus de Arduino wel connectie met de RC522, deze heb ik tien stuks besteld van drie verschillende leveranciers.
    Zoals ik zei, de RC522 maakt wel verbinding met de Arduino, deze geeft dan ook in de Serial Monitor de firmware version van de RC522.
    Helaas leest de RC522 helemaal niks (bij alle tien de RC522’s is dit zo), althans mijn Serial Monitor geeft geen code weer. Daarom gaat mijn vermoede naar de resonantiefrequentie van de antenne, de chip maakt verbinding dus dat is het probleem niet.

    Is er een mogelijkheid dat ik de resonantiefrequentie kan meten? Zoja, hoe kan ik dit doen?
    Vermoedelijk moet ik namelijk andere condensators toepassen dan dat jij hebt gedaan, de 150 en 33 Picofarad heb ik al geprobeerd, geen resultaat hier…

    Bij deze hoop ik dat je genoeg informatie hebt om mijn vraag te beantwoorden, zoniet dan hoor ik dit graag.

    Groet, Artur

    1. Lucas Avatar
      Lucas

      NXP Appnote AN1445 verteld je als het goed is alles wat je wilt weten (en misschien meer).

      Ik hoop dat je daar wat aan hebt. De appnote omschrijft de volledige tuningprocedure en stuk beter dan mijn blogpost. Veel succes.

      1. Lucas Avatar
        Lucas

        En AN11535: https://www.nxp.com/docs/en/application-note/AN11535.pdf

        Al heb je niet per se een VNA nodig om de resonantiefrequentie te meten, met een functiegenerator en een ‘scope kijken waar de opslingering het grootste is kan ook. Als je de 13 a 14 MHz niet haalt, dan met een grotere (bekende) condensator, en zo terugrekenen naar de inductie van de spoel. (Of die meten met een LC-meter). En dan de juiste Ctjes uitrekenen.

        Anyway, succes!

Leave a Reply

Your email address will not be published. Required fields are marked *