Proyectos IoT

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

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

En nuestra última publicación del blog aprendimos cómo usar el SONOFF Smart Switch para controlar un relé de Ubidots . En este caso aprenderemos a controlar un Aire Acondicionado con el SONOFF TH , una variación del original que incluye sensores de temperatura y humedad. Usando estas lecturas, usaremos Ubidots para encender o apagar su aire acondicionado automáticamente, dependiendo de la temperatura ambiente.

Descripción general

En comparación con los $ 30 que existen, SONOFF es una excelente alternativa para realizar IoT a mayor escala. Además, está basado en el popular chip Wi-Fi ESP8266, lo que lo hace compatible con el entorno Arduino y otros recursos como nuestras bibliotecas ESP en Ubidots .

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. ¡Es por eso que decidimos piratear un poco y liberar todo su poder!

Requisitos

Configuración

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

UARTbee HIJO
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 del Administrador de tableros adicionales . Este campo admite múltiples URL, separándolas con comas, en caso de que ya tenga otras URL escritas.

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

4. Descargue la biblioteca Ubidots aquí .

5. Ahora, haga clic en Sketch -> 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 encender el relé y otro para apagarlo:

  1. En su 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 Índice de calor .
  4. Establezca la condición de activación en "mayor que 25" o el índice de calor que desee (el SONOFF envía los datos en grados Celsius)
  5. Seleccione el tipo de disparador “Establecer una variable”, luego seleccione la fuente de datos SONOFF nuevamente, 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".

Codificando tu SONOFF-TH

Aquí está el código que enciende/apaga el dispositivo SONOFF, para usar este código no olvides cambiar WIFISSID, CONTRASEÑA y tu TOKEN Ubidots .

Para cargar el código en SONOFF necesitarás 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 nuevamente el USB.
/**************************************** * Incluir Bibliotecas ****** **********************************/ #include " Ubidots .h" #include "DHT.h" / ************************************** * Definir instancias y constantes ***** ***********************************/ #define DHTPIN 14 // a qué pin digital estamos conectados #definir TIPO DHT DHT11 // DHT 11 #definir RELÉ 12 #definir 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 ****** ********************************/ // Pon aquí tus funciones auxiliares /******* ******************************** * Funciones principales ************** **************************/ void setup() { Serial.begin(115200); dht.begin(); ubidots .wifiConnect(WIFI_SSID, WIFI_PASS); pinMode(RELÉ, SALIDA); pinMode(LED, SALIDA); escritura digital (LED, ALTA); ubidots .setDebug(verdadero); // Descomentar esta línea para imprimir mensajes de depuración } void loop() { // Espere unos segundos entre mediciones. retraso(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 como Celsius (valor predeterminado) float t = dht.readTemperature(); // Verifique si alguna lectura falló y salga temprano (para volver a intentarlo). if (isnan(h) || isnan(t)) { Serial.println("¡Error al leer desde el sensor DHT!"); devolver; } // Calcular el índice de calor en Celsius (isFahreheit = false) float hic = dht.computeHeatIndex(t, h, false); ubidots .add("humedad", h); // Cambia el nombre de tu variable ubidots .add("temperature", t); ubidots .add("calor", hic); bool bufferEnviado = falso; bufferEnviado = ubidots .send(); // Enviará datos a una etiqueta de dispositivo que coincida con el ID del dispositivo if (bufferSent) { // Hará 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 flotante usando HTTP */ float setRelay = ubidots .get(macAddrs, "relay"); if (setRelay == 1.00) { digitalWrite(RELAY, ALTO); //En relé digitalWrite(LED, LOW); //Encendido led } if (setRelay == 0.00) { digitalWrite(RELAY, LOW); //Relé apagado digitalWrite(LED, HIGH); //led apagado } retardo(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 fan de “SAMURAI Eole Crystal”. Esta máquina requería presionar un botón para encenderla después de enchufarla a la toma de CA, por lo que soldamos el botón ON/OFF para que siempre esté ENCENDIDO:

samurai-top.jpg
samuri-pcb.jpg
samurai-solded.jpg

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

samurai-todos-2.jpg

Dando un paso más…

Ubidots es un servicio en la nube que permite a miles de ingenieros de todo el mundo crear IoT , tanto en la educación como en la empresa. Para saber cómo Ubidots puede ayudar a su empresa, consulte nuestras funciones o déjenos un mensaje.