Proyectos IoT

Tutorial SONOFF: Un interruptor inteligente Wi-Fi por 5 dólares

Mateo Vélez
- 4 min read
Enviar por correo electrónico

En esta guía aprenderás a controlar cualquier electrodoméstico de 110-240V por 5$, utilizando el dispositivo SONOFF de Itead. Comparado con los enchufes inteligentes WiFi de 30$ que hay por ahí, el SONOFF es una gran alternativa para hacer proyectos de IoT inteligente doméstico e incluso industrial 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 librerías ESP en Ubidots.

El SONOFF viene con su propio firmware y aplicación móvil, pero creemos que su principal valor reside en su forma y bajo precio. Por eso hemos decidido hackearlo un poco y liberar toda su potencia.

Visión general

sonoff_wifi_wireless_smart_switch.jpg

Atención No manipule el SONOFF mientras esté conectado a las líneas de 110/240V AC.

El SONOFF contiene un relé, un chip WiFi ESP8266 y los circuitos necesarios para alimentarlo con la línea de CA de una toma de corriente. Además, viene en un bonito paquete que le da un aspecto más profesional que el de un proyecto casero de bricolaje medio.

Requisitos

Configurar

  1. Desmontar el dispositivo SONOFF, esto es para acceder a la SONOFF TTL pinout, que vamos a necesitar para programar el ESP8266 a bordo. Usted tendrá que soldar cuatro pines, estos se muestran en la siguiente imagen.
  2. Conecta los pines UARTbee a los pines SONOFF, siguiendo este esquema:
SONOFF-PINOUT.jpg
UARTbee SONOFF
VC CVCC
TX RX
RX TX
GND GND

Vaya al IDE de Arduino, haga clic en Archivos -> Preferencias e introduzca esta URL para poder acceder a las librerías de ESP8266 para Arduino:

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

en el campo URLs adicionales del Gestor de Pizarras. Este campo admite varias URL, separándolas con comas, por si ya tienes otras URL escritas.

  1. Abra el Gestor de Placas desde el menú Herramientas -> Placas e instale la plataforma ESP8266. Seleccione su placa ESP8266 en el menú Herramientas > Placa después de la instalación.
  2. Descargue la biblioteca UbidotsESPMQTT aquí.
  3. Ahora, haga clic en Sketch -> Incluir biblioteca -> Añadir biblioteca .ZIP.
  4. Seleccione el archivo .ZIP de UbidotsESPMQTT y haga clic en "Aceptar" o "Elegir".
  5. Cierra el IDE de Arduino y ábrelo de nuevo.

Crear una variable Ubidots

  1. Cuenta Ubidots.
  2. Vaya a Fuentes y haga clic en el símbolo naranja más.
  3. Establezca el nombre de la fuente de datos y compruebe la etiqueta
ezgif.com-vídeo-a-gif (2).gif

4. Crea una nueva variable para el relé y comprueba la etiqueta

ezgif.com-vídeo-a-gif (3).gif

Crear un widget de botón

Ahora, para controlar el dispositivo SONOFF, necesitarás crear un widget de botón en tu cuenta de Ubidots. Este widget establecerá la variable RELAY en "1" o "0":

  1. Vaya a Dashboard y haz clic en el icono naranja del signo más.
  2. Haga clic en Control -> Cambiar yseleccione la Fuente de datos y la Variable a controlar creadas anteriormente.
ezgif.com-vídeo-a-gif (4).gif

Codificación de su SONOFF

Aquí está el código que enciende/apaga el dispositivo SONOFF. Para utilizar este código no olvides cambiar el TOKEN con tu cuenta de Ubidots token. Cambia WIFISSID y PASSWORD con tus credenciales de red.

Para cargar el código en el SONOFF necesitarás:

  1. Conecta la UARTbee al USB de tu PC.
  2. Pulse el botón de SONOFF y desconecte el USB al mismo tiempo.
  3. Sin dejar de pulsar el botón, conecte de nuevo el USB.

Estos pasos sirven para poner el SONOFF en modo programación.

sonoff-connect.gif

Cuando estés listo, carga el código desde el IDE de Arduino:

/****************************************
 * Include Libraries
 ****************************************/
#include "UbidotsESPMQTT.h"

/****************************************
 * Define Constants
 ****************************************/
#define TOKEN "..." // Your Ubidots TOKEN
#define WIFINAME "..." //Your SSID
#define WIFIPASS "..." // Your Wifi Pass
#define MQTTCLIENTNAME "..." // Your MQTT Client Name, it must be unique so we recommend to choose a random ASCCI name

#define RELAY 12
#define LED 13

Ubidots client(TOKEN, MQTTCLIENTNAME);

/****************************************
 * Auxiliar Functions
 ****************************************/

void callback(char* topic, byte* payload, unsigned int length) {
  Serial.print("Message arrived [");
  Serial.print(topic);
  Serial.print("] ");
  for (int i=0;i<length;i++) {
    Serial.print((char)payload[i]);
  }
  Serial.println();

  if ((char)payload[0] == '1') {
      digitalWrite(RELAY, HIGH); //On relay
      digitalWrite(LED, LOW); //On led
  }
  if ((char)payload[0] == '0') {
      digitalWrite(RELAY, LOW); //Off relay
      digitalWrite(LED, HIGH); //Off led
  }
}

/****************************************
 * Main Functions
 ****************************************/

void setup() {
  // put your setup code here, to run once:
  Serial.begin(115200);
  client.wifiConnection(WIFINAME, WIFIPASS);
  pinMode(RELAY, OUTPUT);
  pinMode(LED, OUTPUT);
  digitalWrite(LED, HIGH);
  client.begin(callback);
  client.ubidotsSubscribe("relay","sonoff"); //Insert the dataSource and Variable's Labels
  }

void loop() {
  // put your main code here, to run repeatedly:
  if(!client.connected()){
      client.reconnect();
      Serial.println(RELAY);
      client.ubidotsSubscribe("relay","sonoff"); //Insert the dataSource and Variable's Labels
      }
  client.loop();
  }

Conecta tu Smart Switch y empieza a controlar cosas

Ahora es el momento de hacer que las cosas sean "inteligentes" añadiéndoles su SONOFF; controle sus luces, abra o cierre su garaje, etc.

Dando un paso más...

Ubidots es un servicio en la nube que permite a miles de ingenieros de todo el mundo crear proyectos IoT, tanto en el ámbito educativo como en el empresarial. Para saber cómo Ubidots puede ayudar a su empresa, consulte nuestras características o déjenos un mensaje.