Problème lecture RFID-RC522 avec Arduino Méga 2560

Bonsoir à tous,

Leçon 21 le module RFID et là cela commence à se corser.
J'ai vérifié mon montage, un peu spécifique avec la Méga 2560 (bien fait, erreur de câblage), puis vérification des connexions et pour le programme, je vous le joins.

//www.elegoo.com
//2016.12.09

/*
 * --------------------------------------------------------------------------------------------------------------------
 * Example to change UID of changeable MIFARE card.
 * --------------------------------------------------------------------------------------------------------------------
 * This is a MFRC522 library example; for further details and other examples see: https://github.com/miguelbalboa/rfid
 * 
 * This sample shows how to set the UID on a UID changeable MIFARE card.
 * NOTE: for more informations read the README.rst
 * 
 * @author Tom Clement
 * @license Released into the public domain.
 *
 * 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 5  // Configurable, see typical pin layout above
#define SS_PIN 53  // Configurable, see typical pin layout above

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

/* Set your new UID here! */
#define NEW_UID \
  { 0xDE, 0xAD, 0xBE, 0xEF }

MFRC522::MIFARE_Key key;

void setup() {
  Serial.begin(9600);  // 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 card
  Serial.println(F("Warning: this example overwrites the UID of your UID changeable card, use with care!"));

  // Prepare key - all keys are set to FFFFFFFFFFFFh at chip delivery from the factory.
  for (byte i = 0; i < 6; i++) {
    key.keyByte[i] = 0xFF;
  }
}

// Setting the UID can be as simple as this:
//void loop() {
//  byte newUid[] = NEW_UID;
//  if ( mfrc522.MIFARE_SetUid(newUid, (byte)4, true) ) {
//    Serial.println("Wrote new UID to card.");
//  }
//  delay(1000);
//}

// But of course this is a more proper approach
void loop() {

  // Look for new cards, and select one if present
  if (!mfrc522.PICC_IsNewCardPresent() || !mfrc522.PICC_ReadCardSerial()) {
    delay(50);
    return;
  }

  // Now a card is selected. The UID and SAK is in mfrc522.uid.

  // Dump UID
  Serial.print(F("Card UID:"));
  for (byte i = 0; i < mfrc522.uid.size; i++) {
    Serial.print(mfrc522.uid.uidByte[i] < 0x10 ? " 0" : " ");
    Serial.print(mfrc522.uid.uidByte[i], HEX);
  }
  Serial.println();

  // Dump PICC type
  //  MFRC522::PICC_Type piccType = mfrc522.PICC_GetType(mfrc522.uid.sak);
  //  Serial.print(F("PICC type: "));
  //  Serial.print(mfrc522.PICC_GetTypeName(piccType));
  //  Serial.print(F(" (SAK "));
  //  Serial.print(mfrc522.uid.sak);
  //  Serial.print(")\r\n");
  //  if (  piccType != MFRC522::PICC_TYPE_MIFARE_MINI
  //    &&  piccType != MFRC522::PICC_TYPE_MIFARE_1K
  //    &&  piccType != MFRC522::PICC_TYPE_MIFARE_4K) {
  //    Serial.println(F("This sample only works with MIFARE Classic cards."));
  //    return;
  //  }

  // Set new UID
  byte newUid[] = NEW_UID;
  if (mfrc522.MIFARE_SetUid(newUid, (byte)4, true)) {
    Serial.println(F("Wrote new UID to card."));
  }

  // Halt PICC and re-select it so DumpToSerial doesn't get confused
  mfrc522.PICC_HaltA();
  if (!mfrc522.PICC_IsNewCardPresent() || !mfrc522.PICC_ReadCardSerial()) {
    return;
  }

  // Dump the new memory contents
  Serial.println(F("New UID and contents:"));
  mfrc522.PICC_DumpToSerial(&(mfrc522.uid));

  delay(2000);
}

J'avoue que j'ai du mal à comprendre ce qu'il fait exactement...on verra par la suite à tête reposée et plus expérimenté.

Je m'arrête à ce message

Warning: this example overwrites the UID of your UID changeable card, use with care!

Rien ne se passe ensuite que je présente le badge ou la carte, il ne me fait pas de lecture....
J'ai regardé sur d'anciens posts en message mais je ne vois pas ce qu'il foire...

Au moins, le capteur sonore était plus simple :slight_smile:

Merci par avance de votre aide.

Rebonjour à tous,

Avec un autre ouvrage, j'ai une autre manip avec ce module mais en utilisant cette fois çi une carte Uno R3. Le programme récupère juste les numéros d'identification des tag pour ensuite en autoriser l'accès dans un autre programme.

J'ai beau présenté ma carte, mon porte clés au niveau du RFID-RC 522 , rien ne se passe et s'affiche dans le moniteur série (les vitesses du programme et du moniteur sont identiques).

Ma question est la suivante : comment je peux tester mon RFID-RC522 pour savoir si je n'ai pas un problème purement matériel ?

Merci par avance.

Avec cette librarie, il y a des exemples qui sont installés.
Au lieu de prendre un exemple qui modifie la carte, si tu commençais avec un exemple qui se contente de lire celle-ci ce serait sans doute plus simple.

Merci, si j'ai tout compris, je vais donc au niveau Fichier-> Exemples -> MF-RC522-> ReadNuid ?

A moins qu'il s'agit de toute autre chose ou d'un autre exemple ?
J'avoue que j'ai vraiment du mal avec ce "capteur"...

Oui, par exemple ou alors DumpInfo.

Merci pour ton retour. Je teste ce soir.

Avec Dumpinfo, j'ai comme message dans le moniteur série

WARNING: Communication failure, is the MFRC522 properly connected?

J'ai vérifié mes branchements, ils sont bons.
On va vérifier mes câbles de raccordement mais on dirait bien que le souci est hardware avec ce fameux module.

  • Les masses sont bien réunies?
  • Le module est alimenté comment?

Oui pour les masses, j'ai contrôlé.

Pour le module, alimentation via la borne de 3,3 V de la carte Arduino qui est elle même alimenté via le câble USB par le PC.

J'a fait des tests de continuité pour mes cordons ils sont ok.

Après je peux refaire un test de "Dumpinfo" avec la carte Méga 2560 pour voir si je n'ai pas grillé un port 9-13 de la carte Uno. Je pense au port 13 où une manip mettait directement une LED entre le port 13 et la masse sans résistance... Peut être pas cela mais je cherche des pistes.

Mon port 13 de la carte Uno est parfaitement fonctionnelle malheureusement donc je crains plus un souci du fameux module en terme purement hardware :(

Et surtout même message avec la Mega 2560.

Pour le module, il s'agit de celui là

Tu as lu le manuel de la carte?

If you want to use an Arduino with a 5 V logic level, such as an Arduino
Uno, you need to downgrade all data lines leading from the Arduino to
the module from 5 V to 3.3 V with a voltage translator.

Il faut faire une adaptation de niveau entre les cartes qui fonctionnent en 5V et la carte RFID-RC522.

Désolé fdufnews mais je ne comprends pas puisque l'Uno fournit du 3,3, Volts Je branche bien ce module sur la broche 3,3 volts de l'Arduino.

Les deux montages que j'ai , un avec le kit (avec la Mega 2560), le deuxième avec un livre raccordent justement sur cette borne 3.3 v de l'Arduino.

Oui mais les sorties de la carte Arduino sortent des signaux en 5V.
Lis le manuel de la carte !

En utilisant un traducteur automatique, je ne lis pas l'anglais :)

Je suis quand même étonné que dans deux tutos en plus différents utilisant ce matos, le sujet n'est pas abordé.

Pour un kit chinois, je peux le concevoir , pour un livre ,cela me laisse plus dubitatif...