Control de iluminación con NodeMcu y Ubidots

María Hernández
· 4 minutos de lectura
Enviar por correo electrónico

¿Cuántas veces has dejado las luces de casa encendidas sin querer? Soluciona este problema rápidamente con un sistema automático de sensor de luz que se apaga (y enciende) según la cantidad de luz del ambiente.

Este sistema funciona con un sensor de luz que detecta la cantidad y la claridad de la luz natural. Si el sensor detecta luz natural, apaga la luz de la casa y sube las persianas; si detecta ausencia de luz, enciende la luz y baja las persianas. Además, con Ubidots , puedes encender o apagar una luz adicional cuando quieras.

Es muy sencillo de hacer y lo más importante, ayuda a ahorrar energía.

Descripción general

Esta publicación explica cómo usar NodeMcu con Ubidots . NodeMcu es un dispositivo de Internet de las Cosas ( IoT ) con GPIO, PWM, IIC, 1-Wire y ADC, todo en uno, y cuenta con conexión Wi-Fi. Es fácil de usar y solo necesitas el IDE de Arduino para programarlo.

Requisitos

Configuración

  1. Primero, conecte el NodeMcu a su protector base y luego conecte los componentes de la siguiente manera:

El resultado final:

  1. Vaya al IDE de Arduino, haga clic en Archivos -> Preferencias e introduzca la URL a continuación en el campo "URL adicionales del administrador de placas". Puede agregar varias URL separándolas con comas.
http://arduino.esp8266.com/stable/package_esp8266com_index.json

Abra el "Administrador de Placas" desde Herramientas -> Menú Placa e instale la plataforma esp8266. No olvide seleccionar su placa NodeMCU 1.0 en el menú después de la instalación.

2. Descarga la biblioteca ESPMQTT Ubidots si aún no lo has hecho. Ahora, haz clic en Sketch –> Incluir biblioteca –> Agregar biblioteca .ZIP.

3. Seleccione el archivo .ZIP de Ubidots ESPMQTT y luego haga clic en "Aceptar" o "Seleccionar" para todas las bibliotecas. Si no puede agregar la biblioteca, inténtelo manualmente: descomprima el archivo rar/zip descargado y copie la carpeta de la biblioteca a la ruta C:\Usuarios\ ubidots \Documentos\Arduino\bibliotecas

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

Configuración de Ubidots

  1. Agregue una nueva fuente de datos llamada “manual” y una nueva variable llamada “extra_light” (como se ve a continuación).

2. Verifique que el nombre de la fuente de datos y la variable coincida con sus etiquetas API. Esto es importante porque nuestra variable se suscribirá a través de la etiqueta API y permite la comunicación entre Ubidots y NodeMcu. Después de verificar las etiquetas de la fuente de datos y la variable, puede editar su nombre con un solo clic.

3. Crea el interruptor que te permite encender o apagar la luz. Para ello, ve al Dashboard y, en la esquina superior derecha de la página, haz clic en Agregar Widget . Selecciona Control -> Interruptor -> Manual (fuente de datos) -> Luz (variable) -> Finalizar.

Programa el ESP8266 NodeMcu

Una vez que todo esté conectado correctamente, iremos al IDE y escribiremos el siguiente código:

/**************************************** * Incluir bibliotecas ****************************************/ #include "UbidotsESPMQTT.h" #include<Servo.h> /**************************************** * Definir Constantes *******************************************/ #define TOKEN "...." // Tu TOKEN Ubidots #define WIFINAME "...." //Tu SSID #define WIFIPASS "...." // Tu Wifi Pass #define MQTTCLIENTNAME "..." // Tu nombre de cliente MQTT, debe ser único por lo que recomendamos elegir un nombre ASCCI aleatorio Servo myservo; int sensorPin = A0; int ledPin = D5; int relayPin = D3; int state; int lightState; Ubidots client(TOKEN, MQTTCLIENTNAME); /**************************************** * Funciones Auxiliares *******************************************/ void callback(char* topic, byte* payload, unsigned int length) { Serial.print("Mensaje llegado ["); Serial.print(topic); Serial.print("] "); para (int i=0;i <length;i++) { Serial.print((char)payload[i]); } Serial.println(); if ((char)payload[0]=='1'){ digitalWrite(relayPin, HIGH); } else if ((char)payload[0]=='0'){ digitalWrite(relayPin, LOW); } } /**************************************** * Main Functions ****************************************/ void setup() { // put your setup code here, to run once: Serial.begin(115200); client.wifiConnection(WIFINAME, WIFIPASS); client.begin(callback); myservo.attach(D8); pinMode(ledPin, OUTPUT); pinMode(relayPin, OUTPUT); client.ubidotsSubscribe("manual", "extra_light"); //Insertar la fuente de datos y las etiquetas de las variables } state = analogRead(sensorPin); lightState = digitalRead(ledPin); if (state <= 50) { digitalWrite(ledPin, HIGH); client.add("light", lightState); myservo.write(180); client.add("blind", 0);ubidotsPublish("Control"); Serial.println("Noche - Luz ENCENDIDA, Persianas bajadas."); } else { digitalWrite(ledPin, LOW); client.add("light", lightState); myservo.write(0); client.add("blind", 1);ubidotsPublish("Control"); Serial.println("Día - Luz apagada, persianas subidas."); } cliente.add("luminosidad", estado); //Inserte la variable Etiquetas y el valor a enviarubidotsPublish("Control"); cliente.loop(); }

Resultados

Después de actualizar el código, vaya a Ubidots y actualice la página. Verá el nuevo control creado.

Si quieres comprobar el estado de las persianas o la luz, puedes configurar tu dashboard a tu gusto. Si no sabes cómo, consulta este tutorial .

Acabamos de mostrarte cómo diseñar un control de iluminación basado en el Internet de las cosas, lo que demuestra cómo se pueden hacer cosas aparentemente complejas muy fácilmente con las herramientas adecuadas.

Ahora es el momento de crear un dashboard para controlar y gestionar tus luces. Para saber más sobre Ubidots , consulta estos videotutoriales y regístrate gratis hoy mismo.