Uno R3 como servidor web con escudo Ethernet

Hola y bienvenidos a nuestra entrada de blog hoy.

 

Hoy os presentamos Escudo Ethernet W5100 Antes. El escudo se puede conectar fácilmente a nuestro microcontrolador, compatible con Arduino Uno R3, y extiende el microcontrolador con una interfaz Ethernet y un lector de tarjetas SD.

El fondo era la petición de un conocido que monitorea un solo sensor analógico por medio de un microcontrolador, compatible con Arduino Uno R3. Ahora quiere consultarlo a través de una interfaz web. Sin embargo, no quiere utilizar un ESP y una conexión a través de WLAN, sino más bien el Microcontrolador, compatible con Arduino UnoConecte R3 a su red a través de un cable LAN porque es demasiado poco fiable y produce demasiadas emisiones EM.

 

1. Configuración de prueba

Para nuestro experimento, además del Escudo Ethernet W5100, necesitamos un Microcontrolador, compatible con Arduino Uno R3y cualquier sensor analógico. En este ejemplo, usaré un simple Sensor de brillo que puede ser reemplazado por cualquier sensor analógico.

Colocamos cuidadosamente el escudo Ethernet en el Microcontrolador, compatible con Arduino UnoR3. Conectamos el sensor de brillo de la siguiente manera:

 

Uno R3

Sensor de brillo

5v

Medio

Gnd

-

A0

S

 

2. Programación

La programación de la Microcontrolador, compatible con Arduino UnoGracias a las bibliotecas Arduino, R3 es casi tan simple como los módulos ESP.

Sólo necesitamos las bibliotecas Spi.h y Ethernet.h, porque el IDE se puede instalar con él.

Convenientemente, encontraremos un ejemplo de trabajo en "Archivo" -> "Ejemplos" -> "Ethernet" -> "WebServer" que sólo necesitamos ajustar ligeramente.

Puesto que queremos utilizar DHCP si está disponible, reemplazamos la línea "Ethernet.begin(mac, ip);" con el siguiente código:

 

 

  Si (Ethernet.Comenzar(Mac) == 0) {     Serial.println("No se pudo configurar Ethernet mediante DHCP");     tratar de congifure usando la dirección IP en lugar de DHCP:     Ethernet.Comenzar(Mac, Ip);   Servidor.Comenzar();   Serial.Impresión("el servidor está en");   Serial.println(Ethernet.localIP());   }

Puesto que sólo necesitamos generar un valor en el "void loop()," podemos reemplazar el bucle "for" con:

 

            Int sensorLectura = analogRead(0);             Cliente.Impresión("entrada analógica");             Cliente.Impresión("0");             Cliente.Impresión(" es ");             Cliente.Impresión(sensorLectura);             Cliente.println("<br />");

El código completo tendrá este aspecto:

 

 

/*
 Servidor Web

 Un servidor web simple que muestra el valor de los pines de entrada analógica.
 usando un escudo Ethernet Arduino Wiznet.

 Circuito:
 * Escudo Ethernet conectado a los pines 10, 11, 12, 13
 * Entradas analógicas conectadas a los pines A0 a A5 (opcional)

 creado el 18 de dicde2009
 por David A. Mellis
 modificado 9 abr 2012
 por Tom Igoe
 modificado 02 Septiembre 2015
 por Arturo Guadalupi

 */

#include <Spi.H>
#include <Ethernet.H>

Introduzca una dirección MAC y una dirección IP para su controlador a continuación.
La dirección IP dependerá de su red local:
Byte Mac[] = {   0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED
};
Ipaddress Ip(192, 168, 168, 51);

Inicializar la biblioteca del servidor Ethernet
con la dirección IP y el puerto que desea utilizar
(el puerto 80 es el valor predeterminado para HTTP):
EthernetServer Servidor(80);

Vacío Configuración() {   Abra las comunicaciones serie y espere a que se abra el puerto:   Serial.Comenzar(9600);      iniciar la conexión Ethernet y el servidor:   Si (Ethernet.Comenzar(Mac) == 0) {     Serial.println("No se pudo configurar Ethernet mediante DHCP");     tratar de congifure usando la dirección IP en lugar de DHCP:     Ethernet.Comenzar(Mac, Ip);   Servidor.Comenzar();   Serial.Impresión("el servidor está en");   Serial.println(Ethernet.localIP());   }
}


Vacío Bucle() {   listas para clientes entrantes   EthernetClient Cliente = Servidor.Disponible();   Si (Cliente) {     Serial.println("nuevo cliente");     una solicitud http termina con una línea en blanco     Booleana currentLineIsBlank = Verdad;     Mientras (Cliente.Conectado()) {       Si (Cliente.Disponible()) {         Char C = Cliente.Leer();         Serial.Escribir(C);         si usted ha llegado al final de la línea (recibió una nueva línea         carácter) y la línea está en blanco, la solicitud http ha terminado,         para que pueda enviar una respuesta         Si (C == 'n' && currentLineIsBlank) {           enviar un encabezado de respuesta http estándar           Cliente.println("HTTP/1.1 200 OK");           Cliente.println("Content-Type: text/html");           Cliente.println("Conexión: cerrar");  la conexión se cerrará una vez finalizada la respuesta           Cliente.println("Actualizar: 5");  actualizar la página automáticamente cada 5 segundos           Cliente.println();           Cliente.println("<! DOCTYPE HTML>");           Cliente.println("<html>");           salida el valor de cada pin de entrada analógica             Int sensorLectura = analogRead(0);             Cliente.Impresión("entrada analógica");             Cliente.Impresión("0");             Cliente.Impresión(" es ");             Cliente.Impresión(sensorLectura);             Cliente.println("<br />");           //}           Cliente.println("</html>");           Romper;         }         Si (C == 'n') {           estás empezando una nueva línea           currentLineIsBlank = Verdad;         } Más Si (C != 'A'r') {           usted ha conseguido un personaje en la línea actual           currentLineIsBlank = Falso;         }       }     }     Conceda al navegador web tiempo para recibir los datos     Retraso(1);     Cierre la conexión:     Cliente.Parada();     Serial.println("cliente desconectado");   }
}

 

3. La prueba 

Ahora abrimos la dirección IP en nuestro navegador web y vemos el valor del sensor. La pantalla se actualiza cada 5 segundos.

 

 

Por lo que es muy posible conectar sus sensores a su red doméstica sin ESP y sin Wlan.

Y si no lo haces Microcontrolador, compatible con Arduino UnoR3 tiene: pronto te presentaremos en el blog más módulos con los que podrás integrar tu microcontrolador con un cable LAN en tu red.

Les deseo a todos un montón de diversión, y decir adiós hasta la próxima vez.

Tuyo Markus Neumann

 

Para arduinoProyectos para principiantesSensores

1 comentario

Timo

Timo

Guten Abend,

wie kann ich die Werte mit einem zweiten Arduino auf dem Seriellen monitor auslesen. Also auch mit einem Ethernetshield. Finde leider kein brauchbares Beispiel im Netz

Deja un comentario

Todos los comentarios son moderados antes de ser publicados

Artículos de blog

  1. Ahora instalamos el esp32 a través de la administración.
  2. Lüftersteuerung Raspberry Pi
  3. Arduino IDE - Programmieren für Einsteiger - Teil 1
  4. ESP32 - das Multitalent
  5. Transporte Aéreo - programación de ESP mediante redes locales inalámbricas