Problème de capteur RFID

Portrait de ElCreator

Bonjour, 

Pour mon école je dois présenter un projet et j'ai choisit d'essayer de faire une chatière électronique.

Pour cela j'ai dans un premier temps fait un montage avec un bouton qui fonctionne. Mais je voudrais à présent pouvoir la faire marcher avec un badge RFID. (J'utilise une carte arduino uno)

J'ai donc commencé avec les programmes permettant de trouver l'IUD de mon badge. Après plusieurs essais, il a marché une fois mais le temps que je prenne la carte fournie dans le pack pour la tester à son tour, plus de réponse, le programme ne marchait plus non plus avec le badge, qui fonctionnait pourtant 5 minutes avant.

J'ai essayé de brancher les sorties SDA et RST sur d'autres pins de la carte arduino (5 et 6) et ça n'a pas marché non plus.

Je n'ai branché le module que sur le 3,3V (jamais sur le 5V), j'ai vérifié mes soudures qui m'ont l'air correctes et j'ai changé les fils.

j'utilise cette carte https://www.amazon.fr/SODIAL-capteur-dinduction-CRFM-522-Module/dp/B00K6...

Comme mon programme avec le bouton marche toujours, je ne pense pas que le problème vienne de ma carte arduino.

Avez vous d'autres idée de où pourrait venir mon problème ?

Portrait de ElCreator

Voici le programme que j'utilise pour obtenir l'IUD de la carte et qui a marché une fois

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

RFID RFID(10,9);

int UID[5];

void setup()
{
  Serial.begin(9600);
  SPI.begin();
  RFID.init();  

}

void loop()
{
    if (RFID.isCard()) {  
          if (RFID.readCardSerial()) {        
            Serial.print("L'UID est: ");
            for(int i=0;i<=4;i++)
            {
              UID[i]=RFID.serNum[i];
              Serial.print(UID[i],DEC);
              Serial.print(".");
            }
            Serial.println("");
          }          
          RFID.halt();
    }
    delay(100);    
}

Portrait de ElCreator

Et voici une photo de mon montage même si je pense qu'on ne dois pas comprendre grand chose a cause des fils du bouton

p4150067_-_copie.jpg

Portrait de ElCreator

Voici des photos plus zoomées de mes branchements

p4160070.jpg

p4160069.jpg

J'ai branché :

SDA -> 10 (orange)

SCK -> 13 (vert)

MOSI -> 11 (violet)

MISO -> 12 (bleu)

IRQ -> pas branché

GND -> GND (noir)

RST -> 9 (orange)

3.3V -> 3.3V (rouge)

Portrait de ElCreator

Et voilà un schéma du montage avec uniquement le module RFID

p4160071.jpg

Portrait de ElCreator

Et voici un shéma avec le bouton et le servomoteur

p4160072.jpg

Portrait de ElCreator

Voici le module RFID de plus prèsp4160081.jpg

p4160085.jpg

Portrait de ElCreator

Merci pour tous vos bon conseils et vos réponses rapides.

J'ai racheté une carte et ça a marché du premier coup !

Pour ceux qui rencontreront des problèmes similaires, voici la carte que j'ai acheté : https://www.velleman.eu/support/downloads/?code=VMA405 (et là au moins les soudures étaient déjà faites !)  et j'ai appliqué à la lettre les consignes données par la "notice" fournie sur le site : https://www.velleman.eu/downloads/29/vma405_a4v01.pdf avec la librairie qu'ils donnent : https://www.velleman.eu/downloads/29/vma405_library.zip

J'ai adapté le programme pour le faire marcher avec mon servomoteur plutôt qu'avec des leds :

#include <SPI.h>
#include <RFID.h>
#include <Servo.h>                    // permet de faire appel à la bibliothèque Servo

Servo cervelle;                       // crée une constante appelée « cervelle » utilisable par la bibliothèque Servo.

#define SS_PIN 10
#define RST_PIN 9

RFID rfid(SS_PIN,RST_PIN);

int power = 7;
int led = 8; 
int serNum[5];
/*
* This integer should be the code of Your Mifare card / tag 
*/
int cards[][5] = {{93,134,37,217,39}};

bool access = false;

void setup(){

    Serial.begin(9600);
    SPI.begin();
    rfid.init();
    cervelle.attach(3);                   // commande de la bibliothèque Servo, qui consiste à « attacher » le servomoteur à la PIN 3
   
}

void loop(){
    
    if(rfid.isCard()){
    
        if(rfid.readCardSerial()){
            Serial.print(rfid.serNum[0]);
            Serial.print(" ");
            Serial.print(rfid.serNum[1]);
            Serial.print(" ");
            Serial.print(rfid.serNum[2]);
            Serial.print(" ");
            Serial.print(rfid.serNum[3]);
            Serial.print(" ");
            Serial.print(rfid.serNum[4]);
            Serial.println("");
            
            for(int x = 0; x < sizeof(cards); x++){
              for(int i = 0; i < sizeof(rfid.serNum); i++ ){
                  if(rfid.serNum[i] != cards[x][i]) {
                      access = false;
                      break;
                  } else {
                      access = true;
                  }
              }
              if(access) break;
            }
           
        }
        
       if(access){
           Serial.println("Welcome MINOU ");
    cervelle.write (110);              // alors le servomoteur prend un angle de 110°.
    delay(5000) ;                     // on attend un délais de 5 secondes  
    cervelle.write (2);               // le servomoteur revient à l’angle 0, sa position de départ.
           
      } else {
        
    cervelle.write (2);               // le servomoteur revient à l’angle 0, sa position de départ.   
      
       }        
    }
    
    rfid.halt();
    cervelle.write (2);               // le servomoteur revient à l’angle 0, sa position de départ.   
}

La conclusion pour ceux qui rencontreront les mêmes symptomes que moi : c'est le module RFID qui est mort *^w^*

Merci encore à brossden pour son aide précieuse et bon courage à ceux qui se lancent dans des projets similaires ! :)

Portrait de ElCreator

c'est possible, a vue d'oeuil je dirais que non, ça ne touche pas, mais c'est sûrement un truc de ce genre qui s'est passé