Comunicacion entre dos arduinos por ethernet

Hola a todos. Soy novato en el uso de las placas de arduino y me gustaria saber si se puede conectar dos placas Arduino mega con ethernet shield a traves de una red ethernet.
Explico un poco el proyecto. Quisiera tener en un sitio una placa arduino que controlara unos pulsadores y encendiera un led en funcion del interruptor pulsado, pero que ademas a traves de una red ethernet encendiera un led en otro lugar mediante las salidas de otra placa arduino. Como puedo enviar los datos a esta segunda placa? y como debo programar la placa para que este escuchando constantemente y reciba los datos?

Espero que me hayais entendido.

Gracias de antemano por vuestras respuestas.

Hola,

Si se puede y es algo que está muy documentado por la red. El propio IDE de Arduino, te trae buenos ejemplos.

Saludos

Igor R.

Antetodo Igor gracias por contestar.

Me gustaria que me indicaras a que ejemplos te refieres. es alguno de los de la seccion Ethernet de Ejemplos?
Si son esos los probare puesto que lo poco que he aprendido es utilizando los ejemplos del IDE.

De todas formas si sabes de algun link a un ejemplo en concreto te lo agradeceria

Hola a todos de nuevo.
He estado investigando por los foros y por las paginas de ejemplos y no he podido encontrar nada similar a lo que necesito. Si que he encontrado muchos ejemplos para conectar Arduino a una pagina web y para mandar las entradas de Arduno desde una pagina web pero no lo que necesito.
Yo necesito, por ejemplo, enviar la señal de un pulsador conectado a una placa arduino (entrada de una placa arduino) a traves de ethernet hasta un led en otra placa arduino (salida de esta placa arduino distante).
Por favor si alguien me puede ayudar se lo agradeceria.

Un saludo, Manuel

En la ayuda de la referencia ethernet viene muy bien explicado

Un arduino le configuras como cliente

y el otro como server

Saludos.

manrod65:
Hola a todos. Soy novato en el uso de las placas de arduino y me gustaria saber si se puede conectar dos placas Arduino mega con ethernet shield a traves de una red ethernet.
Explico un poco el proyecto. Quisiera tener en un sitio una placa arduino que controlara unos pulsadores y encendiera un led en funcion del interruptor pulsado, pero que ademas a traves de una red ethernet encendiera un led en otro lugar mediante las salidas de otra placa arduino. Como puedo enviar los datos a esta segunda placa? y como debo programar la placa para que este escuchando constantemente y reciba los datos?

Espero que me hayais entendido.

Gracias de antemano por vuestras respuestas.

Rescato este tema porque es lo que quiero hacer yo, he irado los links que habeis puesto pero no acabo de ver como el server lee los datos que le envia el cliente.

mi idea es que el cliente diga ON y OFF y el server active o desactive el led

podeis poner algun ejemplillo??

Gracias

Hola dystrom

Yo tambien acabo de empezar con arduino y mas o menos la parte de programacion basica no lo veo complicado, pero me interesa tambien el tema de comunicaciones y queria saber si habias logrado comunicar varios arduinos entre si por ethernet. La idea que quiero hacer es por ejemplo con tres arduinos activar un pulsador en un arduino_1 y activar un led el arduino_2 y accionar otro pulsador en el arduino_1 y que se encienda un led en el arduino_3.

No se como llevarlo a cabo.

Gracias de antemano por las respuestas. Un saludo

hola quisiera saber si lograste hacer la comunicación entre los arduinos por medio de ethernet ya que soy nuevo y quiero hacer lo mismo.
saludos

hola me llamo jóse y me gustaria saber si alguien a logrado enviar datos entre dos arduino por ethernet me es de gran necesidad alguna informacion algun link gracias

Jose, no lees que estos post son de Jun 12, 2012, 03:35 pm

Hola, yo ya lo logre por comunicación UDP, creo que es la forma mas rapida usando chars y pues no solo un dispositivo si no puedes comunicar mas, debido a la propiedad del UDP.

Saludos!!

Hola, yo ya lo logre por comunicación UDP, creo que es la forma mas rapida usando chars y pues no solo un dispositivo si no puedes comunicar mas, debido a la propiedad del UDP.

Saludos!!

Saludos
Coloca el codigo de como lo resolviste para que los que venga con tus mismas dudas puedan resolverlos.

Google : Arduino two arduinos over ethernet

Respuesta : How to have 2 Arduinos Communicate a variable over Ethernet?

hola alguien pudo comunicar los 2 arduinos quisro hacer algo similar.
saludos

Leiste la respuesta #13? Ahi dice como, pero basicamente un arduino usa el demo Ethernet-Server y el otro el demo Ethernet-Client
mira el enlace del post#13 y tienes como encararlo.

necesitas mas info, aca un tutorial

Ya logré conectar 2 arduinos via ethernet.. creo que se puede mejorar la programación dado que soy novato en el tema. les subo las programaciones de servidor y cliente. Basicamente logré encender un led dado un pulsador en otro arduino. ambas placas son arduino uno con el shield ethernet con el wiznet 5100.

aca la prog del servidor

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

/*CONFIGURACION DE LOS PARAMETROS ETHERNET SERVIDOR*/

byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };  
                                                    // byte ip[] = { 192, 168, 1, 123 }; OTRA FORMA DE ESCRIBIR LA DIRECCIÓN IP  
IPAddress ip(192, 168, 1, 125);                      // DIRECCIÓN IP ASIGNADA AL SERVIDOR
byte gateway[] = { 192, 168, 1, 1 };                 // LA DIRECCIÓN DE PUERTA DE ENLACE AL ROUTER                                                      
byte subnet[] = { 255, 255, 255, 0 };                // LA MÁSCARA SUBNET DEL ROUTER

EthernetServer server = EthernetServer(12535);       // CREA UN SERVIDOR QUE ESTA ATENTO A CONEXIONES ENTRANTES POR UN PUERTO DADO

void setup()
{
 Ethernet.begin(mac, ip, gateway, subnet);          // INICIA LA LIBRERÍA ETHERNET Y LA CONFIGURACIÓN DE LA RED
 server.begin();                                    // INDICA AL SERVIDOR QUE COMIENCE A RECIBIR CONEXIONES ENTRANTES
 
 pinMode(4,OUTPUT);                                 // CONFIGURA EL PIN 4 DE ARDUINO COMO SALIDA
 pinMode(3,OUTPUT);                                 // CONFIGURA EL PIN 3 DE ARDUINO COMO SALIDA
 digitalWrite(4,HIGH);                              // DESHABILITA LA MEMORIA SD  
 Serial.begin(9600);                                // COMIENZA LA COMUNICACIÓN SERIAL A 9600 BAUDIOS
 Serial.print("server is at ");                     // IMPRIME EN EL MONITOR SERIAL
 Serial.println(Ethernet.localIP());                // IMPRIME LA IP LOCAL EN EL MONITOR SERIAL
}

void loop()
{  
 EthernetClient client = server.available();        // COMIENZA A LEER LO QUE ESTA ENTRANDO EN EL BUFFER DEL SERVIDOR
 if (client)
 {                                                  // SI EL CLIENTE ESTA CONECTADO.... ENTONCES.....
   Serial.println("client connected");              // IMPRIME EN EL PUERTO SERIAL
   while (client.connected())                       // MIENTRAS EL CLIENTE ESTÉ CONECTADO..... HACE.....
     { 
       int c = client.read();                       // CREA LA VARIALBE DE TIPO ENTERO "C" EN DONDE SE ALMACENA LO LEIDO EN EL BUFFER
       if (c == 'P')                                // SI EL ENTERO "C" ES IGUAL AL VALOR ASCII 80 QUE EQUIVALE AL VALOR 'P'
       {
       Serial.println(c);                           // IMPRIME EN EL MONITOR SERIAL EL VALOR DE LA VARIABLE "C"
       digitalWrite(3,HIGH);                        // ENTONCES ASIGNA EL VALOR "HIGH" O 5 VOLTS AL PIN 3 DE ARDUINO
       delay(2000);                                 // DEMORA 2 SEGUNDOS
       digitalWrite(3,LOW);                         // ASIGNA EL VALOR "LOW" O 0 VOTLS AL PIN 3 DE ARDUINO (ENCIENDE Y APAGA EL LED)
       }
     }
 delay(500);  
 }
}

y aca la prog del cliente

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

/*CONFIGURACION DE LOS PARAMETROS ETHERNET CLIENTE*/

byte mac[] = { 0x90, 0xA2, 0xDA, 0x00, 0x2F, 0xE4 };
                                                     // byte ip[] = { 192, 168, 1, 178 };  OTRA FORMA DE COLOCAR LA DIRECCION IP  
IPAddress ip(192, 168, 1, 178);
byte server[] = { 192, 168, 1, 125 };                 // IP DEL ARDUINO SERVIDOR
int SW;                                               // CREA LA VARIABLE DE TIPO ENTERO "SW"

EthernetClient client;                                // CREA UN CLIENTE, QUE EN ESTE CASO SE LLAMA "client"

void setup()
{
 Ethernet.begin(mac, ip, server);                    // INICIA LA LIBRERÍA ETHERNET Y LA CONFIGURACIÓN DE LA RED
 pinMode(3, INPUT);                                  // CONFIGURA EL PIN 3 DE ARDUINO COMO UNA ENTRADA DIGITAL
 pinMode(4,OUTPUT);                                  // CONFIGURA EL PIN 4 COMO SALIDA DIGITAL (sd)
 digitalWrite(4,HIGH);                               // COLOCA EL PIN 4 DE LA ARDUINO EN UN NIVEL LÓGICO ALTO
 delay(100);
 Serial.begin(9600);                                 // COMIANZA LA COMUNICACIÓN SERIAL A 9600 BAUDIOS DE VELOCIDAD
 client.flush();                                     // DESCARTA TODOS LOS DATOS ALMACENADOS EN EL BUFFER
 delay(500);
}

void loop()
{
 if(digitalRead(3)== LOW)                            // SI EL PIN DIGITAL 3 ESTA EN BAJO....... ENTONCES.....
 {
 Serial.flush();                                     // LIMPIA EL BUFFER DEL MONITOR SERIAL
 Serial.print("Esperando el boton");                 // IMPRIME EN EL MONITOR SERIAL
 }
   else                                              // CASO CONTRARIO A LA CONDICIÓN INICIAL
   {
   Serial.println("Entrada 3 en alto");              // IMPRIME EN EL MONITOR SERIAL
   client.flush();                                   // NUEVAMENTE LIMPIA LOS DATOS DEL BUFFER DE DATOS DE LA CONEXIÓN ETHERNET
   client.connect(server, 12535);                    // CONECTA EL CLIENTE AL SERVIDOR POR SU IP Y POR EL PUERTO ESPECIFICADO
   Serial.println("connected");                      // IMPRIME EN MONITO SERIAL
   delay(100);                
   SW =  client.write('P');                          // LE ASIGNA LA VARIABLE "SW" EL VALOR QUE SE ESCRIBIRÁ EN EL SERVIDOR
   Serial.println(SW);                               // IMPRIME EL VALOR DE RETORNO DE LA FUNCIÓN WRITE() QUE ES EN BYTES
   delay(1000);
   }
 }
2 Likes

Muchas gracias, tu ejemplo me sirvio de mucho!!!
Agradecida

Gracias, tu aporte me ayudo muchisimo.
Saludos