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.
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(); } }