WebServer

De ArduWiki
Saltar a: navegación, buscar

En este ejemplo, con Ethernet Shield y Arduino se crea un servidor web simple. Con la biblioteca Ethernet, su dispositivo podrá responder a una solicitud HTTP. Después de abrir un navegador y navegar a la dirección IP de su escudo Ethernet, su Arduino responderá con HTML para que un navegador muestre los valores de entrada de los seis pines analógicos.

Ejemplo

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

byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };   //Asignar MAC al modulo
IPAddress ip(192, 168, 1, 177);                        //Asignar IP al servidor

//Ethernet shield attached to pins 10, 11, 12, 13
//Analog inputs attached to pins A0 through A5 (optional)
EthernetServer server(80);                             //Inicializa Ethernet

void setup() {
   Serial.begin(9600);
   Serial.println("Ejemplo Servidor Web");
   Ethernet.begin(mac, ip);                 //Inicializa Ethernet

   // Check for Ethernet hardware present
   if (Ethernet.hardwareStatus() == EthernetNoHardware) {
      Serial.println("Modulo Ethernet no encointrado. No podemos hacer nada sin hardware.");
      while (true) {
         delay(1);    //do nothing, no point running without Ethernet hardware
      }
   }
   if (Ethernet.linkStatus() == LinkOFF) {
      Serial.println("Conecta el cable RJ-45 en el modulo.");
   }
   server.begin();                        //Inicializa servidor
   Serial.print("El servidor este en IP: ");
   Serial.println(Ethernet.localIP());
}

void loop() {
   EthernetClient client = server.available();    //Esperando algun cliente
   if (client) {
      Serial.println("Nuevo cliente");
      boolean currentLineIsBlank = true;
      while (client.connected()) {
         if (client.available()) {
            char c = client.read();
            Serial.write(c);
            //if you've gotten to the end of the line (received a newline
            //character) and the line is blank, the http request has ended,
            //so you can send a reply
            if (c == '\n' && currentLineIsBlank) {
               //send a standard http response header
               client.println("HTTP/1.1 200 OK");
               client.println("Content-Type: text/html");
               client.println("Connection: close");     //the connection will be closed after completion of the response
               client.println("Refresh: 5");            //refresh the page automatically every 5 sec
               client.println();
               client.println("<!DOCTYPE HTML>");
               client.println("<html>");
               //output the value of each analog input pin
               for (byte analogChannel = 0; analogChannel < 6; analogChannel++) {
                   int sensorReading = analogRead(analogChannel);
                   client.print("analog input ");
                   client.print(analogChannel);
                   client.print(" is ");
                   client.print(sensorReading);
                   client.println("<br />");
               }
               client.println("</html>");
               break;
            }
            if (c == '\n') {
               //you're starting a new line
               currentLineIsBlank = true;
            }else if (c != '\r') {
               // you've gotten a character on the current line
               currentLineIsBlank = false;
            }
         }
      }
      //give the web browser time to receive the data
      delay(1);
      client.stop();     //Cierra conexion
      Serial.println("client disconnected");
   }
}

Vea también


Referencias