Arduino shield ethernet ne se connecte pas + probleme sql

Bonjour, je vais vite expliquer les problèmes que j'ai , je suis en terminale STI2D et j'ai comme projet de fin d'année de designer un système pouvant lire des tag RFID , et communiquer avec une base de donnée MySQL afin de stocker les valeurs.

Mes problèmes sont les suivants : J'utilise une libraries ( MySQL_Connector_Arduino-master ) afin de pouvoir communiquer directement avec MySQL sans devoir passer par le bordel de la page php.

Seulement j'avais un shield 2 avec les libraries W5500 --> résultat, il semble que ce n'est pas possible d'utiliser MySQLconnectorArduino avec ces nouvelles libraries.

Je suis donc revenu à mon idée de départ. J'utilise un pc portable hors réseau afin de n'avoir que l'arduino branché en RJ45 à son port Ethernet directement , sans rien entre les deux ( à part le câble :wink: ) --> résultat , quand j'essaye d'envoyer la valeur à ma page , celle-ci semble de pas s'envoyer .. et cela est confirmé par le fait que la base de donné n'a rien de nouveau d'ajouté.

J'utilise WAMP , une arduino mega avec possibilité d'avoir un shield ethernet r3 (le 1 ( qui ne se connecte pas aussi) et un shield ethernet 2 qui fait pareil.
L'assignation d'adresse IP semble fonctionner , la mac est la bonne aussi.
Le câble est un câble droit ( je crois )

Voici les différents codes que j'ai écris , basé sur la doc pour vous aider à y voir + clair sur ces problèmes...

Voici celui utilisé pour essayer d'envoyer une valeur à une page PHP qui elle même met dans sa BDD la variable. ( shield V2 utilisé et V1 )

#include <SPI.h>
#include <Ethernet.h>


byte mac[] = { 0x90, 0xA2, 0xDA, 0x0F, 0x3B, 0x94};
IPAddress ip(192,168,1,42); //adresse ip donné au shield ethernet
IPAddress serveur(192,168,1,54);//:adresse ip du pc
EthernetClient client;

void setup() {
  Serial.begin(9600);
  Ethernet.begin(mac, ip);
}



void loop() {
  int nbr= 42; //nombre à insérer dans la bdd
  
  if(client.connect(serveur,80)){
    Serial.println("Connecté au pc");
    Serial.print("GET /php.php?nbr=");
    Serial.print(nbr);
    Serial.println(" HTTP/1.1");
    Serial.print("Host: 192.168.1.54"); 
    Serial.println("Connexion fermé");
    client.stop();
  }
  delay(9000000); // "arrêt" du programme 
}

et voici le code de la page PHP dans le répertoire WWW de WAMP

<?php 


try
{
$bdd = new PDO('mysql:host=localhost;dbname=epicerie','root','');
}
catch(Exception $e)
{
die('Erreur : '.$e->getMessage());
}

$bdd->exec('INSERT INTO stock (Nombre) VALUES ('.$_GET["nbr"].')');

?>

Donc voilà .. au final ça a beau ne pas faire d'erreur dans le moniteur série , je n'ai au final pas de nouvelle variable dans ma bdd

Après cet essai infructueux j'ai testé avec un shield v1 et v2 pour tester la librarie sql , mais ça ne marche toujours pas aussi..

#include <MySQL_Connection.h>
#include <MySQL_Cursor.h>
#include <MySQL_Encrypt_Sha1.h>
#include <MySQL_Packet.h>
#include <SPI.h>
#include <Ethernet.h>
#include <EthernetClient.h>


byte mac[] = { 0x90, 0xA2, 0xDA, 0x0F, 0x3B, 0x94 };
IPAddress serveur(192, 168, 1, 54); // ip du pc
IPAddress ip(192,168,1,42); // ip défini pour l'arduino
EthernetClient client;  
char user[]= "root";
char pass[] = "";
MySQL_Connection conn((Client *)&client);


void setup() {
  Serial.begin(9600);
  Ethernet.begin(mac, ip);
  delay(2000);
  if(conn.connect(serveur, 3306, user, pass)){
    Serial.println("Connecté");
    delay(1000);
  }
  else
    Serial.println("Connexion échoué");
}


char INSERT_SQL[] = "INSERT INTO stock (Nombre) VALUES nbr";, 
/* le truc que je comprend pas ici c'est que ma base de donné a pour nom epicerie , possède une table : stock , et donc une colonne Nombre dedans. Comment l'arduino sait que il faut aller dans la table epicerie ? */


void loop() {
  int nbr=10;    
  MySQL_Cursor *cur_mem = new MySQL_Cursor(&conn); // aucune idée de ce que ça fait mais on me dit de le mettre ..

  cur_mem->execute(INSERT_SQL); // on exécute la requête PHP
  nbr = nbr +1;
  delay(5000); // on refait toutes les 5 secondes un INSERT correspondant à la même variable +1 
  delete cur_mem;
}

Donc voilà je ne fais que me prendre des "connexion échoué" sur cette dernière partie.
Il va dans dire que je suis là dessus depuis 2 semaines à chercher sur des fofo anglais et fr des solutions qui se sont toutes révélés infructueuse !

Merci pour vos futures réponses.
Cordialement,

suis donc revenu à mon idée de départ. J'utilise un pc portable hors réseau afin de n'avoir que l'arduino branché en RJ45 à son port Ethernet directement , sans rien entre les deux ( à part le câble :wink: )

pas garanti que ça fonctionne sans routeur. Sur un mac ou linux ce serait gérable, sur PC je ne sais pas

J-M-L:
pas garanti que ça fonctionne sans routeur. Sur un mac ou linux ce serait gérable, sur PC je ne sais pas

Je n'ai que un pc , de plus sur certain forum anglais , que ce soit un câble croisé ou droit ou branché direct sur le pc ou par switch semble ne pas changer bcp de chose.

Des conseils ? Solutions ?

il faut que un service tourne et ait le rôle de routeur. ça peut être soit un appareil physique, soit un service qui tourne sur le PC.

J'ai ajouté un switch avec mon shield ethernet 2
J'ai testé le webserveur fonctionne mais toujours pas le webclient , arduino n'arrive pas à "faire tourner" la page php qui d'ailleurs est bien nommé php.php ( je suis original ) , donc au final y a de la com mais rien dans le fond du coup je ne sais pas quoi faire ...

ça fait 2 semaines...

Bonjour,

Après maintes semaines que j'espère voir une donnée passer l'erreur était simplement que je n'avais pas mit le bon lien.

J'ai mis php.php
Alors que ma page était nommé nbr.php
merci quand même