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
Un resistor de 4.7kΩ (en caso de que tu DS18B20 no tenga uno)
Cables
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!