Problème de capteur RFID

ElCreator
dim, 04/15/2018 - 11:47
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 ?
ElCreator
dim, 04/15/2018 - 17:38
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);
}
ElCreator
dim, 04/15/2018 - 17:45
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
ElCreator
lun, 04/16/2018 - 16:41
Voici des photos plus zoomées de mes branchements
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)
ElCreator
lun, 04/16/2018 - 16:51
Et voilà un schéma du montage avec uniquement le module RFID

ElCreator
lun, 04/16/2018 - 17:07
Et voici un shéma avec le bouton et le servomoteur
ElCreator
lun, 04/16/2018 - 17:26
Voici le module RFID de plus près
ElCreator
mar, 04/17/2018 - 15:14
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 ! :)
ElCreator
mar, 04/17/2018 - 17:50
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é