Ir al contenido principal
Todas las coleccionesTutoriales de proyectos IoT
Tutorial de SONOFF: Un Controlador de Temperatura de Habitación Wi-Fi por $10
Tutorial de SONOFF: Un Controlador de Temperatura de Habitación Wi-Fi por $10

Controlar la temperatura y la humedad de una habitación utilizando Ubidots y el SONOFF-TH

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

En esta publicación, aprenderemos cómo controlar un aire acondicionado con el SONOFF TH, una variación del original que incluye sensores de temperatura y humedad. Usando estas lecturas, utilizaremos el motor de eventos de Ubidots para encender o apagar automáticamente su aire acondicionado, dependiendo de la temperatura de la habitación.

Descripción general

En comparación con los enchufes inteligentes WiFi de $30 que hay, el SONOFF es una gran alternativa para hacer proyectos de IoT en el hogar inteligente e incluso industriales a mayor escala. Además, se basa en el popular chip Wi-Fi ESP8266, lo que lo hace compatible con el entorno de Arduino y otros recursos como nuestras bibliotecas ESP en Ubidots.

El SONOFF viene con su propio firmware y aplicación móvil, pero creemos que su principal valor radica en su factor de forma y precio. ¡Por eso decidimos hacer un poco de hacking y desatar su pleno potencial!

Requisitos

Configuración

1. Desensamble el dispositivo SONOFF, esto es para acceder al pinout TTL del SONOFF, que necesitaremos para programar el ESP8266 a bordo. Necesitará soldar cuatro pines, que se muestran en la imagen a continuación.

2. Conecte los pines de UARTbee a los pines de SONOFF, siguiendo este pinout:

3. Vaya a la IDE de Arduino, haga clic en Archivos -> Preferencias e ingrese esta URL para poder acceder a las bibliotecas de ESP8266 para Arduino:

http://arduino.esp8266.com/stable/package_esp8266com_index.json

en el campo URLs del Administrador de Placas Adicionales. Este campo admite múltiples URLs, separándolas con comas, en caso de que ya tenga otras URLs escritas.

4. Abra el Administrador de Placas desde el menú Herramientas -> Placa e instale la plataforma ESP8266. Seleccione su placa ESP8266 desde el menú Herramientas > Placa después de la instalación.

5. Descargue la biblioteca de Ubidots aquí.

6. Ahora, haga clic en Boceto -> Incluir Biblioteca -> Agregar Biblioteca .ZIP.

7. Seleccione el archivo .ZIP de Ubidots y luego haga clic en “Aceptar” o “Elegir”.

8. Cierre la IDE de Arduino y ábrala nuevamente.

Crear Eventos de Ubidots

Necesitaremos dos Eventos de Ubidots: uno para encender el relé y otro para apagarlo:

1. En su cuenta de Ubidots, vaya a Eventos y luego haga clic en "Agregar nuevo Evento"

2. Seleccione la fuente de datos SONOFF que acaba de crear.

3. Seleccione la variable Índice de Calor.

4. Establezca la condición de activación en "mayor que 25", o su Índice de Calor deseado (el SONOFF envía los datos en grados Celsius)

5. Seleccione el tipo de activación "Establecer una variable", luego seleccione nuevamente la fuente de datos SONOFF, luego la "variable de relé"

6. Establezca en "1" para que los Eventos establezcan la variable de Relé en "1" cuando se cumpla la condición.

7. Repita estos pasos para crear un segundo evento, pero esta vez establezca la condición en "menor que 20" y el valor enviado al Relé en "0".

Codificando su SONOFF-TH

Aquí está el código que enciende/apaga el dispositivo SONOFF, para usar este código no olvide cambiar WIFISSID, PASSWORD y Ubidots TOKEN.

Para cargar el código en el SONOFF necesitará ponerlo en modo de programación:

1. Conecte el UARTbee al USB de la PC.

2. Presione el botón SONOFF y desconecte el USB al mismo tiempo.

3. Mientras presiona el botón, conecte el USB nuevamente.

/**************************************** * Incluir Bibliotecas ****************************************/#include "Ubidots.h"#include "DHT.h"/**************************************** * Definir Instancias y Constantes ****************************************/#define DHTPIN 14     // a qué pin digital estamos conectados#define DHTTYPE DHT11   // DHT 11#define RELAY 12#define LED 13const char* UBIDOTS_TOKEN = "...";  // Ponga aquí su TOKEN de Ubidotsconst char* WIFI_SSID = "..."; // Ponga aquí su SSID de Wi-Ficonst char* WIFI_PASS = "..."; // Ponga aquí su contraseña de Wi-Fichar *macAddrs;DHT dht(DHTPIN, DHTTYPE);Ubidots ubidots(UBIDOTS_TOKEN, UBI_HTTP);/**************************************** * Funciones Auxiliares ****************************************/// Ponga aquí sus funciones auxiliares/**************************************** * Funciones Principales ****************************************/void setup() {  Serial.begin(115200);  dht.begin();  ubidots.wifiConnect(WIFI_SSID, WIFI_PASS);  pinMode(RELAY, OUTPUT);  pinMode(LED, OUTPUT);  digitalWrite(LED, HIGH);  ubidots.setDebug(true);  // Descomente esta línea para imprimir mensajes de depuración}void loop() {  // Espere unos segundos entre mediciones.  delay(2000);  // Leer temperatura o humedad toma aproximadamente 250 milisegundos!  // Las lecturas del sensor también pueden tener hasta 2 segundos de "antigüedad" (es un sensor muy lento)  float h = dht.readHumidity();  // Leer temperatura en Celsius (el valor predeterminado)  float t = dht.readTemperature();  // Verifique si alguna lectura falló y salga temprano (para intentar nuevamente).  if (isnan(h) || isnan(t)) {      Serial.println("¡Error al leer del sensor DHT!");      return;  }  // Calcule el índice de calor en Celsius (isFahreheit = false)  float hic = dht.computeHeatIndex(t, h, false);    ubidots.add("humidity", h);  // Cambie por el nombre de su variable  ubidots.add("temperature", t);  ubidots.add("heat", hic);  bool bufferSent = false;  bufferSent = ubidots.send();  // Enviará datos a una etiqueta de dispositivo que coincida con el Id del dispositivo  if (bufferSent) {    // Hacer algo si los valores se enviaron correctamente    Serial.println("Valores enviados por el dispositivo");  }    ubidots.getDeviceMac(macAddrs);    /* Obtener el último valor de una variable como float usando HTTP */  float setRelay = ubidots.get(macAddrs, "relay");    if (setRelay == 1.00) {      digitalWrite(RELAY, HIGH); //Encender relé      digitalWrite(LED, LOW); //Encender led  }  if (setRelay == 0.00) {      digitalWrite(RELAY, LOW); //Apagar relé      digitalWrite(LED, HIGH); //Apagar led  }  delay(5000);}

Cuando termine de cargar el código, desconecte el UARTbee y el SONOFF, luego conecte el sensor DHT11.

Su SONOFF está listo para conectarse a una fuente de 110-240V y a su aire acondicionado.

Uniendo todo

Probamos este proyecto con un ventilador "SAMURAI Eole Crystal". Esta máquina requería presionar un botón para encenderla después de enchufarla a la toma de corriente, así que soldamos el botón ON/OFF para que esté siempre ENCENDIDO:

Luego volvimos a ensamblar la unidad, la conectamos a la corriente alterna y ¡listo!

Dando un paso más...

Ubidots es un servicio en la nube que empodera a miles de ingenieros en todo el mundo para construir proyectos de IoT, tanto en educación como en empresas. Para aprender cómo Ubidots puede ayudar a su negocio, consulte nuestras características o déjenos un mensaje.

Publicado originalmente en Ubidots Blog el 7 de junio de 2016.

¿Ha quedado contestada tu pregunta?