Ir al contenido principal
Todas las coleccionesTutoriales de proyectos IoT
Control de Temperatura con Ubidots MQTT y NodeMcu
Control de Temperatura con Ubidots MQTT y NodeMcu

Control de temperatura utilizando el sensor DS18B20 y NodeMcu con la nube de Ubidots.

Sergio M avatar
Escrito por Sergio M
Actualizado hace más de una semana

Publicado originalmente el 6 de julio de 2017

Esta guía detalla cómo hacer una unidad de control de temperatura utilizando un NodeMCU y Ubidots. Además, te mostraremos cómo crear diferentes eventos que te notifiquen a través de correo electrónico o SMS cuando tu "variable" (en este caso, la temperatura) cambie su valor.

Vamos a utilizar una versión pre-cableada y a prueba de agua del sensor DS18B20 (sensor de temperatura OneWire). Es útil cuando necesitas medir algo a distancia o en condiciones húmedas. El sensor de temperatura OneWire tiene diferentes versiones; una de ellas tiene un resistor integrado y otras no, así que asegúrate de que la versión que estás utilizando sea la correcta antes de comenzar con el proyecto. Para el control, vamos a usar un NodeMcu utilizando un pin digital.

Requisitos

Configuración

1. Primero, debemos elegir una versión. Si tu sensor tiene el resistor integrado, simplemente conéctalo al NodeMcu así:

CABLE NEGRO - GND CABLE ROJO - Vin CABLE AMARILLO - D3

Si no, debes alimentar el pin DATA a través de la resistencia de 4.7kΩ, y los pines Vin y GND deben estar conectados entre sí y a tierra.

2. Ve a la IDE de Arduino, haz clic en Archivos -> Preferencias, y entra http://arduino.esp8266.com/stable/package_esp8266com_index.json en el campo "URLs adicionales del gestor de placas". Puedes agregar múltiples URLs, separándolas con comas.

3. Abre "Gestor de placas" desde Herramientas -> Menú de placas e instala la plataforma esp8266 (y no olvides seleccionar tu placa NodeMCU 1.0 desde el menú Herramientas > Placa después de la instalación).

4. Descarga la biblioteca UbidotsESPMQTT, biblioteca OneWire, y biblioteca DallasTemperature usando estos hipervínculos.

5. Ahora, haz clic en Sketch -> Incluir biblioteca -> Agregar biblioteca .ZIP.

6. Selecciona los archivos .ZIP de Ubidots ESPMQTT, OneWire y DallasTemperature y luego “Aceptar” o “Elegir” para todas las bibliotecas. Si no puedes agregar las bibliotecas, intenta manualmente: descomprime el rar/zip descargado y copia la carpeta de la biblioteca a la ruta C:\Users\ubidots\Documents\Arduino\libraries.

7. Cierra la IDE de Arduino y ábrela nuevamente.

Programa el ESP NodeMcu

Una vez que todo esté conectado correctamente, iremos a la IDE y escribiremos el siguiente código:

/****************************************  Incluir bibliotecas****************************************/#include "UbidotsESPMQTT.h"#include <OneWire.h>#include <DallasTemperature.h>/****************************************  Definir constantes e instancias****************************************/#define TOKEN "....." // Tu TOKEN de Ubidots#define WIFINAME "....." // Tu SSID#define WIFIPASS "....." // Tu contraseña Wifi#define MQTTCLIENTNAME "....." // Tu nombre de cliente MQTT, debe ser único, así que recomendamos elegir un nombre ASCCI aleatorio#define Pin D3int temp;OneWire ourWire(Pin);DallasTemperature sensors(&ourWire);Ubidots client(TOKEN, MQTTCLIENTNAME);/****************************************  Funciones auxiliares****************************************/void callback(char* topic, byte* payload, unsigned int length) {  Serial.print("Mensaje recibido [");  Serial.print(topic);  Serial.print("] ");  for (int i = 0; i < length; i++) {    Serial.print((char)payload[i]);  }  Serial.println();}/****************************************  Funciones principales****************************************/void setup() {  // pon tu código de configuración aquí, para ejecutarse una vez:  Serial.begin(115200);  client.wifiConnection(WIFINAME, WIFIPASS);  sensors.begin();  client.begin(callback);}void loop() {  // pon tu código principal aquí, para ejecutarse repetidamente:  if (!client.connected()) {    client.reconnect();  }  sensors.requestTemperatures();  //Prepara el sensor para la lectura  temp = sensors.getTempCByIndex(0);  Serial.print(sensors.getTempCByIndex(0));  //Lee e imprime la temperatura en Celsius  client.add("temperature", temp);  //Inserta tus etiquetas de variable y el valor a enviar  delay(1000);  Serial.println("Grados Centígrados");  client.ubidotsPublish("control");  client.loop();}


ver rawnodeMcuMQTT-OneWire alojado con ❤ por GitHub

Resultados

Ahora, abre tu cuenta de Ubidots y ve a Fuente. Verás una nueva DataSource llamada "control". haz clic en ella.

Luego, verás el valor de la temperatura.

Además, puedes crear un Evento que te notifique cuando la temperatura sea irregular. Ve a Eventos, haz clic en Agregar Evento, y selecciona tu Data Source y Variable.

Los Eventos pueden notificarte por correo electrónico, sms, Telegram o WebHook. También puedes establecer una variable:

Cuando tu evento esté listo deberías ver estas ventanas:

En este ejemplo, si el valor de temperatura es >= 28, Ubidots te enviará un correo electrónico como se configuró anteriormente, de la siguiente manera:

¡Es muy simple! Con solo unos pocos cables puedes observar el comportamiento de la temperatura de tu hogar, ya sea que estés dentro o fuera. Incluso puedes activar alertas por correo electrónico/SMS en caso de incendio.

¡Ahora tú prueba! Si no te has registrado en Ubidots, comienza gratis hoy mismo!

¿Ha quedado contestada tu pregunta?