Tutorial de SONOFF: Un controlador de temperatura ambiente con Wi-Fi por $10
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
- 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.
- 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:
- En tu Ubidots , ve a Eventos y luego haz clic en “Agregar nuevo evento”
- Seleccione la fuente de datos SONOFF que acaba de crear.
- Seleccione la Índice de calor .
- 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)
- Seleccione el tipo de disparador “Establecer una variable”, luego seleccione nuevamente la fuente de datos SONOFF y luego la “Variable de relé”
- Configúrelo en “1” para que Eventos establezca la variable Relé en “1” cuando se cumpla la condición.
- 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:
- Conecte el UARTbee al USB del PC.
- Presione el botón SONOFF y desconecte el USB al mismo tiempo.
- 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); }- 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



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

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.