Stocker et utiliser un code RFID sur une carte SD

Bonjour !
Je suis actuellement en Terminal STI2D, pour mon BAC je dois donc réaliser un projet de fin d'année, qui consiste a réaliser un distributeur de croquette automatique (ne jugez pas l'originalité s'il vous plait x) )

Pour ma partie je dois utiliser un capteur RFID pour assigner un code a chaque chat, et leur assigner une "fiche" par la suite (cette fiche contiendrais des informations sur le dit chat)

Mon problème est le suivant : Mon capteur RFID, une fois brancher parvient a me donner un code, hélas celui ci ne correspond pas à celui indiqué sur le badge, est-ce normal ?

Mon second problème : Je ne trouve pas comment enregistrer le code RFID donnée pour Arduino sur une carte SD (par exemple le lire sur un PC)

En vous remerciant d'avance pour vos réponses !

Cordialement.

Ben ce n'est pas facile de dire ce qui ne va pas sans voir le code...
Tu t'es inspiré d'un tutoriel ou tu l'as écrit toi-même de A à Z ?

bonjour voici le programme :

#include <SoftwareSerial.h>

SoftwareSerial SoftSerial(2, 3);
unsigned char buffer[64];      
int count = 0;                    

void setup()
{
   SoftSerial.begin(9600);     
   Serial.begin(9600);         
}

void loop()
{
  
   if (SoftSerial.available())
   {
       while(SoftSerial.available())              
       {
           buffer[count++] = SoftSerial.read();      
           if(count == 64)break;
       }
       Serial.write(buffer, count);     
       clearBufferArray();             
       count = 0;                      
   }
   if (Serial.available())             
   SoftSerial.write(Serial.read());    
}
void clearBufferArray()                 
{
   
   for (int i=0; i<count; i++)
   {
       buffer[i]=NULL;
   }
}

je l'ai trouvé en faisant des recherches pour mon projet

Édite ton message (petit triangle pointant vers le bas à droite de "Quick Edit More"), sélectionne ton code et clique sur le bouton </> pour le mettre entre balises code. C'est plus lisible. Merci

Est-ce que tu comprends ce que fait ce code ?

Pour ce qui est du programme , de ce que j'ai compris , il permet de lire les ID provenant des badges rfid en question et de l'affiché sur le moniteur série.
Après je ne suis pas sur d'avoir saisi entièrement le programme , je débute dans l'arduino ^^

Dans l'IDE, si tu fais CTRL T, l'affichage va indenter les lignes et rendre plus facile de voir les blocs entre accolades.

Pour la loop, ça donne ça (j'ai simplifié l'affichage des blocs) :

void loop() {
  if (SoftSerial.available()){
    while (SoftSerial.available()) {
      buffer[count++] = SoftSerial.read();
      if (count == 64) break;
    }
    Serial.write(buffer, count);
    clearBufferArray();
    count = 0;
  }
  if (Serial.available()) SoftSerial.write(Serial.read());
}

La dernière ligne prend ce que tu tapes au clavier dans la console et l'envoie au lecteur de tags. Ça permet de lui envoyer des commandes, le cas échéant.

 if (Serial.available()) SoftSerial.write(Serial.read());

Donc lorsque tu approches un tag du lecteur il devrait lire les données qui sont inscrites dedans et les afficher (dans la limite de 64 caractères) sur la console. Si ce que tu vois n'est pas comme ce qui est écrit dessus, c'est

  • soit que c'est normal, le code dans le tag n'est pas ce qui est écrit sur le tag
  • soit que tu affiches en décimal un truc qui est écrit dans une autre base (hexa par exemple) sur le tag

Note que tu écris dans un tableau de char, donc c'est peut-être de l'ASCII que tu reçois. Prend un tag et passe le devant le lecteur. Qu'est ce qu'il t'affiche sur la console ? Qu'est-ce qui est écrit sur le tag ? Compare éventuellement avec une table ASCII :


Au fait, c'est quoi ton matériel (Arduino, lecteur de tags, module SD) ?

Merci beaucoup pour ces réponses , pour ce qui est de la carte c'est une carte Arduino Uno , pour le lecteur rfid c'est un Lecteur rfid Grove 125 kHz (réf:113020002), et pour la carte sd c'est une
micro sd tout a fait basique de la marque "SanDisk" avec un adaptateur pour faire carte sd

Après passage d'un tag devant le rfid j'obtiens "050077E8B21D1" , sur le tag il y est écris "0008293153".

Je ne connais pas ce matériel RFID, je n'en ai jamais testé. Des infos ici. D'autres dans le descriptif de cette bibliothèque.

When read the data from some RFID card, you will get data like 00 91 6f 0b f5.

Example:
your card number: 0009531147
that your data : 00 91 6f 0b f5

Notice, f5 is the check bit
f5 = 00^91^6f^0b

Donc, il semble que ce qui est écrit sur le tag n'est pas son ID.

d'accord merci beaucoup

CrocketMan:
Après passage d'un tag devant le rfid j'obtiens "050077E8B21D1" , sur le tag il y est écris "0008293153".

lesept:
...
Donc, il semble que ce qui est écrit sur le tag n'est pas son ID.

bonjour,
le code fourni en #2 n'utilise pas de bibli RFID donc les données son brut il faut donc les décoder selon le mode de fonctionnement (il semble en avoir 2 suivant la position du jumper) ....
ou plus simple utiliser la bibli

Possible : ma conclusion n'est pas tirée du résultat de CrocketMan que tu cites, mais de celui de la bibliothèque :

your card number: 0009531147
that your data : 00 91 6f 0b f5

Il faut peut-être creuser un peu plus... C'est vrai que 0x916f0b s'écrit 9531147 en décimal :confused:

CrocketMan:
Après passage d'un tag devant le rfid j'obtiens "050077E8B21D1" , sur le tag il y est écris "0008293153".

si tu converti "0008293153" de décimal en hexa ça donne "7e8b21" que l'on retrouve bien dans le code lu, les autres bits sont les checksums et autres données constructeur ....

Bien vu !