Javascript & Arduino : NEED HELP ! :(

Bonjour,
Je suis actuellement en Terminale STI2D et je réalise donc un projet en groupe dans le cadre du Baccalauréat.

Le projet est simple : contrôler des prises de courant via une interface WEB, stockée sur un SHIELD ETHERNET 2.

Tout est presque fini, sauf un petit truc qui nous prend la tête, à moi et mes profs, depuis plusieurs jours:

Il nous faudrait créer une fonction Javascript qui permet à un bouton d'envoyer une chaîne de caractères dans un port série, qui est ensuite récupérée par l'Arduino avec un Serial.read() ...
Petit soucis, nous ne trouvons pas le moyen de faire communiquer notre interface avec notre Arduino, entre autres, il nous manque cette fonction.

Quelqu'un de plus expérimenté pourrait-il nous venir en aide ? Le temps compte et notre BAC est en jeu...

Merci d'avance.

bonjour,
un truc m'échappe.
interface web sur shield ethernet.
ecriture sur le port com via JS.

si tu utilise l'interface web via un navigateur avec l'appli sur l'arduino, pourquoi vouloir écrire sur le port com?

Car c'est le moyen qu'on a trouvé pour faire communiquer un boutton d'une page web et notre Arduino.
S'il en existe d'autres, je suis tout à ton écoute, mon prof ne savant pas lui-même ce qu'il fait c'est compliqué...

Sinon, voici quelques caractéristiques au cas ou je me serais mal exprimé :

  • Page WEB ( HTML + JS ) stockée sur la Micro-SD du shield
  • Le boutton a pour but final de contrôler un relais ( pour ça, tout est fait, il faut juste qu'on trouve le moyen de faire communiquer notre page avec notre arduino).

c'est simplement un GET sur la page html
si la page demandée contient ?relais=1 par exemple on active le relais.
exemple d'une led via un bouton sur le net :wink:

pourquoi s'emmerd... avec du JS la dessus

Re-bonjour,

Déjà , merci pour vos réponses ^^

@infobarquee Nous n'avons pas utilisé cette méthode car nous devons contrôler au total 3 relais, donc utiliser trois boutons , par cette méthode cela semblait un peu compliqué à mettre en place.

@pepe Cette méthode me semble en effet bien appropriée, merci de ton aide. Si je comprends bien, après avoir visité tes liens et fait quelques recherches, on a quelque chose comme ça côté HTML :

function relais1(){
 
 var xhr;
 var response;

 xhr = new XMLHttpRequest();
 
 xhr.onreadystatechange=function(){ 
 if (xhr.readyState==4 && xhr.status==200){
 response = xhr.responseText; 
 document.getElementById("text2").innerHTML=response;
 }
 }
 xhr.open('GET', "169.254.10.20/",true);
 xhr.send(null);
}

C'est par contré côté arduino que ça me pose soucis, j'ai trouvé cecis :

 if (client) {
    boolean currentLineIsBlank = false;
    
    while (client.connected()) {
      if (client.available()) {
        
        char c = client.read();
        Serial.write(c);
   
        if (c == '\n' && currentLineIsBlank) {
          Serial.println("Blank line detected");
          
           client.println("HTTP/1.1 200 OK");
           client.println("Content-Type: text/html");
           client.println("Connnection: close");
           client.println();
           client.println("Hello");
       }

        if (c == '\n'){
          // Commence nouvelle ligne
          currentLineIsBlank = true;
        }
        
        else if (c != '\r'){
          // Caractere sur la ligne
          currentLineIsBlank = false;
        }   
      }
    }
  }

Est-ce que je dois insérer dans le premier if(c=='/n') {} ma fonction pour allumer/éteindre mon relais ?

Merci d'avance.