problemas al enviar datos con ethernet shield

Primero hola... soy nueva en el foro y en el mundo arduino.

Espero alguien pueda ayudarme, estoy intentando enviar datos a mysql y las rutinas de php funcionan... si hago la insercion "a mano" http://127.0.0.1/estacion/iot.php?valor=455 el dato es insertado en la tabla, pero cuando lo intento desde el monitor serie ingresando valores ni siquiera me sale el valor por consola.

tambien utilice el ejemplo de arduino webserver y la conexion se realiza al ethernet.

Agradeceria cualquier ayuda porque ya estoy re perdida... de antemano gracias

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

// Configuracion del Ethernet Shield
byte mac[] = {0xDE, 0xAD, 0xBE, 0xEF, 0xFF, 0xEE}; // Direccion MAC
byte ip[] = { 169,254,6,237 }; // Direccion IP del Arduino
byte server[] = { 127,0,0,1 }; // Direccion IP del servidor
EthernetClient client; 
   
 //int analog_pin = 0;

void setup(void) {
  Ethernet.begin(mac, ip); // Inicializamos el Ethernet Shield
  delay(1000); // Esperamos 1 segundo de cortesia
}

void loop(void) {
 // temperatura = analogRead(analog_pin);
 double temperatura;
 temperatura=Serial.read();
 Serial.println(temperatura);
 
  //temperatura = 5.0*temperatura*100.0/1024.0;
  //Display in Serial Monitor
  Serial.print(temperatura); //Return temperature to Monitor
  Serial.println(" oC");
  // Proceso de envio de muestras al servidor
  Serial.println("Connecting...");
  if (client.connect(server, 80)>0) {  // Conexion con el servidor
    client.print("GET /estacion/iot.php?valor="); // Enviamos los datos por GET
    client.print(temperatura);
    client.println(" HTTP/1.0");
    client.println("User-Agent: Arduino 1.0");
    client.println();
    Serial.println("Conectado");
  } else {
    Serial.println("Fallo en la conexion");
  }
  if (!client.connected()) {
    Serial.println("Disconnected!");
  }
  client.stop();
  client.flush();
  delay(1000); // Espero un segundo antes de tomar otra muestra
}

conexion.ino (1.35 KB)

Buenas tardes analoyra.

He tenido un problema similar con una variable integer que leia en la consola, hasta que probé con hacerla Char. Y ademas utilice la función sprintf para insertar el dato dentro el vector de caracteres que enviaba al php.

Espero te ayude al menos a lograr un valor de la consola y luego ver el resto...

Hola Linker! gracias por tu pronta respuesta.... no lo he podido solucionar aun con tu consejo...... no entiendo porque todo por separado funciona y asi no.........
claro que mis conocimientos son limitados en arduino.... si programo en otros lenguajes, pero este me marea un poco....

Alguna otra sugerencia por fa?

gracias nuevamente

Ahora mismo tu sketch no lo pude subir para mandarte la parte de leer de la consola. Tu problema esta en que no has inicializado la consola:

Serial.begin(9600);

Proba esto y me decís si avanzaste al menos en esto.

Van dos mensajes privados que te envio anaylora para que pegues el código usando tags como indican las normas. Como no los leíste o desobedeciste es que vuelvo a reiterarlo de manera pública.
Tu código debe verse completo usando tag o etiquetas para código.
Lee las normas del foro y ya veras que fácil es.
Luego edita tu post inicial y lo corriges. No mas de 1 min te lleva.

hola surbyte.... no hay necesidad de subir el tono asi... recibi un solo mensaje y lo acabo de leer.... solo explicalo una vez y estamos.... igual acabo de arregarlo...
Lo lamento...

Gracias LINKER... por lo menos ahora cambiamos el error...
me pone connecting.... y luego fallo en la conexion.

Dificilmente esta (byte ip[] = { 169,254,6,237 }; // Direccion IP del Arduino) sea una Ip válida.

Debería ser algo así :IPAddress ip(192, 168, 0, xxx); Donde xxx sea una dirección libre del router.

Y por otro deberías dejar que el router le asigne una IP libre y en caso de fallo recurres al caso anterior.

analoyra:
hola surbyte.... no hay necesidad de subir el tono asi... recibi un solo mensaje y lo acabo de leer.... solo explicalo una vez y estamos.... igual acabo de arregarlo...
Lo lamento...

Tu obligación al entrar a un foro es leer sus Normas. De todas formas gracias.
Ve a Inicio Ejecutar si tienes Win 7 o a la derecha del logo Windows y escribe CMD y ENTER
Se abrirá una pantalla estilo DOS.
escribe : ipconfig y verás la ip de tu PC y de tu router
Usa ambos como ejemplos
Como bien dice linker casi todos los router salvo TPLINK usan 192.168.1.XXX TPLINK suele usar 192.168.0.1
Lo verás con ipconfig
Luego modifica en tu sketch usa 192.168.1.X para probar pero yo elegiría si no hay mas máquinas un número proximo entre 192.168.1.2 y el que te diga ipconfig
Generalmente las PC tienen habilitado DHCP o sea el router te asigna la ip. El DHCP esta desde determinada IP en adelante, supongamos 30 o 50 o 100 puede ser cualquier cosa.
Entonces un valor proximo al router será una ip fija.

byte ip[] = { 192.168.1.2}; // Direccion IP del Arduino
byte server[] = { 192.168.1.1 }; // Direccion IP del servidor

Hola, muchas gracias por las respuestas, he probado la ip de la ethernet porque no lo hago por el router wifi, sino por cable directo a la pc, y con esa ip y probando el ejemlo de webserver me levanta datos.
Ahora revisandolo me da esto.
Y si mal no entendi la otra direccion... la del server es la del localhost...
mando captura de pantalla.
Ademas segui este tutorialhttps://forum.arduino.cc/index.php?topic=177401.0

y logre dar con la ip.. que la anterior estaba equivocada, pero cuando la llevo al ejemplo mio me sigue dando el mismo error.... ahora estoy mas perdida porque tengo la ip correcta

Muchas gracias nuevamente!!

**Estos dos elementos mal posteados. **

Tutorial Básico - Arduino Ethernet Shield - Documentación - Arduino Forum

debe ser asi
https://forum.arduino.cc/index.php?topic=177401.0
y la foto debe verse asi


Sigues sin leer las normas del foro.

Ahora te respondo:
Dices que tienes conectado tu shield ethernet a tu pc o retiras el cable de la pc y lo conectas al shield. No te comprendo.

Hola, tengo el shield conectado al ethernet de la pc directamente.... utilizando el ejemplo que utilice del foro logre conectarlo, habia un error en la ip.
Ahora traslade esa ip a la rutina que subi al principio y me pone error conectando al servidor... ya probe con estas 2 formas...por las dudas.. pero ambas me tiran el mismo error, tengo xampp instalado y esta funcionando, lo probe insertando datos directamente desde el php del navegador

// Direccion del servidor
char server[] = "localhost/estacion";
 // Direccion IP del servidor
// byte server[] = { 127,0,0,1 };

Nuevamente gracias!!

Gracias a surbyte y su infinita paciencia dejo la solucion
Tenia conectado el shield de ethernet a la placa de red... empece por conectarla al router y configurarle una ip al arduino, comprobe el funcionamiento con un ejemplo y la conexion anduvo, pero aun no conectaba al localhost...
el error que encontro surbyte fue este (espero que vaya con tags...)
[tag]Bad syntax, the web server is running on the computer and the client is the arduino. The apache server doesnt have such an ip adress. Only 127.0.0.1 or "localhost"..
Then you will not be able to connect from any other device, not just the Arduino. It will work fine from a web browser on the server, but nowhere else. You must assign it an ip in the localnet range (192.168.1.x), and allow the server to be accessed from the internet. I suggest trying the web server from a separate computer on the localnet. Get it working with the computer first.

Insure the server firewall allows port 80 requests through from the internet.[/tag]

y se definio un port forward del puerto 80, luego se cambio la ip quedando el codigo de esta manera

// Configuracion del Ethernet Shield
byte mac[]    = {0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED}; // Direccion MAC
byte ip[]     = { 192,168,1,177 }; // Direccion IP del Arduino
byte server[] = { 192,168,1,101 }; // Direccion IP del servidor
EthernetClient client;

y VOILAAA!!! conecto al server y cargo la base de datos

Muuuchas gracias por la ayuda y a continuar

Bueno....lo bueno dura poco...
Hoy intente enviar datos nuevamente tal y como lo habiamos probado y comprobe que esa ip se la habia asignado a la impresora wifi, asi que le asigne una ip estatica a la pc fuera del rango del router 192.168.1.200 , si accedo desde el navegador a esa ip funciona perfectamente y puedo ver la base de datos mysql, pero cuando la subo al arduino me da error en la conexion.....
deberia cambiar algo de la rutina??
Muestro los cambios realizados

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


// Configuracion del Ethernet Shield
byte mac[]    = {0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED}; // Direccion MAC
byte ip[]     = { 192,168,1,177 }; // Direccion IP del Arduino
byte server[] = { 192,168,1,200 }; // Direccion IP del servidor
EthernetClient client; 
   
 //int analog_pin = 0;

void setup(void) {
  Ethernet.begin(mac, ip); // Inicializamos el Ethernet Shield
  delay(1000); // Esperamos 1 segundo de cortesia
}

void loop(void) {
 // temperatura = analogRead(analog_pin);
 double temperatura;
 Serial.begin(9600);
 temperatura=Serial.read();
 Serial.println(temperatura);

  //temperatura = 5.0*temperatura*100.0/1024.0;
  //Display in Serial Monitor
  Serial.print(temperatura); //Return temperature to Monitor
  Serial.println(" oC");
  // Proceso de envio de muestras al servidor
  Serial.println("Connecting...");
  if (client.connect(server, 80)) {  // Conexion con el servidor
    client.print("GET /estacion/iot.php?valor=1000"); // Enviamos los datos por GET
    client.print(temperatura);
    client.println(" HTTP/1.0");
    //client.println("User-Agent: Arduino 1.0");
    client.println("Host: 192.168.1.200");
    client.println();
    Serial.println("Conectado");
    while(client.connected()) {   
        while (client.available()) {
          char c = client.read();
          Serial.print(c);
        }
    }
    client.stop();
    Serial.println();
  } else {
    Serial.println("Fallo en la conexion");
  }
  if (!client.connected()) {
    Serial.println("Disconnected!");
  }
  client.stop();
  client.flush();
  delay(5000); // Espero un segundo antes de tomar otra muestra
}

Bueno... casi que empece de cero todo.... en realidad cambie de xampp a wamppserver y ahora me sale este mensaje en el tutorial serie... (aclaro que ya cambie algunas configuraciones del server) y desde el navegador accedo con la ip fija del router e inserta datos manual desde el get

El mensaje no se ve analoyra

Antes de subir la solucion espere 3 dias a probarlo....
Empece todo de cero...instalando el xampp, reiniciando el router, y nuevo scketch

creo que el problema estaba en el router, lo que hice fue configurar a mi pc con una ip fija y un virtual server y reservar ip con la mac del arduino y asi por lo menos fue la solucion... hasta ahora.

analoyra:
Antes de subir la solucion espere 3 dias a probarlo....
Empece todo de cero...instalando el xampp, reiniciando el router, y nuevo scketch

creo que el problema estaba en el router, lo que hice fue configurar a mi pc con una ip fija y un virtual server y reservar ip con la mac del arduino y asi por lo menos fue la solucion... hasta ahora.

yo tambien tengo el mismo problema pero como lo solucionaste al la pc que esta como servidor le colocaste una ip fija y la ip del arduino como le hicistes gracias explixame bien xfa para poder aplicarlo a mi proyecto

Revives un hilo del 2016 y no advertiste las letras rojas que dicen que no debes hacerlo?
Bueno, hilo cerrado y crea un hilo nuevo porque la gente de este hilo dificilmente te va a responder.