Tabla de contenido:

Introducción a Arduino y Ethernet: 8 pasos
Introducción a Arduino y Ethernet: 8 pasos

Video: Introducción a Arduino y Ethernet: 8 pasos

Video: Introducción a Arduino y Ethernet: 8 pasos
Video: Blynk IoT - Arduino Ethernet Shield - Control de Led's - Primeros Pasos - Parte 01 2024, Mes de julio
Anonim
Introducción a Arduino y Ethernet
Introducción a Arduino y Ethernet

Su Arduino puede comunicarse fácilmente con el mundo exterior a través de una conexión Ethernet por cable. Sin embargo, antes de comenzar, se asumirá que tiene un conocimiento básico de las redes de computadoras, como el conocimiento de cómo conectar computadoras a un concentrador / enrutador con cables RJ45, qué es una dirección IP y MAC, etc. Además, aquí hay un buen resumen rápido sobre Ethernet.

Necesitará un Arduino Uno o una placa compatible con un escudo de Ethernet que use el IC del controlador Ethernet W5100 (prácticamente todos) según la imagen.

Además, deberá alimentar la placa a través de la toma de CC externa: el W5100 IC usa más corriente de la que puede suministrar la alimentación USB. Un paquete de enchufe de 9V 1.5A / verruga de pared será suficiente.

Paso 1:

Imagen
Imagen

Finalmente, los protectores se calientan, así que tenga cuidado de no tocar el W5100 después de un uso prolongado. En caso de que no esté seguro, este es el W5100 IC.

Paso 2:

Una vez que tenga su Arduino habilitado para Ethernet y tenga la alimentación externa conectada, es una buena idea verificar que todo funcione. Abra el IDE de Arduino y seleccione Archivo> Ejemplos> Ethernet> Servidor web. Esto carga un esquema simple que mostrará los datos recopilados de las entradas analógicas en un navegador web. Sin embargo, no lo suba todavía, necesita una pequeña modificación.

Debe especificar la dirección IP del escudo de Ethernet, que se realiza dentro del boceto. Esto es simple, ve a la línea:

Dirección IP ip (10, 1, 1, 77);

Y modifíquelo para que coincida con su propia configuración. Por ejemplo, en nuestra casa la dirección IP del enrutador es 10.1.1.1, la impresora es 10.1.1.50 y todas las PC están por debajo de … 50. Así que estableceré mi protección IP en 10.1.1.77 modificando la línea a:

byte mac = {0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED};

Sin embargo, si solo tienes un escudo, déjalo así. Es posible que exista una probabilidad muy, muy, estadísticamente rara de tener una dirección MAC igual a la de su hardware existente, por lo que sería otro momento para cambiarla.

Paso 3:

Imagen
Imagen

Sin embargo, si solo tienes un escudo, déjalo así. Es posible que exista una probabilidad muy, muy, estadísticamente rara de tener una dirección MAC igual a la de su hardware existente, por lo que sería otro momento para cambiarla.

Una vez que haya realizado sus modificaciones, guarde y cargue el boceto. Ahora abra un navegador web y navegue hasta la dirección IP que ingresó en el boceto, y debería aparecer algo similar a la imagen.

¿Qué esta pasando?

El Arduino ha sido programado para ofrecer una página web sencilla con los valores medidos por las entradas analógicas. Puede actualizar el navegador para obtener valores actualizados. En este punto, tenga en cuenta que los protectores de Ethernet usan pines digitales 10 ~ 13, por lo que no puede usarlos para nada más. Algunos protectores Ethernet Arduino también pueden tener un zócalo para tarjeta microSD, que también usa otro pin digital, así que consulte la documentación para averiguar cuál.

Paso 4:

Sin embargo, ahora que podemos ver que el escudo de Ethernet está funcionando, podemos pasar a algo más útil. Analicemos el ejemplo anterior de una manera sencilla y veamos cómo podemos distribuir y mostrar datos más interesantes en la red. Como referencia, todas las funciones relacionadas con Ethernet son manejadas por la biblioteca Ethernet Arduino. Si examina el boceto anterior que acabamos de utilizar, la sección que será de interés es:

para (int analogChannel = 0; analogChannel <6; analogChannel ++) {int sensorReading = analogRead (analogChannel); client.print ("entrada analógica"); client.print (analogChannel); client.print ("es"); client.print (sensorReading); client.println (""); } cliente.println ("");

Con suerte, esta sección del boceto le resultará familiar; recuerde cómo hemos usado serial.print (); en el pasado al enviar datos a la caja del monitor en serie? Bueno, ahora podemos hacer lo mismo, pero enviando datos desde nuestro escudo Ethernet a un navegador web, en otras palabras, un tipo muy básico de página web. Sin embargo, hay algo que puede que quieras o no aprender para formatear. la salida en un formato legible - código HTML. No soy un desarrollador de sitios web (!), Así que no profundizaré demasiado en HTML.

Sin embargo, si desea ofrecer páginas web con un formato agradable con su Arduino, etc., este sería un buen comienzo. En aras de la simplicidad, las siguientes dos funciones serán las más útiles:

client.print ("es");

Client.print (); nos permite enviar texto o datos a la página web. Funciona de la misma manera que serial.print (), por lo que no hay nada nuevo allí. También puede especificar el tipo de datos de la misma manera que con serial.print (). Naturalmente, también puede usarlo para enviar datos. La otra línea útil es:

client.println ("");

que envía el código HTML de nuevo al navegador web indicándole que comience una nueva línea. La parte que realmente causa el retorno de carro / nueva línea es la

que es un código HTML (o "etiqueta") para una nueva línea.

Entonces, si está creando visualizaciones de páginas web más elaboradas, puede simplemente insertar otras etiquetas HTML en el archivo client.print (); declaración. Si desea obtener más información sobre los comandos HTML, este es un buen sitio de tutoriales.

Finalmente, tenga en cuenta que el boceto solo enviará los datos cuando se haya solicitado, es decir, cuando haya recibido una solicitud del navegador web.

Paso 5: Acceder a su Arduino a través de Internet

Accediendo a su Arduino a través de Internet
Accediendo a su Arduino a través de Internet

Hasta aquí todo bien. Pero, ¿qué pasa si desea acceder a su Arduino desde fuera de la red local?

Necesitará una dirección IP estática, es decir, la dirección IP que su proveedor de servicios de Internet asigna a su conexión debe permanecer igual. Si no tiene una IP estática, siempre que deje su módem / enrutador permanentemente intercambiado, su IP no debería cambiar. Sin embargo, esa no es una solución óptima.

Si su ISP no puede ofrecerle una IP estática en absoluto, aún puede seguir adelante con el proyecto utilizando una organización que ofrezca un DNS dinámico. Estas organizaciones le ofrecen su propio nombre de host de IP estática (por ejemplo, mojo.monkeynuts.com) en lugar de un número, realice un seguimiento de su dirección IP cambiante y vincúlela al nuevo nombre de host. Por lo que puedo recopilar, su módem debe admitir (tener un cliente integrado para…) estos servicios DDNS.

Por ejemplo, dos empresas son No-IP y DynDNS.com. Tenga en cuenta que no he usado esos dos, solo se ofrecen como ejemplos. Ahora, para encontrar su dirección IP … por lo general, puede encontrarla iniciando sesión en la página de administración de su enrutador; generalmente es 192.168.0.1 pero podría ser diferente. Consulte con su proveedor o ISP si le suministraron el hardware. Para este ejemplo, si ingreso 10.1.1.1 en un navegador web, y después de ingresar la contraseña de administración de mi módem, se presenta la siguiente pantalla según la imagen.

Paso 6:

Imagen
Imagen

Lo que buscas es tu dirección IP WAN, como puedes ver en la imagen de arriba. Para mantener alejados a los bromistas, he tachado algunas de mis direcciones.

Lo siguiente que debe hacer es activar el reenvío de puertos. Esto le dice al enrutador dónde redirigir las solicitudes entrantes del mundo exterior. Cuando el módem recibe tal solicitud, queremos enviar esa solicitud al número de puerto de nuestro escudo Ethernet. Utilizando el:

Servidor EthernetServer (125);

La función en nuestro esquema ha establecido el número de puerto en 125. La pantalla de configuración de cada módem se verá diferente, pero como ejemplo, aquí hay una en la imagen.

Paso 7:

Imagen
Imagen

Entonces, puede ver en la línea número uno en la imagen de arriba, los números de puerto de entrada se establecieron en 125 y la dirección IP del escudo de Ethernet se estableció en 10.1.1.77, lo mismo que en el boceto.

Después de guardar la configuración, estamos listos. La dirección externa de mi escudo Ethernet será la WAN: 125, por lo que para acceder al Arduino escribiré mi dirección WAN con: 125 al final en el navegador del dispositivo web remoto, que se pondrá en contacto con el hardware Ethernet solitario en casa.

Además, es posible que deba modificar la configuración del firewall de su módem para permitir que el puerto 125 esté "abierto" a las solicitudes entrantes. Consulte la documentación de su módem para obtener más información sobre cómo hacer esto. Ahora, básicamente, desde cualquier dispositivo conectado a Internet en el mundo libre, puedo ingresar mi WAN y mi número de puerto en el campo URL y recibir los resultados. Por ejemplo, desde un teléfono cuando está conectado a Internet a través de datos móviles LTE.

Entonces, en esta etapa, ahora puede mostrar datos en una página web simple creada por su Arduino y acceder a ella desde cualquier lugar con acceso a Internet sin restricciones. Con su conocimiento previo de Arduino, ahora puede usar datos de sensores u otras partes de un boceto y mostrarlos para su recuperación.

Paso 8: Visualización de los datos del sensor en una página web

Visualización de datos de sensores en una página web
Visualización de datos de sensores en una página web

Como ejemplo de visualización de datos de sensores en una página web, utilicemos un sensor de temperatura y humedad popular y económico: el DHT22. Deberá instalar la biblioteca Arduino DHT22 que se puede encontrar en esta página. Si es la primera vez que usa el DHT22, experimente con el boceto de ejemplo que se incluye con la biblioteca para que comprenda cómo funciona.

Conecte el DHT22 con el pin de datos a Arduino D2, Vin al pin de 5V y GND a… GND. Ahora, nuestro boceto: mostrar la temperatura y la humedad en una página web. Si no está familiarizado con HTML, puede usar servicios en línea como este para generar el código, que luego puede modificar para usarlo en el boceto. En el siguiente ejemplo, los datos de temperatura y humedad del DHT22 se muestran en una página web simple:

#incluya "SPI.h" #incluya "Ethernet.h"

// para sensor DHT22

#incluya "DHT.h" #define DHTPIN 2 #define DHTTYPE DHT22

// Ingrese 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}; Dirección IP ip (10, 1, 1, 77);

// Inicializar la biblioteca del servidor Ethernet

// con la dirección IP y el puerto que desea utilizar // (el puerto 80 es el predeterminado para HTTP): servidor EthernetServer (125); DHT dht (DHTPIN, DHTTYPE);

configuración vacía ()

{dht.begin (); // Abra las comunicaciones en serie y espere a que se abra el puerto: Serial.begin (9600); while (! Serial) {; // espera a que se conecte el puerto serie. Necesario solo para Leonardo} // iniciar la conexión Ethernet y el servidor: Ethernet.begin (mac, ip); server.begin (); Serial.print ("el servidor está en"); Serial.println (Ethernet.localIP ()); }

bucle vacío ()

{// escucha los clientes entrantes EthernetClient client = server.available (); if (cliente) {Serial.println ("nuevo cliente"); // una solicitud http termina con una línea en blanco boolean currentLineIsBlank = true; while (client.connected ()) {if (client.available ()) {char c = client.read (); Serial.write (c); // si ha llegado al final de la línea (recibió un carácter // de nueva línea) y la línea está en blanco, la solicitud http ha finalizado, // entonces puede enviar una respuesta si (c == 'n' && currentLineIsBlank) {// envía un encabezado de respuesta http estándar client.println ("HTTP / 1.1 200 OK"); client.println ("Tipo de contenido: texto / html"); client.println ("Conexión: cerrar"); // la conexión se cerrará después de completar la respuesta client.println ("Refresh: 30"); // actualiza la página automáticamente cada 30 segundos client.println (); client.println ("");

client.println ("");

// obtener datos del sensor DHT22

flotar h = dht.readHumidity (); flotar t = dht.readTemperature (); Serial.println (t); Serial.println (h);

// desde aquí podemos ingresar nuestro propio código HTML para crear la página web

client.print ( Office Weather

Temperatura de la oficina - );

client.print (t);

client.print ( grados Celsius

);

client.print ("

Humedad - );

client.print (h);

client.print ( porcentaje

);

client.print ("

La página se actualiza cada 30 segundos <

. );

rotura;

} if (c == 'n') {// está comenzando una nueva línea currentLineIsBlank = true; } else if (c! = 'r') {// has obtenido un carácter en la línea actual currentLineIsBlank = false; }}} // da tiempo al navegador web para recibir el retraso de datos (1); // cierra la conexión: client.stop (); Serial.println ("cliente desconectado"); }}

Es una modificación del boceto de ejemplo del servidor web del IDE que usamos anteriormente, con algunas modificaciones. Primero, la página web se actualizará automáticamente cada 30 segundos; este parámetro se establece en la línea:

client.println ("Actualizar: 30"); // actualiza la página automáticamente cada 30 segundos

… y el HTML personalizado para nuestra página web comienza debajo de la línea:

// desde aquí podemos ingresar nuestro propio código HTML para crear la página web

Luego, puede simplemente insertar el HTML requerido dentro de las funciones client.print () para crear el diseño que necesita. Finalmente, aquí hay una captura de pantalla de ejemplo del boceto de ejemplo en el trabajo.

Así que ahí lo tienes, otra forma útil de hacer que tu Arduino interactúe con el mundo exterior. Esta publicación es presentada por pmdway.com: todo para fabricantes y entusiastas de la electrónica, con entrega gratuita en todo el mundo.

Recomendado: