La manipulación de datos de forma remota de un sistema ahora es posible gracias a las redes, en la red se pueden enviar y recibir datos entre los diversos elementos que la componen, es aquí cuando surgen términos como cliente, servidor, dirección IP, Ethernet. En el este Tutorial 3 se trabaja con la placa Arduino Ethernet Shield que nos permite comunciar a nuestro Arduino a la red de redes, la Internet. Veremos un ejemplo de como buscar en el servidor de Google utlizando nuestro Arduino Ethernet Shield y otra aplicación nos permitirá monitorear desde un navegador web los valores de un Sensor Ultrasónico y un pulsador. Puedes adquirir los componentes necesarios para este Tutorial en Tienda de Robótica.
Adquiera los componentes para este proyecto en:
Veamos de que trata este artículo:
Esta es la disposición sugerida para montar la red de nuestro Arduino Ethernet Shield
Veamos el vídeo de la práctica
Este es el montaje utilizado en el video. Se pretende manejar una señal digital y una señal análoga
Las prácticas que se plantean son:
Cliente Web: Este ejemplo muestra cómo hacer una petición HTTP utilizando el Ethernet Shield. Devuelve una búsqueda en Google con el término "Arduino". Los resultados de esta búsqueda se pueden ver como HTML a través de la caonsola serie de Arduino.
/* ------------------------------------------ Cliente Web ------------------------------------------ Hacer una petición al servidor de Google para buscar el término "Arduino", los resultados se pueden ver en la consola serial en HTML Cosas de Mecatrónica y Tienda de Robótica*/#include <Ethernet.h> // Incluye la librería Ethernet// Identificador Ethernet unicobyte mac[]={0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED};// Dirección IP asignanda al Arduino Ethernet Shieldbyte ip[]={192, 168, 0, 4};// Dirección del servidor al que se va a conectarbyte server[]={173, 194, 33, 104};// Google// Es el puerto HTML para conexión a InternetClient client(server, 80);//------------------------------------//Funcion principal//------------------------------------void setup(){//Incializa libreria y configuraciones de red Ethernet.begin(mac, ip);//Incia comunicación a trevés del puerto Serial.begin(9600);// Reatrdo 1s delay(1000);// Imprime el mensaje Serial.println("conectando...");// Verifica la condición de la funciónif(client.connect()){// Imprime el mensaje Serial.println("conectado");// Termino a buscar "Arduino" client.println("GET /search?q=arduino HTTP/1.0");// Fin de linea client.println();}else{// Imprime mensaje Serial.println("La conexión fallo");}}//------------------------------------//Funcion ciclicla//------------------------------------ void loop(){// Condición que evalua al cliente disponibleif(client.available()){char c = client.read(); Serial.print(c);}// Condición para verificar si el cliente esta coenctadoif(!client.connected()){ Serial.println(); Serial.println("desconectado."); client.stop();for(;;);}}
Servidor Web: El dispositivo será capaz de responder a una petición HTTP con su Ethernet Shield. Después de abrir un navegador web e ingresar la dirección IP asiganada al Arduino Ethernet Shield, su Arduino responderá mostrando los valores del estado de su entrada análoga (A0) y su entrada digital (Pin 2).
/* ------------------------------------------ Servidor Web ------------------------------------------ Muestra el valor de una entrada digital y una entrada análoga a través de una página web Entrada digital -> Pulsador NO Entrada análoga -> Sensor Ultrásonico LV-MaxSonar-EZ1 Cosas de Mecatrónica y Tienda de Robótica*/#include <Ethernet.h> // Incluye la librería Ethernet// Identificador Ethernet unicobyte mac[]={0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED};// Dirección IP asignanda al Arduino Ethernet Shieldbyte ip[]={192, 168, 0, 4};// Es el puerto HTML para conexión a InternetServer server(80);//------------------------------------//Funcion principal//------------------------------------void setup(){//Incializa libreria y configuraciones de red Ethernet.begin(mac, ip);//Incia comunicación a trevés del puerto server.begin();}//------------------------------------//Funcion ciclicla//------------------------------------ void loop(){ Client client = server.available();if(client){//Una petición http termina con una línea en blanco boolean current_line_is_blank =true;while(client.connected()){if(client.available()){char c = client.read();// Si hemos llegado al final de la línea (recibió una nueva línea// Carácter) y la línea está en blanco,
// la petición http ha terminado,// Para que podamos enviarle una respuestaif(c =='\n'&& current_line_is_blank){// Envió de un encabezado estándar de respuesta HTTP client.println("HTTP/1.1 200 OK"); client.println("Content-Type: text/html"); client.println();//Imprimir valor entrada digital client.print("Entrada digital "); client.print("2"); client.print(" es "); client.print(digitalRead(2));// Lectura del pin 2 (digital) client.println("<br />"); client.println("<br />");//Imprimir valor entrada análoga client.print("Entrada analoga"); client.print("0"); client.print(" es "); client.print(analogRead(0));// Lectura del pin 0 (analogo) client.println("<br />"); client.println("<br />");break;}if(c =='\n'){// Comenzaremos una nueva línea current_line_is_blank =true;}elseif(c !='\r'){// Obtenemos un caracter en la línea actual current_line_is_blank =false;}}}// Damos un tiempo al servidor web para recibir los datos delay(1);//Retardo de un 1 ms(milisegundo) client.stop();}}
¡Sólo los usuarios registrados pueden escribir comentarios!
RODOLFO ROMERO
|2011-06-15 13:17:08
muy buen tutorial los felicito,estoy tratando de conectar el Arduino + Ethernet Shield a pachube para monitorear un LM35 pero no he podido, me genera un error de conexion, me podrian dar una mano con el codigo.
Richard
- Felicitaciones y sugerencia
|2010-10-18 11:23:17
Hola Juan,
Primeramente para felicitarte por tus aportaciones en temas como este que siempre son muy relevantes. Apenas me estoy iniciando en el proyecto ARDUINO pero tengo la necesidad de realizar un proyecto en el que debo enviar un mail por medio del sistema Arduino + Ethernet Shield; la condicion es que ese mail debe enviar un informe relacionado con ciertos registros bajo dos condiciones:
a) Cuando yo se lo mande pedir por medio de la WEB.
b) Cada cierto tiempo este mandando el registro de manera automatica.
Te agradeceria infinitamente tu colaboracion.
Saludos a todos
Equipo Cosas de Mecatronica
- Re: e-Mail por arduino
|2010-10-21 14:43:54
Hola Richard
Muchas gracias por tu comentario. Respecto a tu idea de trabajo, enviar datos por email a través del Arduino podría existir la dificultad ya que las direcciones de correo son https// lo que quiere decir que son direcciones seguras y los más probable es que los datos de tu correo no sean accesibles a través del Arduio. Otra posiblidad que tienes es utlizar Pachube que es una herramienta para trabajar con registros relacionados con sensores, la idea de esta comunidad es poder visualizar ciertos datos en tiempo real en la web a través del Arduino + Ethernet Shield. Puedes conocer en más acerca de Pachube en http://www.pachube.com/
En Cosas de Mecatrónica estamos para ayudarte, cualquier duda adelante
Adios
Gerardo Rodriguez
- LED
|2010-09-28 15:31:03
Hola Juan, muy buenos los tutoriales, oye de casualidad no esta en tus planes realizar algun tutorial para poder encender un LED desde internet con el Arduino Ethernet. Saludos y Muchas gracias!
Equipo Cosas de Mecatrónica
- RE: Led Arduino Ethernet Shield
|2010-09-30 14:52:11
Hola Gerardo
Muchas gracias por el comentario. Aùn no hemos desarrollado dicho tutorial pero si quieres puedes revisar el siguiente enlace donde, existe una aplicaciòn en html para utilizar los puertos del Arduino Ethernet Shield y con esto podrias encender el Led. http://community.pachube.com/node/112#controller
Cualquier duda que tengas en Cosas de Mecatrónica estamos para ayudarte
Adios
Andrés Botero H.
- Arduino
|2010-09-09 20:33:37
Saludo !!!
Juan Camilo muchas gracias por estos tutoriales, quería saber si vas a realizar mas tutoriales con arduino.
No se si tengas experiencia usando relevos para manejar voltajes de alterna (110-120V ac) si la tienes me gustaría que me ayudaras con un proyecto que tengo ya que no he podido hacer lo que tengo en mente.
Gracias !!!
Andrés Botero H.
Equipo Cosas de Mecatrónica
- Re: Arduino - Relevo
|2010-09-10 19:56:09
Hola Andrés
Gracias por el comentario. De Arduino tenemos planteados muchos tutoriales y cada semana estaremos realizando una entrega. Respecto a tu pregunta una salida digital del Arduino la puedes conectar para manejar un relevo, la bobina del relevo podría ser de 5VDC y luego a través de sus contactos puedes manejar voltajes alternos 110V AC. Para conectar tu Arduino al relevo debes realizar una etapa para acondicionar la señal y poder proteger a tu Arduino de cortos y sobrecargas, para ello revisa la siguiente imagen que muestra como debes conectar el relevo. Si tienes alguna duda en Cosas de Mecatrónica estamos para ayudarte. http://img175.imageshack.us/img175/7300/releyx1.png
Adiós