Visualización de datos en la nube. Internet de las cosas.
Monitorizar los datos de temperatura y humedad obtenidos del sensor DHT11 en la nube.
Para ello disponemos del portal web dweet.io que nos ofrece un servicio para enviar y representar datos en la nube sin necesidad, ni si quiera, de registrarnos en la plataforma.
Vamos a ver los pasos a seguir:
- Probamos la plataforma introduciendo un dato, para ello en el navegador tecleamos por ejemplo (cambia jorgeroden por tu nombre): http://dweet.io/dweet/for/jorgeroden?temperatura=20
- Abre otra pestaña del navegador o utiliza un móvil para seguir el dato: http://dweet.io/follow/jorgeroden
- Prueba añadiendo otra variable, en este caso la humedad:http://dweet.io/dweet/for/jorgeroden?temperatura=20&humedad=8
Automatizamos el proceso de recogida de datos desde Arduino con un programa en Processing, que enviará datos a través del navegador a dweet.io.
IMPORTANTE: No hay que tener abierto el monitor serie del IDE de Arduino porque ocupa el puerto y, por lo tanto, no deja leer los datos a Processing.
PROGRAMA A CARGAR EN ARDUINO:
#include "DHT.h" #define DHTPIN 2 #define DHTTYPE DHT11 // DHT 11 DHT dht(DHTPIN, DHTTYPE); void setup() { Serial.begin(9600); dht.begin(); } void loop() { delay(2000); float h = dht.readHumidity(); float t = dht.readTemperature(); if (isnan(h) || isnan(t)) { Serial.println("Fallo al leer el sensor DHT11"); return; } // Únicamente enviar a Processing las variables t y h
Serial.print("Temperatura="); Serial.print(t); Serial.print("&Humedad="); Serial.println(h); }
PROGRAMA A EJECUTAR EN PROCESSING (PC / LAPTOP):
import processing.serial.*; //lf es el caracter de retorno de carro, que en ASCII es 10 int lf = 10; // El puerto serie Serial myPort; void setup() { // Lista todos los puertos serie println(Serial.list()); // OJO: Elige el puerto donde tengas conectado Arduino.
// Cambia el "0" de Serial.list()[0] por el orden que
// tu puerto ocupe en la lista (0, 1, 2,...).
// Si no lo tienes claro qué puerto ocupa Arduino mira
// en el IDE Arduino en "Herramientas" mira el puerto que esté seleccionado. //Fíjate que tenemos la velocidad del puerto a la misma que pusimos en Arduino myPort = new Serial(this, Serial.list()[0], 9600); } void draw() { while (myPort.available() > 0) { String lectura = myPort.readStringUntil(lf); if (lectura != null) { println(lectura); //IMPORTANTE! cambia jorgeroden por tu nombre o lo que utilizases anteriormente loadStrings("https://dweet.io/dweet/for/jorgeroden?"+lectura); } } }
REPRESENTACIÓN DE DATOS EN EL NAVEGADOR:
Dweet.io nos ofrecerá los datos de la siguiente manera:
Si queremos algo más vistoso podemos utilizar el servicio freeboard.io aunque en este caso nos tendremos que registrar en la web.
Una vez registrados podemos crear paneles indicadores configurados a nuestro gusto para visualizar la información. Primero habrá que añadir como fuente de datos Dweet.io y nuestro nombre utilizado allí (jorgeroden en el ejemplo).
Después creamos un panel indicando que la fuente de datos que queremos utilizar y la variable en cuestión a visualizar.
¡Y resultado puede ser de este tipo!