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
1 comentario
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