• Autor de la entrada:
  • Categoría de la entrada:Arduino

Imagina poder mostrar la lectura de un sensor de temperatura en una página web en tiempo real. Cualquier persona que tenga acceso a la página web en la que se comparte la temperatura puede estar informado en cualquier lugar del mundo.

El mundo de Internet de las cosas, IoT, aumenta de tamaño a pasos agigantados. Poco a poco vemos como son más las industrias que empiezan a implementar el control y monitorización a distancia usando para ello protocolos como HTTP. Esto permite que se pueda acceder a esa información de forma fácil y con casi cualquier dispositivo con una tarjeta de red, compartiéndola entre distintos dispositivos y personas.

Si todo esto lo unimos a la red de redes, conectándo el dispositivo a Internet podemos permitir que las personas adecuadas estén informadas de la lectura de un sensor de temperatura como el lm35 y por tanto poder tomar decisiones acordes a lo que esté ocurriendo.

En un tutorial anterior aprendimos una forma de enviar datos a MySQL desde Arduino y de esta forma almacenar información en tablas que luego podremos recuperar desde casi cualquier web o aplicación. Ahora usábamos la electrónica como un cliente web que se conectaba a un servidor y le envía información.

¿Cómo funciona?

Vamos a invertir los roles, la electrónica se va ha comportar como un servidor web. Por tanto, la página web que nos muestra los datos del sensor estará en la memoria de Arduino.

El cliente será el navegador web que usemos en el ordenador Firefox, Chrome, Internet Explorer, lo dejo a tu elección.

Se trata de un circuito muy sencillo en el cual contamos con el sensor de temperatura TMP35 conectado a la entrada analógica 0 del ADC de Arduino. Cuando un navegador web (un cliente en general) realiza una petición HTTP a Arduino, este se encarga de realizar la lectura de temperatura y de enviarla al cliente para mostrarla en pantalla.


Arduino Ethernet + TMP35

Mostrando la temperatura en una página web con Arduino

El código que usamos para este ejemplo es el que sigue. Es plano y sencillo, y por supuesto, puedes complicarlo todo lo que quieras y puedas.

/*

Ejemplo sobre uso de libreria ethernet
para imprimir un valor en una página web.

*/

#include <SPI.h>
#include <Ethernet.h>

//Ponemos la dirección MAC e IP que queremos que use nuestro Arduino para conectarse al Router
byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
IPAddress ip(192,168,1, 177);

//Definimos que el puerto HTTP sera el 80
EthernetServer server(80);

void setup()
{
//Iniciar la conexión de red y serie
Ethernet.begin(mac, ip);
server.begin();
Serial.begin(9600);
}

void loop()
{
//Leemos el valor analógico
float temperatura = analogRead(0);
//Calculamos la temperatura
temperatura = ((5.0*temperatura*1000.0/1024.0)-500)/10;
//Imprimimos la temperatura usando el puerto serie
Serial.println(temperatura);
delay(1000);
// Esperamos que venga algún cliente web
EthernetClient client = server.available();
if (client) {
boolean currentLineIsBlank = true;
while (client.connected()) {
if (client.available()) {
char c = client.read();
//Si ha terminado la petición del cliente
if (c == 'n' && currentLineIsBlank) {
//Enviamos la cabecera web
client.println("HTTP/1.1 200 OK");
client.println("Content-Type: text/html");
client.println();

//Mostrqamos la temperatura
client.print("La temperatura es ");
client.print(temperatura);
client.println("
");

break;
}
if (c == 'n') {
currentLineIsBlank = true;
}
else if (c != 'r') {
currentLineIsBlank = false;
}
}
}
// Darle un respiro al navegador web para recibir los datos
delay(1);
//Cerrar conexión
client.stop();
}
}

Enrique Gómez

Ingeniero Electrónico Industrial y Automático, amante de la comunicación audiovisual y de la divulgación ingenieril y científica. Friki de Star Wars, cuenta más de lo que parece. Puedes saber más sobre mi y sobre mis trabajos en www.enriquegomez.me