viernes, 2 de junio de 2017

Práctica 3

Servidor web

En esta práctica montaremos un servidor web con un arduino y mediante un LM35, mediremos la temperatura de una estancia.

Una vez tenemos los conocimientos necesarios, pasamos al programa de Arduino. Lo primero que tenemos que hacer es configurar la shield Ethernet.



Debemos fijar la la MAC (suele venir en una pegatina en la placa) y la IP de la shield, esta última debe estar dentro de nuestra red.

La siguiente instrucción arranca el servidor web en el puerto seleccionado, en este caso hemos utilizado el 80 que es el predefinido en los ordenadores para la comunicación HTTP.

Las siguientes instrucciones interesantes son:



Donde iniciamos la comunicación Ethernet y el servidor.

Antes de programar el loop, tenemos que tener en cuenta cómo vamos a introducir el código HTML que dará formato a nuestra página, dentro del código de processing. La solución es hacerlo mediante peticiones HTTP.

Para detectar una petición HTTP con el código de Arduino, primero tendremos que crear un cliente Web. Luego cuando el cliente envié una petición HTTP al Arduino, este la leerá carácter por carácter a través de una variable char. Sabiendo que una petición HTTP termina con una línea en blanco, pondremos una condición que detecte esta línea en blanco para, posteriormente, enviar la respuesta HTML.

Una vez contemplado este proceso, procedemos:



Cuando reciba una línea en blanco, quiere decir que la petición HTTP ha acabado y el servidor Web está listo para enviar una respuesta en código HTML.

Ahora tenemos que entregar una cabecera de texto, con las reglas de HTML, para que el navegador al otro extremo nos entienda.



Ahora ya podemos introducir el texto HTML que definirá nuestra página, sabiendo que el otro extremo de la comunicación sabrá interpretarlo. A continuación se expone un fragmento, a modo de ejemplo:



El programa en su totalidad se puede descargar en el siguiente enlace, pero el resto no tiene ningún misterio.

Hay que decir que “client” es un puntero a un objeto que desciende de la clase “stream” de arduino, lo mismo que “serial” o “Ethernet”, por lo cual tienen propiedades y métodos comunes. De esta forma, podemos usar un client.print al igual que hacemos con un Serial.print y ambos cumplen con las mismas reglas.

LM35

El LM35 es un sensor de temperatura digital. A diferencia de otros dispositivos como los termistores en los que la medición de temperatura se obtiene de la medición de su resistencia eléctrica, el LM35 es un integrado con su propio circuito de control, que proporciona una salida de voltaje proporcional a la temperatura.

La salida del LM35 es lineal con la temperatura, incrementando el valor a razón de 10mV por cada grado centígrado. El rango de medición es de -55ºC (-550mV) a 150ºC (1500 mV). Su precisión a temperatura ambiente es de 0,5ºC.





El esquema eléctrico es el que vemos en la imagen, aunque por medio se encuentra la shield Ethernet.
La parte del programa que nos leerá, transformará y printará el resultado es la siguiente:



Configuración del router
Por último, si queremos acceder a nuestro servidor desde una IP externa a nuestra red, debemos abrir el puerto correspondiente y para la aplicación concreta.

En mi caso, al tener un router de Telefónica, debo entrar al portal Alejandra. Con otras compañías este paso es más sencillo, ya que entrando a la configuración del router (dirección local 192.168.1.0 o 192.168.1.1) se puede hacer directamente.

  




  


El puerto que debemos abrir es el 80, para la IP que hemos definido en el programa.

No hay comentarios:

Publicar un comentario