Pages: [1]   Go Down
Author Topic: Arduino Web Server con Arduino Web Client (SOLUCIONADO)  (Read 1196 times)
0 Members and 1 Guest are viewing this topic.
Offline Offline
Newbie
*
Karma: 0
Posts: 3
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Hola a todos,
mi problema está en que tengo dos arduino ethernet. Uno lo uso de cliente y otro de servidor. El servidor con un navegador me funciona perfectamente, pero en el momento que intento conectarme con el otro arduino (Web Client) el web client no funciona.
Uso el ejemplo de web cliente que viene con arduino y lo probé con google y otras páginas y me funciona pero con mi arduino servidor no llega a funcionar.

SOLUCION EL CLIENTE Y EL SERVIDOR TENIAN LA MISMA MAC.

////////////////////////////////////
#include <Ethernet.h>
#include <SPI.h>
#define maxLength 25
////////////////////////////////////
// Constantes Boya:
const int pinBoya1 = 7;     // el número del pin de la boya

// Variables Boya:
int estBoya1 = 0;         // variable para leer el estado de la boya

// Variables Servidor:
byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED }; //MAC del Arduino
byte ip[] = { 192, 168, 0, 20 }; //IP del Arduino
byte gateway[] = { 192, 168, 0, 1 };
byte subnet[] = { 255, 255, 255, 0 };
String inString = String(maxLength); //Cadena con parámetros del servidor HTTP ?do=DO ?do=B1
String accion; //Acción extraida de inString
Server server(80);
////////////////////////////////////
//Inicio
void setup() {
  // se inicializa el pin boya1 de entrada:
  pinMode(pinBoya1, INPUT);    

  // se inicializa ethernet, el servidor y el puerto serie
  Ethernet.begin(mac, ip, gateway, subnet);
  server.begin();
  Serial.begin(9600);
}
////////////////////////////////////
//Cuerpo
void loop(){
  // capturamos el estado de la boya
  estBoya1 = digitalRead(pinBoya1);
 
  ///// SERVIDOR /////////
  Client client = server.available();
  // Si tenemos cliente
  if (client) {
    boolean current_line_is_blank = true;
    while (client.connected()) {
      if (client.available()) {
        char c = client.read();
        
        if (inString.length() < maxLength) {
          inString.concat(c);          
        }        

        if (c == '\n' && current_line_is_blank) {
          Serial.println(inString);
          if (inString.indexOf("?")>0) {
          
            int Pos_d = inString.indexOf("d");
            accion = inString.substring((Pos_d+3), (Pos_d+5));
          
            Serial.println(accion);
          
            if (accion.equals("B1")) {
              Serial.println("Ver estado boya 1");
              web_B1(client, estBoya1);
            } else { // Mostramos el estado
              Serial.println("Mostrar estado del sistema parámetro");
              web_estado(client, estBoya1);
            } // Fin acción
          //No hay parámetros
          } else { // Mostramos el estado
            Serial.println("Mostrar estado del sistema");
            web_estado(client, estBoya1);
          
          } //fin  (inString.indexOf("?")!=-1) parámetros http          
          
          break;
        } // fin (c == '\n' && current_line_is_blank)
        
        if (c == '\n') {
          current_line_is_blank = true;
        } else if (c != '\r') {
          current_line_is_blank = false;
        } // fin página
      }
    } //fin While
    delay(1);
    inString = "";
    client.stop();
  }
}// FIN CUERPO

void web_B1(Client client, int estBoya1){
  client.println("HTTP/1.1 200 OK");
  client.println("Content-Type: text/html");
  client.println();
  client.println("<html><body>");
  if (estBoya1 == HIGH) {
    client.println("-B1ON-\n");
  } else {
    client.println("-B1OF-\n");
  }
  client.println("</body></html>");
}

void web_estado(Client client, int estBoya1){
  client.println("HTTP/1.1 200 OK");
  client.println("Content-Type: text/html");
  client.println();
  client.println("<html><head><meta http-equiv=refresh content=3;url=/><title>Estado Castiello</title></head><body>");
  client.println("<h1>Estado Boyas Castiello</h1>");
                  
  client.println("<br />");
  client.println("<br />");

  client.print("La boya 1 est&aacute;: ");
          
  if (estBoya1 == HIGH) {
    client.println("<img src=data:image/gif;base64,R0lGODlhEAAQAKIAAAD/AACGAISGhMbHxv///wAAAAAAAAAAACwAAAAAEAAQAAADUEiq1b6QNEHFGC2W6srFyyY0QAk0V8GM5WJ6qlgA7ptuc20GME4TplKAJ/EBg4BhDIYUKosp5JAokWB2U6LKiilkM1XGpxPSeAYQcKRIhiQAADs= alt=Encendido >");
    client.print("<font color=green>ENCENDIDA</font>");
  } else if (estBoya1 == LOW) {
    client.println("<img src=data:image/gif;base64,R0lGODlhEAAQAKIAAP////f398DAwICAgAAAAAAAAAAAAAAAACwAAAAAEAAQAAADTRiq1L4wtEGHEC2S6sjFyzY0H+aB0ngB7OcRqcoC5Tl5cymot9CWFAKgR9MFhy/dhYO8nD7MoQQDrYykU5O1wYIxXI6ZN3SaISPkTiQBADs= alt=Apagado >");
    client.print("<font color=red>APAGADA</font>");
  } else {
    client.print("<font color=yellow>DESCONOCIDO</font>");
  }  
          
  client.println("<br />");
  client.println("<br />");
  //client.println("<form method=get><input type=submit name=do value=ENCENDER><input type=submit name=do value=APAGAR><input type=submit name=do value=REFRESCAR></form>");        
  client.println("</body></html>");
}

« Last Edit: November 04, 2011, 04:56:56 am by cezosu » Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 3
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Este es el código del web client.

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

// Enter a MAC address and IP address for your controller below.
// The IP address will be dependent on your local network:
byte mac[] = {  0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
byte ip[] = { 192,168,0,21 };
byte server[] = { 192,168,0,20 }; // Google

// Initialize the Ethernet client library
// with the IP address and port of the server
// that you want to connect to (port 80 is default for HTTP):
Client client(server, 80);

void setup() {
  // start the Ethernet connection:
  Ethernet.begin(mac, ip);
  // start the serial library:
  Serial.begin(9600);
  // give the Ethernet shield a second to initialize:
  delay(1000);
  Serial.println("connecting...");

  // if you get a connection, report back via serial:
  if (client.connect()) {
    Serial.println("connected");
    // Make a HTTP request:
    client.println("GET /?do=B1 HTTP/1.1 \n");
    client.println("Host: 192.168.0.21 \n");
    client.println("Content-Type: text/html \n");
    client.println("Connection: close \n");
    client.println("\n\n");
    client.println();
  }
  else {
    // kf you didn't get a connection to the server:
    Serial.println("connection failed");
  }
}

void loop()
{
  // if there are incoming bytes available
  // from the server, read them and print them:
  if (client.available()) {
    char c = client.read();
    Serial.print(c);
  }

  // if the server's disconnected, stop the client:
  if (!client.connected()) {
    Serial.println();
    Serial.println("disconnecting.");
    client.stop();

    // do nothing forevermore:
    for(;smiley-wink
      ;
  }
}
Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 3
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Ya lo he solucionado el problema es que tenía puesta la misma mac al cliente que al servidor.
Logged

Pages: [1]   Go Up
Jump to: