lecteur RFID-RC522

Bonjour,

j'ai un carte RFID-RC522 :

Bonjour,

Je n'ai aucune expérience avec le RFID, mais en ce qui concerne la conversion des signaux de 5 V à 3,3 V, je connais quelques solutions:

  • Un convertisseur de signaux logiques tout fait comme celui de Sparkfun: https://www.sparkfun.com/products/8745

  • Un circuit intégré comme le 74HC4050

  • Un simple diviseur de tension avec deux résistances

Bonjour,

1) Tu alimentes la carte via la sortie 3v3 de l'arduino et tu utilises un buffer logique (HC4050 par exemple) pour "absorber" le 5v en sortie de l'arduino. 2) http://forum.arduino.cc/index.php?topic=111113.0

merci pour les réponses

un convertisseur pour bus i2c ça marche aussi pour le SPI ?

!(http://i.ebayimg.com/00/s/ODAwWDgwMA==/z/hpMAAOxyfS1Rynuw/$(KGrHqMOKpYFG-CGJbR+BRynuwIlW!~~60_3.JPG)

Oui mais bon tu n'as que 2 lignes en I2C, donc pour utiliser ton circuit avec du SPI il en faudra au moins deux ... Alors qu'un HC4050 ça coute rien du tout.

En fait c'est même 5 fils à connecter :

MOSI: Pin 11 / ICSP-4 MISO: Pin 12 / ICSP-1 SCK: Pin 13 / ISCP-3 SS: Pin 10 (Configurable) RST: Pin 9 (Configurable)

j'ai commandé des CD5040BE pour avoir 6 convertisseurs, j’espère que ça va fonctionner..

l'autre solution serait de prendre un Arduino en 3.3v directement.

en cherchant sur Google j'ai trouvé plusieurs version de carte RFID 522

ici par exemple elle est directement branché sur l'Arduino sans convertisseur 5-3.3v

mais la mienne n'a pas les mêmes broches j'ai une broche "SDA" et "IRQ" (à la place de "NC" sur la première photo) mais pas de broche "SS" (Slave Select signal selects salve devices) ???

je teste avec mais rien ne se passe...

sur ce PDF http://www.b2cqshop.com/best/RC522.pdf j'ai trouvé la réponse page 46 : pin SDA = NSS mais ça ne fonctionne toujours pas ! :0

Les broches du RC522 sont pas "5v tolerant" (de mémoire), t'amuse pas à brancher n'importe quoi sans convertisseur ;)

Merci, mais c'est peut être trop tard... je vais attendre le 4050 et je verrais si j'ai grillé mon lecteur rfid :roll_eyes:

yorgouth: Merci, mais c'est peut être trop tard... je vais attendre le 4050 et je verrais si j'ai grillé mon lecteur rfid :roll_eyes:

Tant que t'as pas alimenté le lecteur directement en 5V le circuit ne devrait pas avoir trop morflé ;) NxP fait des ci relativement "idiot proof" :grin:

Bon j’ai reçu les cd4050, rapide les chinois…

je branche sur le 4050 les entrées 3,5,7,11,14 sur l’Arduino, les sorties 2,4,6,12,15 sur le RFID
j’alimente le cd4050 et le RFID en 3.3v

je charge un code

/**
* 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); 

int buzzPin = 3;

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

void setup()
{ 
  Serial.begin(9600);
  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(" ");
                //buzzer
                analogWrite(3,20);
                delay(500);
                analogWrite(3,0);
             } else {
               /* If we have the same ID, just write a dot. */
               Serial.print(".");
             }
          }
    }
    
    rfid.halt();
}

et… rien ne fonctionne !!! =(

Je vois que tu as 5 signaux qui passent par le cd4050: est-ce que ça inclut le signal MISO?

Car puisque le signal MISO (Master In, Slave Out) va du module RFID vers l'Arduino, il n'a pas besoin d'être abaissé par le cd4050.

Je ne suis pas spécialiste en électronique :roll_eyes:, je regarde avec un oscilloscope pour comprendre le fonctionnement ...

Sur la pin MISO à vide j'ai un signal modulé en 3v, si je branche directement sur le MISO coté Arduino le signal chute à 1.2/1.6v ??? en passant par le 4050 le signal MISO coté RFID (broche 15 du 4050) est à 2.6v et coté Arduino (broche 14 du 4050) à 3.3v le 4050 est il bidirectionnel ?

le MOSI est à 3.3v modulé coté RFID et 5v coté Arduino le RST reste en 3.3v permanent (sans modulation) et 5v coté Arduino le RSS est à 3.3v pendant environ 7µs et à 0v 11µs... et 5v coté Arduino le CLk est à 3.3v modulé et 5v coté Arduino

Constatation : En alim USB le 5v de l'Arduino est à 4.5v / 5V en alim externe.

tout semble bien branché mais toujours rien sur le moniteur série...

CD4050 <-> Arduino
VCC (1) <-> 3v3
GND (8) <-> GND

Arduino → CD4050 → RC522
SCK → (3) | (2) → SCK
MOSI → (5) | (4) → MOSI
SS → (7) | (6) → SS
RST → (9) | (10) → RST

RC522 → Arduino
MISO → MISO

Oui ça correspond bien à mon branchement. donc j'en déduits que mon lecteur RFID est HS.

J'ai testé avec RSS sur la pin 5 de l'Ardino mais c'est la même chose. (car la pin 10 de l'Arduino Ethernet est peut être réservée)

Je viens de commander un autre module Rc522 sur Ebay à 5.27€ la suite dans quelques jours...

j'ai tout repris à zéro :

Nouvelle carte RFID, pro-mini3.3v, régulateur 5/3.3v.. et tout fonctionne bien

Je test l'ancienne carte RFID et ça fonctionne également, donc j'en déduit que ça venais du branchement avec l'arduino Ethernet... je vais faire des tests.

édit : je viens de faire le test avec une pro-mini 5v sans CD4050 et ça fonctionne également (avec alim du RFID en 3.3v).

édit2 : le test avec l'Arduino Ethernet sans CD4050 (avec alim du RFID en 3.3v), je change le SS_PIN=10 dans le code en SS_PIN=5 (car le 10 est réservé pour Ethernet) et miracle ça fonctionne bien, certainement un fil défectueux lors du premier essais ???

Je vous donne le code utilisé :

/**
* 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  (ethernet pin 5)
* 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 5 // 10
#define RST_PIN 9

RFID rfid(SS_PIN, RST_PIN); 

int buzzPin = 3;

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

void setup()
{ 
  Serial.begin(9600);
  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(" ");
                //buzzer
                analogWrite(3,20);
                delay(500);
                analogWrite(3,0);
             } else {
               /* If we have the same ID, just write a dot. */
               Serial.print(".");
             }
          }
    }
    
    rfid.halt();
}

merci pour toutes ces infos, je vais tenter de me lancer dans la même aventure que toi... pour le moment les pièces sont en commande, mais j'anticipe sur la réalisation (en pensée tout au moins lol), pourrais tu nous donner un petit schéma électrique de tous tes branchements ?

Merci d'avance

tu a reussi?

De mon coté, j'ai les même problèmes: deux cartes RFID RC522

J'ai suivi a peu près tout les tutoriaux, les examples, mais aucune reaction!

je n'utilise pas de convertisseur 5->3.3V mais j'utilise l'alim 3.3V,c'est peur être la le problème?

En tout cas, tout les exemples de schema que j'ai pu voir sur le net sont branché directement sans convertisseur, mais pas de reaction. Une bonne ame pourrait me donner un petit conseil?