Ir al contenido principal
Todas las coleccionesTutoriales de proyectos IoT
Configurar un monitor de temperatura del agua utilizando Spark Core y Ubidots
Configurar un monitor de temperatura del agua utilizando Spark Core y Ubidots

¿Estás cocinando pescado en el verano o congelándolo en el invierno? Recibe mensajes de tu pescado usando Ubidots y Spark Core.

Sergio M avatar
Escrito por Sergio M
Actualizado hace más de 2 meses

Hay varios tutoriales de Spark que tratan sobre la lectura de sensores de temperatura. Hoy llevaremos esto un paso más allá: monitorizaremos la temperatura de un acuario de forma remota y haremos que Ubidots nos alerte cada vez que esté fuera de un umbral especificado.

1. Materiales

  • Algunos cables de puente

  • Una resistencia de 4.7k Pull up

3. Cableado

Sigue el siguiente diagrama, como ves necesitas una resistencia de 4.7kohms entre la señal digital y Vcc.

3. Configura tu Dashboard.

Como usuario registrado en Ubidots, crea una fuente de datos llamada “Spark Core” y luego añade una nueva variable llamada "Temperatura”.

  1. Ve a la pestaña "Fuentes" y crea una fuente de datos llamada "Spark Core" haciendo clic en el botón 'más' ubicado en la esquina superior derecha.

2. Haz clic en la fuente de datos creada y luego en “Añadir nueva variable”.

3. Por favor, toma nota de el ID de tu variable, lo necesitamos más tarde.

4. Crea un token en la pestaña "Mi perfil".

5. Para hacer que tu pez te alerte cuando la temperatura esté por debajo o por encima de un umbral, necesitas crear un nuevo evento. Para hacerlo, ve a la pestaña "Eventos" y añade dos eventos; uno para la temperatura por debajo de 21C y otro cuando esté por encima de 26C. En ambos casos, elige Spark Core como fuente de datos, luego Temperatura como variable.

  • Primer Evento

  • Selecciona SMS

  • Segundo evento

4. Programación

Crearemos una nueva aplicación llamada "tankTemperature" en el IDE de Spark Build, luego necesitamos incluir en nuestra aplicación la biblioteca "HTTPCLIENT" para enviar los datos a Ubidots, así como las bibliotecas "OneWire" y "spark-dallas-temperature" para leer el sensor DS18B20. No olvides incluir tu token de Ubidots y el ID de la variable en el código.

  1. Crea una nueva aplicación llamada "tankTemperature" y luego haz clic en el ícono de "Bibliotecas" y busca una biblioteca HTTP llamada “HTTPCLIENT”.

2. Haz clic en la biblioteca “HTTPCLIENT” y luego haz clic en el botón “INCLUIR EN LA APLICACIÓN”.

3. Repite los mismos pasos, pero esta vez busca las bibliotecas llamadas "OneWire" y "spark-dallas-temperature".

4. Ahora ve a la aplicación de presencia, luego copia y pega el siguiente código en tu código:

// Esta declaración #include fue añadida automáticamente por el IDE de Spark.#include "HttpClient/HttpClient.h"// Esta declaración #include fue añadida automáticamente por el IDE de Spark.#include "OneWire/OneWire.h"// Esta declaración #include fue añadida automáticamente por el IDE de Spark.#include "spark-dallas-temperature/spark-dallas-temperature.h"#define ONE_WIRE_BUS D2OneWireoneWire(ONE_WIRE_BUS);DallasTemperature sensor(&oneWire);float temperature = 0.0;char resultstr[64];HttpClient http;#define VARIABLE_ID "5489bf717625424489244e2a"#define TOKEN "pSZJt9W7v5W3fpUsRYNKiDMgJ770NK"http_header_t headers[] = ##{{ "Content-Type", "application/json" },      { "X-Auth-Token" , TOKEN },    { NULL, NULL } }// NOTA: Siempre termina los encabezados con NULL};http_request_t request;http_response_t response;void setup() {    request.port = 80;    request.hostname = "industrial.api.ubidots.com";    request.path = "/api/v1.6/variables/"VARIABLE_ID"/values";    Serial.begin(9600);    sensor.begin();}void loop() {     sensor.requestTemperatures();     temperature=sensor.getTempCByIndex(0);     sprintf(resultstr, "{\"value\":%.4f}",temperature);     request.body = resultstr;//Enviando presencia a Ubidots     http.post(request, response, headers);     Serial.println(response.status);     //Solo para depuración     Serial.println(response.body);     delay(1000);}

ver rawDS18B20.ino alojado con ❤ por GitHub

5. Flashea el código y espera hasta que el núcleo deje de parpadear en magenta. Como puedes ver, el código es bastante simple para un proyecto tan genial :)

5. Escalando tus Resultados

Una característica interesante de Ubidots es la capacidad de transformar tus datos a través de expresiones matemáticas. Esto se llama una "Variable Derivada", así que cambiemos los resultados medidos de Celsius a Fahrenheit:

6. Conclusión

En este artículo cubrimos cómo enviar datos de temperatura desde un acuario a Ubidots, y luego recibir una alerta por SMS cada vez que la temperatura saliera de un rango dado. Ubidots te ayuda a crear rápidamente proyectos de Internet de las Cosas sin la necesidad de codificar servidores web, visualizaciones o APIs. No olvides revisar otros proyectos que utilizan el Spark Core.

¿Tienes un proyecto de IoT en mente? ¡Hazlo realidad en días, no en meses!

Este contenido fue publicado originalmente en el Blog de Ubidots el 22 de diciembre de 2014.

¿Ha quedado contestada tu pregunta?