Naviguer entre plusieurs pages enregistrés dans la carte SD de l'arduino

Je suis en stage de 1re SN et je dois faire un site internet qui interagit avec une bande LED (j'utilise la bibliothèque FastLED) et une base de données phpMyAdmin contenant les données à utilisé. Pour faire le lien entre mon Arduino et Internet j'utilise le Ethernet 2 Shield.

Mon but est d'allumé une LED à un emplacement bien précis lorsqu'on effectue une recherche.

Cependant mon problème est que quand je charge la page internet de l'arduino seul la page index.php enregistré dans la carte SD de mon arduino se charge et le reste n'est pas pris en compte.

:warning:
Post mis dans la mauvaise section, on parle anglais dans les forums généraux. déplacé vers le forum francophone.

Merci de prendre en compte les recommandations listées dans Les bonnes pratiques du Forum Francophone

Qui sert le php?
Si c'est l'Arduino, ça ne peut pas fonctionner, php s'exécutant coté serveur.
Un synoptique de la configuration aiderait à la compréhension.

C'est le code que j'utilise mais le problème est que dès que je veux changer de page (via la balise html 'a href') l'URL écrit la page où elle est censée me redirigé (192.168.1.179/emplacement) mais le code écrit dans le fichier emplacement.php ne se charge pas

#include <SPI.h>
#include <Ethernet2.h>
#include <SdFat.h>
SdFat SD;



//CONSTANTES
byte mac[] = {0x90, 0xA2, 0xDA, 0x10, 0x4F, 0x25};  //Adresse MAC du shield Ethernet (non critique)
const int carteSD = 4;      //Broche de commande par défaut pour le shield Ethernet Arduino

//VARIABLES
String reception = "";      //Chaine reçue par le serveur (première ligne uniquement <=> requète)
char carLu;

//INSTANCIATIONS
IPAddress ip(192, 168, 1, 179);
EthernetServer serveurHTTP(80); //Instanciation d'un serveur sur le port 80 (port HTTP par défaut)

//INITIALISATIONS
void setup()
{
  Serial.begin(115200);               //Penser à paramétrer le terminal série avec la même valeur

  if (SD.begin(carteSD))              //Si la fonction d'initialisation renvoi TRUE,
  {
    Serial.println(F("Initialisation OK!"));
  }
  else   //sinon compte rendu d'échec
  {
    Serial.println(F("Erreur SD!"));
    return;
  }

  Ethernet.begin(mac, ip);                        //Initialisation du serveur
  delay(1000);                                 //Délais d'initialisation du Shield Ethernet 2
  if (Ethernet.localIP() != 0)              //Petite vérification avant démarrage du serveur
  {
    Serial.print(F("Serveur a l'adresse '"));
    Serial.print(Ethernet.localIP());
    Serial.println(F("' OK!'"));
  }
  else
  {
    Serial.println(F("Erreur serveur"));
  }
}

//PROGRAMME
void loop()
{
  EthernetClient client = serveurHTTP.available();           //Instanciation d'un client
  if (client)                                                //Si le client existe
  {
    reception = "";
    if (client.connected())                                  //Si le client est connecté
    {
      Serial.println(F("Client connecte"));
      if (client.available()) carLu = client.read();
      while (client.available() && carLu != 10) //Tant qu'il reste au moins 1 octet à lire sur la première ligne
      {
        reception = reception + carLu;
        carLu = client.read();
      }
      Serial.print(F("\n'reception' = "));
      Serial.println(reception);
      if (reception.startsWith("GET"))                        //Si la chaine reçue contient une requète
      {
        Serial.println(F("Requete valide (GET)"));
        client.println(F("HTTP/1.1 200 OK"));                //On envoi l'accusé de bonne réception au client
        client.println(F("Content-Type: text/html"));        //On indique le type du contenu de la réponse
        client.println(F("Connection: close"));               //La connexion sera fermée en fin de réception
        client.println("");                                   //Ligne blanche imposée par le protocole HTTP
        delay(10);
        if (reception.startsWith("GET / HTTP/1.1"))           //Requête sans paramètre => affichage de la page
        {
          if (SD.exists("index.php"))                        //Si le fichier "index.php" existe on l'ouvre en
          { //lecture, puis on lit son contenu caractère par
            File fichier = SD.open("index.php", FILE_READ);  //caractère que l'on envoie en même temps vers
            while (fichier.available())                       //le client pour affichage.
            {
              char carTemp = fichier.read();
              Serial.write(carTemp);
              client.write(carTemp);
            }
            fichier.close();
          }
          else
          {
            Serial.println(F("Fichier 'index.php' absent"));
            return;
          }
        }
        else if (reception.indexOf("page.css") != -1)       //Si demande d'envoi du fichier 'style.css'
        { //(balise <link> dans le fichier html)
          if (SD.exists("page.css"))                        //Si le fichier "page.css" existe on l'ouvre en
          { //lecture, puis on lit son contenu caractère par
            File fichier = SD.open("page.css", FILE_READ);  //caractère que l'on envoie en même temps vers
            while (fichier.available())                      //le client pour affichage.
            {
              char carTemp = fichier.read();
              Serial.write(carTemp);
              client.write(carTemp);
            }
            fichier.close();
          }
          else
          {
            Serial.println(F("Fichier 'page.css' absent"));
            return;
          }
        }
      }
      else Serial.println(F("Requete non conforme"));
      delay(1);                                               //La transmission est rapide mais pas instantanée
      client.stop();                                          //Fermeture de la connexion
    }
  }

}

Qu'est-ce que je t'ai dit plus haut.

Le code php s'exécute coté serveur pas coté client. Hors là ton serveur c'est l'Arduino qui ne dispose pas des ressources nécessaires pour exécuter le php.
Avec un Arduino tu peux utiliser Javascript qui s'exécute sur le client mais pas php.

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.