[Problème] Casier Connecté avec base de donnée MySQL

Bonjour a tous !
Dans le cadre de mon école d’ingénieur, je dois réaliser un casier connecté dont le principe n’est pas très compliqué :
Le casier est toujours ouvert
Si quelqu’un met un objet il doit passer sa carte sur le lecteur RFID 125 hz
Si le code de la carte est bien dans la base de donnée MYSQL que j’ai crée, alors le casier se verrouille et seul cette carte pourra l’ouvrir a nouveau.

Alors je suis vraiment un débutant en arduino mais voila je possède une arduino Yun donc je dispose de la connection wifi.
Et j’ai plusieurs petit problème.

Voici mon code ( Il est un peu brouillon ) :

#include <SoftwareSerial.h>
#include <Servo.h>

#define RFID_RX_PIN 10
#define RFID_TX_PIN 9

Servo monServomoteur;
SoftwareSerial Rfid = SoftwareSerial(10,9);
void setup() {

monServomoteur.attach(5);// Servomoteur
monServomoteur.write(0);

pinMode(4, OUTPUT);// Led Verte
pinMode(6, OUTPUT);// Led Rouge
digitalWrite(4, HIGH);

Serial.begin(9600);
Rfid.begin(9600);
}

void loop() {

boolean CasierOuvert=true;

if (Rfid.available()>0){
while(Rfid.available()>0){
int r=Rfid.read();

Serial.print(" votre code est :");
Serial.print(r, DEC);
int angle=monServomoteur.read();
if (angle>45){
CasierOuvert=false;
}

if (CasierOuvert){
FermeturePorte();

}
if (CasierOuvert==false && r==0) // Ici 0 car ma carte retourne toujours 0
{
OuverturePorte();

}
}
Serial.println();
}

}

void OuverturePorte()
{
for (int angle=90;angle>=0;angle–){
monServomoteur.write(angle);
delay(30);
digitalWrite(4, HIGH);
digitalWrite(6, LOW);

}

}

void FermeturePorte()
{
for (int angle=0;angle<=90;angle++){
monServomoteur.write(angle);
delay(30);
digitalWrite(4, LOW);
digitalWrite(6, HIGH);
}

}

}

Mon premier problème est qu’au moment ou je passe ma carte, le servomoteur tourne bien dans la bonne position mais dans le moniteur, ils me disent que le code de la carte est 0.
Ce qui, pour un problème de sécurité, n’est pas top top.

Mon deuxième problème est le liens entre ma base de donnée MySQL et Arduino. J’ai déjà crée la base en installant Mamp ect (Je me suis aidé de OpenClassroom), j’ai crée un page ou l’utilisateur rentre son nom, prénom et le code de carte, et ces informations vont directement dans la base de donnée. Mais est-il possible de comparer une variable sur arduino avec les différents code de la base de donnée? :slight_smile:

Voila Donc j’ai 2 questions :
Est ce que quelqu’un peut m’expliquer pourquoi j’ai ce 0 a la place d’avoir le code de la carte?
Et est ce que ma partie sur le liens entre MYSQL et Arduino est réalisable et si oui savez vous ou je peux trouver des renseignements dessus !

Merci pour votre lecture et bonne journée !

Je remet le code sous la bonne forme :slight_smile:

#include <SoftwareSerial.h>
#include <Servo.h>


#define RFID_RX_PIN 10
#define RFID_TX_PIN 9

Servo monServomoteur;
SoftwareSerial Rfid = SoftwareSerial(10,9);
void setup() {

monServomoteur.attach(5);// Servomoteur
monServomoteur.write(0);
pinMode(4, OUTPUT);// Led Verte
pinMode(6, OUTPUT);// Led Rouge
digitalWrite(4, HIGH);

Serial.begin(9600);
Rfid.begin(9600);
}

void loop() {

boolean CasierOuvert=true;
if (Rfid.available()>0){
  while(Rfid.available()>0){
    int r=Rfid.read();   
    Serial.print(" votre code est :");
    Serial.print(r, DEC);
    int angle=monServomoteur.read();
    if (angle>45){
      CasierOuvert=false;
    }
  
    if (CasierOuvert){
      FermeturePorte();
 
    }
    if (CasierOuvert==false && r==0) // Ici 0 car ma carte retourne toujours 0
    {
       OuverturePorte();
    
    }
  }
  Serial.println();
  }
}

void OuverturePorte()
{
 for (int angle=90;angle>=0;angle--){
    monServomoteur.write(angle);
    delay(30);   
    digitalWrite(4, HIGH);
    digitalWrite(6, LOW);

 
}

void FermeturePorte()
{  
     for (int angle=0;angle<=90;angle++){
    monServomoteur.write(angle);
    delay(30);
    digitalWrite(4, LOW);  
    digitalWrite(6, HIGH);
  } 
   
}
   
}