Está en la página 1de 7

UNIVERSIDAD PEDAGÓGICA NACIONAL

FACULTAD DE CIENCIA Y TECNOLOGÍA / DEPARTAMENTO DE TECNOLOGÍA


LICENCIATURA EN ELECTRÓNICA / OPTATIVA PROFESIONAL 2

Laboratorio 13
Arduino como servidor Web
Ferney Alexander Nava Trujillo
Universidad Pedagógica Nacional
Departamento de Tecnologia
dte_fanavat662@pedagogica.edu.co
UNIVERSIDAD PEDAGÓGICA NACIONAL
FACULTAD DE CIENCIA Y TECNOLOGÍA / DEPARTAMENTO DE TECNOLOGÍA
LICENCIATURA EN ELECTRÓNICA / OPTATIVA PROFESIONAL 2
Resumen- Este documento presenta la treceava práctica Imagen 1: Tarjeta Ethernet Shield.
de la materia de Optativa Profesional 2, este curso está
orientado al internet de las cosas (IoT), en la presente El shield provee un conector Ethernet estándar RJ45. La
practica vamos a realizar unas simulaciones con la tarjeta
de adquisición de datos ARDUINO y el Arduino Ethernet Ethernet shield dispone de unos conectores que permiten
Shield como también se utilizara el sensor temperatura conectar a su vez otras placas encima y apilarlas sobre la
DHT11. placa Arduino.

Palabras claves: Internet de las cosas (IoT), Arduino, Ethernet Arduino usa los pines digitales 10, 11, 12 y 13 (SPI) para
Shield, Sensor de temperatura. comunicarse con el W5100 en la Ethernet shield. Estos pines
no pueden ser usados para e/s genéricas.
Abstract: This document presents the thirteenth practice
of the subject of Professional Elective 2, this course is El botón de reset en la shield resetea ambos, el W5100 y la
oriented to the Internet of Things (IoT), in the present placa Arduino.
practice we are going to carry out some simulations with the
data acquisition card ARDUINO and the Arduino Ethernet La shield contiene varios LEDs para información:
Shield as The DHT11 temperature sensor will also be used.
 ON: indica que la placa y la shield están alimentadas
Keywords:  LINK: indica la presencia de un enlace de red y
Internet of Things (IoT), Arduino, Ethernet Shield, parpadea cuando la shield envía o recibe datos.
Temperature sensor.  100M: indica la presencia de una conexión de red
100 Mb/s (de forma opuesta a una de 10Mb/s)
INTRODUCCIÓN  RX: parpadea cuando el shield recibe datos
La Tarjeta Shield Ethernet abre innumerables opciones para  TC: parpadea cuando el shield envía datos
controlar el Arduino a través de Internet o de la LAN de la
casa. Domótica, automatización, Internet de las cosas (IoT), El jumper soldado marcado como “INT” puede ser conectado
control y monitoreo remoto son algunos de los campos donde para permitir a la placa Arduino recibir notificaciones de
se puede utilizar el Shield. Es compatible con el Arduino Uno eventos por interrupción desde el W5100, pero esto no está
y Mega, además las librerías Ethernet y SD vienen incluidas soportado por la librería Ethernet. El jumper conecta el pin
en el IDE de Arduino. Los sensores son el primer eslabón de INT del W5100 al pin digital 2 de Arduino.
la cadena de IoT, un sensor no es más que una caja negra que
transduce un estado físico que queremos monitorear en una Básicamente el Wiznet W5100 implementa una pila TCP con
propiedad eléctrica que podemos medir. todas las funciones del estándar IEEE 802.3 (Ethernet capa
física y de enlace de datos) dentro del chip; esto hace que el
MARCO TEÓRICO chip Wiznet W5100 sea buena opción para integrar el sistema
Ethernet Shield embebido en internet. La programación del chip de Wiznet
El Arduino Ethernet shield nos da la capacidad de conectar un W5100 es también fácil ya que solo tenemos que escribir y
Arduino a una red Ethernet. Es la parte física que implementa leer desde y hacia los registros internos W5100 con el fin de
la pila de protocolos TCP/IP. utilizar el construir funciones de los protocolos TCP/IP.

Está basada en el chip Ethernet Wiznet W5100 provee una


pila de red IP capaz de soportar TCP y UDP. Soporta hasta
cuatro conexiones de sockets simultáneos. Usa la librería
Ethernet para leer y escribir los flujos de datos que pasan por
el puerto Ethernet. Me permitirá escribir sketches que se
conecten a internet usando la shield.

Imagen 2: chip Wiznet W5100

El Wiznet W5100 actuará como un dispositivo esclavo SPI


controlado por microcontrolador ATMega328 como el SPI
Maestro. Necesita el protocolo SPI al menos cuatro señales,
MOSI (Master OUT Serial In), MISO (Master In Serial Out),
UNIVERSIDAD PEDAGÓGICA NACIONAL
FACULTAD DE CIENCIA Y TECNOLOGÍA / DEPARTAMENTO DE TECNOLOGÍA
LICENCIATURA EN ELECTRÓNICA / OPTATIVA PROFESIONAL 2
SCK (señal de reloj proporcionada por el maestro) y CS (the  Precisión de medición de temperatura: +_2.0°C
SPI slave chip select). El chip W5100 también proporciona el  Resolución Temperatura: 0.1°C
pin de interrupción.  Rango de medición de humedad: 5% RH
 Resolución Humedad: 1% RH
Sensor de temperatura DHT11  Tiempo de sensado: 1 seg.
 Interface digital: Single-bus (bidireccional)
El DHT11 es un sensor digital de temperatura y humedad  Modelo: DHT11
relativa de bajo costo y fácil uso. Integra un sensor capacitivo
 Dimensiones: 16*12*5 mm
de humedad y un termistor para medir el aire circundante, y
 Peso: 1 gr.
muestra los datos mediante una señal digital en el pin de datos
(no posee salida analógica). Utilizado en aplicaciones  Carcasa de plástica celeste
académicas relacionadas al control automático de
temperatura, aire acondicionado, monitoreo ambiental en Pines
agricultura y más.  1-Alimentacion: +5V (VCC)
 2-Datos (DATA)
Utilizar el sensor DHT11 con las plataformas  3-No Usado(NC)
Arduino/Raspberry Pi/ Mudenca es muy sencillo tanto a nivel  4-Tierra(GND)
de software como hardware. A nivel de software se dispone de
librerías para Arduino con soporte para el protocolo “Single DESARROLLO DEL LABORATORIO
bus”. En cuanto al hardware, solo es necesario conectar el pin  Valores erráticos puertos analógicos
VCC de alimentación a 3-5v, el pin GND a Tierra (0v) y el
pin de datos a un pin digital en nuestro Arduino. Si se desea
conectar varios sensores DHT11 a un mismo Arduino, cada En este caso se muestra inicialmente valores aleatorios
sensor debe tener su propio pin de datos. Quizá la única erráticos, con el fin de probar si los puertos analógicos están
desventaja del sensor es que sólo se puede obtener nuevos funcionando correctamente, para posteriormente conectar los
datos cada 2 segundos. Cada sensor es calibrado en fábrica sensores.
para obtener unos coeficientes de calibración grabados en su
memoria OTP, asegurando alta estabilidad y fiabilidad a lo
largo del tiempo. El protocolo de comunicación entre el
sensor y el microcontrolador emplea un único hilo o cable, la
distancia máxima recomendable de longitud de cable es de
20m., de preferencia utilizar cable apantallado. Proteger el
sensor de la luz directa del sol (radiación UV).

Imagen 4: Conexión de la tarjeta shield de Ethernet al router


prueba puertos analógicos.

Para visualizar algún cambio en los valores, se decidió colocar


un puerto analógico en GND a continuación se podrá
visualizar el cambio.

Imagen 3: Sensor de temperatura DHT11

En comparación con el DHT22 y DHT21, este sensor es


menos preciso, menos exacto y funciona en un rango más
pequeño de temperatura/ humedad, pero su empaque es más
pequeño y de menos costo.

Especificaciones Técnicas
 Voltaje de Operación: 3V – 5V DC
 Rango de medición de temperatura: 0 a 50°C
UNIVERSIDAD PEDAGÓGICA NACIONAL
FACULTAD DE CIENCIA Y TECNOLOGÍA / DEPARTAMENTO DE TECNOLOGÍA
LICENCIATURA EN ELECTRÓNICA / OPTATIVA PROFESIONAL 2
// Inicia conexión Ethernet y el servidor:
Ethernet.begin(mac, ip);
server.begin();
Serial.print("server está en ");
Serial.println(Ethernet.localIP());
}
void loop() {
// escucha por clientes entrando
EthernetClient client = server.available();
if (client) {
Serial.println("nuevo cliente");
// una petición http termina con un \n y una línea en blanco
boolean currentLineIsBlank = true;
while (client.connected()) {
if (client.available()) {
char c = client.read();
Imagen 5: Datos aleatorios leídos Serial.write(c);
// Si se ha obtenido el final de línea (recibió carácter
equivalente de una nueva línea
// y la línea está en blanco, la petición http ha terminado,
// de manera que se puede enviar una respuesta
if (c == '\n' && currentLineIsBlank) {
// se envía un encabezado estándar de respuesta http
client.println("HTTP/1.1 200 OK");
client.println("Contenido- Tipo: text/html");
client.println("Connexión: cierra"); // la conexión será
cerrada después de respuesta
client.println("Refresco: 5"); // refresca página
automáticamente cada 5 s.
client.println();
client.println("<!DOCTYPE HTML>");
client.println("<html>");
// saca el valor de cada pin de entrada análoga
for (int analogChannel = 0; analogChannel < 6;
analogChannel++) {
int sensorReading = analogRead(analogChannel);
Imagen 6: Datos del Monitor Serial
client.print("entrada análoga ");
client.print(analogChannel);
client.print(" es ");
client.print(sensorReading);
client.println("<br />");
}
client.println("</html>");
Código: break;
}
#include <SPI.h> if (c == '\n') {
#include <Ethernet.h> // inicia una nueva línea
// Introduzca dirección MAC y dirección IP para el currentLineIsBlank = true;
controlador. } else if (c != '\r') {
// La dirección IP dependerá de la red local: // se obtiene un caracter sobre la línea corriente
byte mac[] = { currentLineIsBlank = false;
0x90, 0xA2, 0xDA, 0x11, 0x19, 0xB0 }
}; }
IPAddress ip(192, 168, 0, 33); }
// Inicializa la librería del servidor Ethernet // dar tiempo al buscador web para recibir datos
// con dirección IP y puerto a utilizar delay(1);
// (port 80 por defecto para HTTP): // Cierra conexión:
EthernetServer server(80); client.stop();
void setup() { Serial.println("cliente desconectado");
// Abre comunicación serie y espera a que el Puerto abra: }
Serial.begin(9600); }
while (!Serial) {
; // espera al Puerto serie para conectarse Descripción:
}
UNIVERSIDAD PEDAGÓGICA NACIONAL
FACULTAD DE CIENCIA Y TECNOLOGÍA / DEPARTAMENTO DE TECNOLOGÍA
LICENCIATURA EN ELECTRÓNICA / OPTATIVA PROFESIONAL 2
El anterior programa lo que hace es visualizar en el navegador
los valores aleatorios de los pines analógicos, de la tarjeta
shield de Ethernet a partir de la dirección IP asignada, con el
fin de realizar una prueba a los puertos analógicos de la tarjeta
shield de Ethernet.

 Lecturas del sensor de Temperatura DHT11

Imagen 10: Datos de las lecturas del sensor por medio del
monito serial

Descripción:

El anterior programa lo que hace es visualizar en el navegador


los datos de las lecturas del sensor de temperatura a partir de
la dirección IP asignada.

Imagen 7: Montaje del sensor de temperatura DHT11


 Lecturas de medidor nivel de luz
fotoresistencia LDR

Imagen 8: Arduino Ethernet shield conectado al router y al pc.

Imagen 11: Montaje fotoresistencia LDR

Imagen 9: Datos de las lecturas del sensor.


UNIVERSIDAD PEDAGÓGICA NACIONAL
FACULTAD DE CIENCIA Y TECNOLOGÍA / DEPARTAMENTO DE TECNOLOGÍA
LICENCIATURA EN ELECTRÓNICA / OPTATIVA PROFESIONAL 2

#include <SPI.h>
#include <Ethernet.h>
byte mac[] = {0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED
};
IPAddress ip(192,168,0,33); // Colocar la dirección IP real
EthernetServer server(80); // Se inicia servidor en puerto
estándar 80
long A = 1000;
int B = 15;
int Rc = 10;
int LDRPin = A0;
int V;
int ilum;
void setup(){
Serial.begin(9600);
while(!Serial);
Ethernet.begin(mac, ip);
server.begin(); // inicia servidor web
Serial.print ("Servidor Web en la dirección");
Serial.println(Ethernet.localIP());
}
void loop()
{
EthernetClient client = server.available(); // Buscamos
entrada de clientes
Imagen 12: Arduino Ethernet shield conectado al router y if (client) {
al pc. Serial.println("Nuevo cliente");
boolean currentLineIsBlank = true; // Las peticiones
HTTP finalizan con linea en blanco
while (client.connected())
{ if (client.available())
{ char c = client.read();
Serial.write(c); // Esto no es necesario, pero se
copia todo a la consola
// Una petición HTTP finaliza con un \n y una línea en
blanco
// A partir de aquí se envía la respuesta
if (c == '\n' && currentLineIsBlank) //
{
Imagen 13: Datos de lectura de la fotoresistencia. client.println("HTTP/1.1 200 OK"); // Enviar una
respuesta tipica
client.println("Contenido-Tipo: text/html");
client.println("Conexión: cierra");
client.println("Refresco: 15"); // Actualizar cada
15 s.
client.println();
client.println("<!DOCTYPE HTML>");
client.println("<html>");
V = analogRead(LDRPin);
ilum = ((long)V*A*10)/((long)B*Rc*(1024-V));
Serial.println(ilum);
// Desde aquí se crea página con el código HTML
que se defina
client.print("<head><title>Situación de
luz</title></head>");
client.print("<body><h1> Nivel de
Imagen 14: Datos de las lecturas de la fotoresistencia por iluminacion</h1><p><b>Iluminacion: </b>");
medio del monito serial client.print(ilum); // Aquí se envía la
temperatura
client.print("<p><em>La página se actualiza cada
Código:
UNIVERSIDAD PEDAGÓGICA NACIONAL
FACULTAD DE CIENCIA Y TECNOLOGÍA / DEPARTAMENTO DE TECNOLOGÍA
LICENCIATURA EN ELECTRÓNICA / OPTATIVA PROFESIONAL 2
15 segundos. </em></p></body></html>");
break;
}
if (c == '\n')
currentLineIsBlank = true; // nueva línea
else if (c != '\r')
currentLineIsBlank = false;
}
}
delay(10); // Para asegurar que los datos se envían
client.stop(); // Se cierra la conexión
Serial.println("cliente desonectado");
}
}

Descripción:
El anterior programa lo que hace es visualizar en el navegador
el nivel de luz, tanto en interiores o exteriores con la ayuda de
la fotoresistencia es un dispositivo cuya resistencia varía en
función de la luz recibida, en el navegador se visualiza a partir
de la dirección IP asignada.

I. Conclusiones

Con la tarjeta shield de Ethernet podemos experimentar


realizando proyectos, creando un servidor web que permita
controlar diferentes dispositivos electronicos, como por
ejemplo realizar proyectos de Domonita.

La elaboracion de este taller se compredio de que manera se


pueden ir agregando mas componentes a un solo proyecto.

Gracias a este taller se logro tener un poco mas claridad sobre


lo que es el internet de las cosas (IoT)

Apartir de la tarjeta shield de Ethernet surgieron varias ideas


de proyectos para reliazar a futuro

REFERENCIAS

[1] Shield de Ethernet :


https://naylampmechatronics.com/blog/27_Tutorial-Ethernet-
Shield-y-Arduino.html
[2] Medir nivel de luz con arduino y fotoresistencia ldr (gl55)
https://www.luisllamas.es/medir-nivel-luz-con-arduino-y-
fotoresistencia-ldr/
[3] Sensor de temperatura y humedad relativa DHT11
https://naylampmechatronics.com/sensores-temperatura-y-
humedad/57-sensor-de-temperatura-y-humedad-relativa-
dht11.html

También podría gustarte