Go Down

Topic: Récupérer état LED sur page HTML locale (Read 3 times) previous topic - next topic

nais

Bonjour,
je viens de débuter sur un Arduino duelminove + le module ehternet shield. J'arrive à programmer ma platine Arduino, mais je ne comprend rien à l'ethernet shield, malgré les exemples donnés sur le site.
Concrètement je veux récupérer sur une page HTML l'état allumé ou éteint de ma LED, sans passer par internet (direct sur l'ordi) ?
1°) quel code peut envoyer cette donnée par l'ethernet shield ?
2°) Quelle adresse IP entrer dans le code, celui de mon ordi ou bien celui de l'arduino ?
3°) Ensuite, je fais comment pour visualiser la page HTML ??? (j sais écrire du HTML mais comment récupérer la valeur envoyée par l'arduino ?)
4°) et enfin, aut-il un câble ethernet croisé ou simple ?

Je patauge bien, et profond ! si vous avez une bouée pour ça, je vous en remercie d'avance !

A bientôt

polo-m

Tu peux mettre l'arduino en serveur, ainsi il pourra retourner une page html qui peut afficher l'état d'une diode par exemple. Sur cette même page tu peux y inclure un formulaire html qui permettra d'exécuter des actions (commande de la led par exemple).
Il faut que tu fasse écrire l'html par l'arduino, de ce style :
Code: [Select]
client.println("HTTP/1.1 200 OK");
         client.println("Content-Type: text/html");
         client.println();
         client.print("<body style=background-color:black>");
         client.println("<font color='green'><h1>HTTP test successfull !</font></h1>");
         client.println("</body></html>");

Côté arduino tu dois lui préciser un certain nombre de paramètres pour qu'il fonctionne correctement, il y a l'ip que l'arduino a sur ton réseau, le masque, l'adresse mac, la passerelle. L'ip que l'arduino aura te permettra d'accéder à la page web si tu fais de cette manière.
La câble ça dépend de la manière dont tu connecte l'arduino, si il est sur le réseau connecté sur un routeur (box ou autre), un câble droit, si tu veux connecter l'arduino sur un ordinateur en particulier (il ne pourra dialoguer qu'avec lui) un croisé, bien que les ordinateurs actuels décroisent il me semble.
Je sais pas si j'ai tout compris ce que tu veux faire.
Quelques sites qui peuvent t'aider :
http://www.gumbolabs.org/2010/02/05/rfid-ethernet-shield-client-rails/
http://arduino.cc/en/Tutorial/WebServer

nais

Super, ça marche !

ma 1ère communication Arduino/ordinateur fonctionne, sur tes conseils ! C'est le premier pas.
Pour préciser ce que je veux faire : connecter un ordi quelconque sur l'arduino, directement par câble ethernet, et recevoir dans le browser internet de cet ordi des données en temps réel comme "LED allumée" ou la température d'une sonde. Puis donner des ordres ... mais ça c'est l'étape suivante.

Ce que j'ai fait (je décortique pour les débutants qui me liraient) :
- ordi connecté au ethernet shield par câble ethernet (câble croisé ou non, peu importe les 2 marchent bien, t'avais raison).
- chargement du code ci-dessous avec l'adresse IP de l'arduino modifiée (adresse IP réseau non utilisée). L'exemple Arduino marche très bien (WebServer.pde).
- j'entre l'adresse IP de l'arduino dans mon browser (http://168.254.10.64) => et il m'affiche la page provenant de l'arduino !
- en connectant un capteur photo-électrique sur l'entrée analogique, j'ai la valeur dans ma page web.



#include <Ethernet.h>

// a MAC address that you make up to identify the Arduino
byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
// this is the IP that will identify the Arduino
byte ip[] = { 169, 254, 10, 64 };

Server server(80);

void setup()
{
 //start ethernet
 Ethernet.begin(mac, ip);
 server.begin();
}

void loop()
{
 Client client = server.available();
 if (client) {
   // an http request ends with a blank line
   boolean current_line_is_blank = true;
   while (client.connected()) {
     if (client.available()) {
       char c = client.read();
       // if we've gotten to the end of the line (received a newline
       // character) and the line is blank, the http request has ended,
       // so we can send a reply
       if (c == '\n' && current_line_is_blank) {
         // send a standard http response header
         client.println("HTTP/1.1 200 OK");
         client.println("Content-Type: text/html");
         client.println();
         client.print("<body style=background-color:yellow>");
         client.println("<font color='green'><h1>HTTP test successfull !</font></h1>");
         client.println("</body></html>");

         // output the value of analog input pin 2
           client.print("analog input ");
           client.print(2);
           client.print(" is ");
           client.print(analogRead(2));
           client.println("<br />");
         // stop loop
           break;
       }
     }
   }
   // give the web browser time to receive the data
   delay(1);
   client.stop();
 }
}

Go Up