Aide chatière RFID -

Bonjour,

Je souhaite réaliser un code sous Arduino permettant d’identifier mes chats (au nombre de 3) et de leur autoriser ou refuser l’accès à la maison. Je n’en suis qu’à mes débuts sous Arduino, et je rencontre donc quelques difficultés.

Je dispose d’un lecteur RFID (Lecteur RFID Grove 125kHz) pour lire mes tags, d’une carte Arduino Leonardo, ainsi que des-dits tags (3).

En bidouillant quelques codes trouvés sur le web, je parviens à lire mes tags via le moniteur série, mais rien de plus. Je voudrais pouvoir “lire” les tags dans une base de données, et en fonctions des autorisations qui leur sont attribuées les laisser rentrer ou non.

Les problèmes majeurs sont :

-mon incapacité à produire le code concernant les autorisations
-le fait de ne pas pouvoir appeller les chats par leurs noms, et non pas par un code.

Voici donc le code, je m’excuse d’avance si il est mal construit ou espacé, je ne suis encore qu’un débutant! :slight_smile:

PS : Je pense que les 2 bases de données du début (les codes hexa et les noms Chat 1, 2 et 3) ne sont pas actifs, dans le sens où ils n’influent pas le code.


// 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

/* Base de donnée des ID de tag valide */
char* tagId[] = {
"380067B2A74A", // tag 1 BLEU
"0A001422201C", // tag 2 ROUGE
"09002E3B6F73", // tag 3 JAUNE
};
String Tag="toto"; 
/* Base de donnée des nom de tag valide */
char* tagNom[] = {
"Chat 1", // tag 1
"Chat 2", // tag 2
"Chat 3", // tag 3
}; 

#include <SoftwareSerial.h>

SoftwareSerial SoftSerial(10, 11);
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 (SoftSerial.available()) // if date is coming from software serial port ==> data is coming from SoftSerial shield
{
while(SoftSerial.available()) // reading data into char array
{
buffer[count++]=SoftSerial.read(); // writing data into array
// String A=String(buffer[count-1]);
// Tag=Tag+A;
Tag=SoftSerial.readString();
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
}
Serial.println(Tag);
delay(1000);
Tag="";
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
{
for (int i=0; i<count;i++)
{
buffer*=NULL;*

* } // clear all index of array with command NULL*
*}*

Bonjour,

Merci de mettre ton code entre balise

Je verrai bien en début de code

#define chat1 380067B2A74A
#define chat2 0A001422201C
#define chat3 09002E3B6F73

Ainsi tu définis un nom de chat pour chaque valeur de tag.

Par la suite une lecture du tag
Un switch avec
Case 1 chat1
{instructions…}
Case 2 chat2
{instructions…}
Case 3 chat3
{instructions…}

Par exemple

Bonjour,

Merci pour votre aide, je vous tient au courant de l'avancement du projet!

Rebonjour,

J’ai un peu de mal avec le switch, quel genre d’instruction doit-on mettre dedans? (Je suis allé voir dans la Référence Arduino mais n’ai pas tout compris)
Je dois dire “Si le chat est dans la base de donnée → Accès autorisé” ou quelque chose comme ça?
Je m’excuse encore de n’avoir que les plus simples bases de code, ça doit être un brin frustrant de voir quelqu’un qui n’y connaît pas grand chose!