Pb avec Grove RFID reader (projet cours)

Bonjour.

Je suis en TSSI et je dois faire un projet de fin d’année pour le bac. Notre projet consiste à sécuriser l’accès à l’établissement en s’identifiant avec une carte RFID (ou même un badge).

Nous utilisons:

En cours, nous utilisons un IDE (Arduino) en version 1.6.9 mais nous avons la possibilité d’utiliser 1.8.1 si nécessaire.

Nous avons utilisé le programme fourni avec le grove rfid reader (celui sur le lien). Quand nous téléversons le programme tout fonctionne, quand on approche un badge, une petite led clignote (comme quoi il la détecte bien), mais il ne se passe rien de plus. Rien ne s’affiche sur le terminal (en 9600).
Nous avons bien suivi le tutoriel, branché le reader sur le port UART du shield etc… Mais nous ne comprenons pas la phrase : “You would need to select the jumper to “U” to enter this mode, and the setting is: 9600bps, N, 8, 1, TTL output”.
Peut-être que le problème vient de là.

Ensuite nous avons essayé d’utiliser le deuxième programme fournit (sans trop chercher à comprendre ce qu’était le Wiegand mode, je l’avoue) ; cette fois c’était pire, nous avons eu des problèmes de téléversement vers la carte (avec des messages d’erreurs compliqués, qui ne sont pas toujours les mêmes), et ensuite plus aucun programme ne voulait téléverser (même pas un simple programme faisant clignoter une LED). Je ne sais pas si ce bug est lié au deuxième programme mais il nous a bien embêté.

Enfin bref, nous allons essayé de résoudre un problème après l’autre, déjà si nous arrivons à utiliser le premier programme correctement nous serions ravis.

Voici quelques photos de ce que nous utilisons et d’un des messages d’erreur de téléversement que nous avons eu :

Et voici le code (le premier) que nous avons utilisé :

/*
  link between the computer and the SoftSerial Shield
  at 9600 bps 8-N-1
  Computer is connected to Hardware UART
  SoftSerial Shield is connected to the Software UART:D2&D3
*/
 
#include <SoftwareSerial.h>
 
SoftwareSerial SoftSerial(2, 3);
unsigned char buffer[64];       // buffer array for data receive over serial port
int count = 0;                    // counter for buffer array
 
void setup()
{
    SoftSerial.begin(9600);     // the SoftSerial baud rate
    Serial.begin(9600);         // the Serial port of Arduino baud rate.
}
 
void loop()
{
    // if date is coming from software serial port ==> data is coming from SoftSerial shield
    if (SoftSerial.available())              
    {
        while(SoftSerial.available())               // reading data into char array
        {
            buffer[count++] = SoftSerial.read();      // writing data into array
            if(count == 64)break;
        }
        Serial.write(buffer, count);     // if no data transmission ends, write buffer to hardware serial port
        clearBufferArray();             // call clearBufferArray function to clear the stored data from the array
        count = 0;                      // set counter of while loop to zero
    }
    if (Serial.available())             // if data is available on hardware serial port ==> data is coming from PC or notebook
    SoftSerial.write(Serial.read());    // write it to the SoftSerial shield
}
void clearBufferArray()                 // function to clear buffer array
{
    // clear all index of array with command NULL
    for (int i=0; i<count; i++)
    {
        buffer[i]=NULL;
    }                  
}

J’ai vu qu’il y a énormément de topics sur le web traitent de ce capteur, mais je n’en ai trouvé aucun qui n’est résolu (ça me fait bien peur). Si quelqu’un peut seulement nous éclairer sur la phrase disant qu’il faut “sélectionner le jumpeur sur U” ce serait déjà énorme :wink: .

Si vous avez besoin de plus de précisions ou de renseignements n’hésitez pas à demander.