Tutorial de SONOFF: Un controlador de temperatura ambiente con Wi-Fi por $10

Mateo Vélez
· 5 minutos de lectura
Enviar por correo electrónico

En nuestra última entrada del blog, aprendimos a usar el interruptor inteligente SONOFF para controlar un relé de Ubidots . En este caso, aprenderemos a controlar un aire acondicionado con el SONOFF TH , una versión del original que incluye sensores de temperatura y humedad. Con estas lecturas, usaremos Ubidots para encender o apagar el aire acondicionado automáticamente, según la temperatura ambiente.

Descripción general

En comparación con los $ 30 disponibles en el mercado, SONOFF es una excelente alternativa para IoT a mayor escala. Además, se basa en el popular chip WiFi ESP8266, lo que lo hace compatible con el entorno 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 ventaja reside en su diseño y precio. Por eso decidimos probarlo y liberar todo su potencial

Requisitos

Configuración

  1. Desmonte el dispositivo SONOFF para acceder a la asignación de pines TTL de SONOFF, que necesitaremos para programar el ESP8266 integrado. Deberá soldar cuatro pines, que se muestran en la imagen a continuación.
  2. Conecte los pines UARTbee a los pines SONOFF, siguiendo esta distribución de pines:

UARTbee SONOFF
VCC VCC
Texas RX
RX Texas
Tierra Tierra

Vaya al 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 URL adicionales del Administrador de tableros . Este campo admite varias URL, separándolas con comas, en caso de que ya haya escrito otras.

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

4. Descargue la biblioteca Ubidots aquí .

5. Ahora, haga clic en Boceto -> Incluir biblioteca -> Agregar biblioteca .ZIP.

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

7. Cierre el IDE de Arduino y ábralo nuevamente.

Crear eventos Ubidots

Necesitaremos dos eventos Ubidots : uno para activar el relé y otro para desactivarlo:

  1. En tu Ubidots , ve a Eventos y luego haz clic en “Agregar nuevo evento”
  2. Seleccione la fuente de datos SONOFF que acaba de crear.
  3. Seleccione la Índice de calor .
  4. Establezca la condición de activación en “mayor que 25”, o el índice de calor deseado (SONOFF envía los datos en grados Celsius)
  5. Seleccione el tipo de disparador “Establecer una variable”, luego seleccione nuevamente la fuente de datos SONOFF y luego la “Variable de relé”
  6. Configúrelo en “1” para que Eventos establezca la variable 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 “menos de 20” y el valor enviado al relé en “0”.

Codificación de su SONOFF-TH

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

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

  1. Conecte el UARTbee al USB del PC.
  2. Presione el botón SONOFF y desconecte el USB al mismo tiempo.
  3. Mientras presiona el botón, vuelva a conectar el USB.
/**************************************** * 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 13 const char* UBIDOTS_TOKEN = "..."; // Pon aquí tu TOKEN Ubidots const char* WIFI_SSID = "..."; // Pon aquí tu SSID de Wi-Fi const char* WIFI_PASS = "..."; // Pon aquí tu contraseña de Wi-Fi char *macAddrs; DHT dht(DHTPIN, DHTTYPE); Ubidots ubidots(UBIDOTS_TOKEN, UBI_HTTP); /*************************************** * Funciones auxiliares ****************************************/ // Coloque 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 la temperatura o la humedad tarda unos 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 la temperatura en Celsius (predeterminado) float t = dht.readTemperature(); // Verificar si alguna lectura falló y salir antes (para volver a intentarlo). if (isnan(h) || isnan(t)) { Serial.println("¡Error al leer del sensor DHT!"); return; } // Calcular el índice de calor en Celsius (isFahreheit = false) float hic = dht.computeHeatIndex(t, h, false); ubidots.add("humedad", h); // Cambiar el nombre de la variable ubidots.add("temperatura", t); ubidots.add("calor", 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); //Relé activado digitalWrite(LED, LOW); //Led activado } if (setRelay == 0.00) { digitalWrite(RELAY, LOW); //Relé desactivado digitalWrite(LED, HIGH); //Led desactivado } delay(5000); }
  1. Cuando termine de cargar el código, desconecte el UARTbee y SONOFF, luego conecte el sensor DHT11.

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

Poniéndolo todo junto

Probamos este proyecto con un ventilador "SAMURAI Eole Crystal". Esta máquina requería pulsar un botón para encenderla después de conectarla a la toma de corriente, así que soldamos el botón de encendido/apagado para que siempre estuviera encendido

samurái-top.jpg
samuri-pcb.jpg
samurái-soldado.jpg

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

samuráis-todos-2.jpg

Dando un paso más allá…

Ubidots es un servicio en la nube que permite a miles de ingenieros de todo el mundo desarrollar IoT , tanto en el ámbito educativo como empresarial. Para saber cómo Ubidots puede ayudar a su empresa, consulte nuestras funciones o envíenos un mensaje.