Control de iluminación con NodeMcu y Ubidots
¿Cuántas veces has dejado accidentalmente las luces de tu casa encendidas? Resuelva este problema rápidamente con un sistema de sensor de luz automático que puede apagarse (y encenderse) dependiendo de la cantidad de luz en un ambiente.
Este sistema funciona con un sensor de luz que se encargará de detectar la cantidad y claridad de la luz del día. Si el sensor detecta luz del día, apagará la luz de su casa y subirá las persianas; Si el sensor detecta que no hay luz, encenderá la luz y bajará las persianas. Además, usando Ubidots puedes encender o apagar una luz extra 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 placa todo en uno GPIO, PWM, IIC, 1-Wire y ADC, y tiene conexión Wi-Fi. Es fácil de usar y sólo necesitas el IDE de Arduino para programar el dispositivo.
Requisitos
- NodeMcu versión 1.0
- Escudo base Grove para NodeMcu
- Relevo de Grove
- Sensor de luz de arboleda
- LED blanco arboleda
- servomotor
- Biblioteca Ubidots ESPMQTT
- Cuenta Ubidots
Configuración
- Primero, conecte el NodeMcu a su escudo base y luego conecte los componentes de la siguiente manera:
El resultado final:
- Vaya al IDE de Arduino, haga clic en Archivos -> Preferencias e ingrese la URL a continuación en el campo "URL adicionales del Administrador de placa". Puede agregar varias URL, separándolas con comas.
http://arduino.esp8266.com/stable/package_esp8266com_index.json
Abra "Administrador de tableros" desde Herramientas -> menú Tablero e instale la plataforma esp8266. No olvide seleccionar su placa NodeMCU 1.0 en el menú después de la instalación.
2. Descargue la biblioteca Ubidots si aún no lo ha hecho. Ahora, haga clic en Sketch -> Incluir biblioteca -> Agregar biblioteca .ZIP
3. Seleccione el archivo .ZIP de Ubidots ESPMQTT y luego “Aceptar” o “Elegir” para todas las bibliotecas. Si no puede agregar la biblioteca, intente manualmente: descomprima el rar/zip descargado y copie la carpeta de la biblioteca a la ruta C:Users ubidots DocumentsArduinolibraries
4. Cierre el IDE de Arduino y ábralo nuevamente.
Configurando Ubidots
- 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 sea el mismo que 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. Una vez que haya verificado las etiquetas Fuente de datos y Variable, puede editar su nombre con un solo clic.
3. Crea el interruptor que te permite encender o apagar la luz. Para hacer esto, vaya al Dashboard y, en la parte superior derecha de la página, haga clic en Agregar widget . Seleccione Control -> Interruptor -> manual (fuente de datos) -> luz (variable) -> finalizar.
Programar el ESP8266 NodeMcu
Una vez todo conectado correctamente, iremos al IDE y escribiremos el siguiente código:
/**************************************** * Incluir Bibliotecas ****** ********************************/ #include " Ubidots ESPMQTT.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; pin del sensor int = A0; intledPin = D5; int reléPin = D3; estado entero; int estadoluz; Cliente Ubidots (TOKEN, MQTTCLIENTNAME); /**************************************** * Funciones auxiliares ****** ********************************/ devolución de llamada nula (tema char*, carga útil byte*, longitud int sin signo) { Serial.print("El mensaje llegó ["); Serial.print(tema); Serie.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.ubidots Suscribirse("manual", "extra_light"); //Inserte la fuente de datos y las etiquetas de la variable } state = analogRead(sensorPin); estadoluz = digitalRead(ledPin); if (estado <= 50) { digitalWrite(ledPin, ALTO); client.add("luz", estadoluz); myservo.write(180); cliente.add("ciego", 0); cliente. ubidots Publicar("Control"); Serial.println("Noche: luz encendida, persianas bajadas."); } más { digitalWrite(ledPin, LOW); client.add("luz", estadoluz); myservo.write(0); cliente.add("ciego", 1); cliente. ubidots Publicar("Control"); Serial.println("Día - Luz apagada, persianas subidas."); } client.add("luminosidad", estado); //Inserta tus etiquetas variables y el valor que se enviará al cliente. ubidots Publicar("Control"); cliente.loop(); }
Resultados
Después de actualizar su código, vaya a Ubidots y actualice la página. Verá creado el nuevo “control” .
Si quieres comprobar el estado de las persianas o la luz puedes construir tu dashboard como desees. Si no sabes cómo consultar este tutorial .
Acabamos de mostrarle cómo diseñar un control de iluminación basado en el Internet de las cosas, lo que demuestra cómo cosas aparentemente complejas se pueden hacer muy fácilmente con las herramientas adecuadas.
Ahora es el momento de crear un dashboard para controlar y administrar sus luces hoy. Para obtener más información sobre Ubidots , consulte estos tutoriales en vídeo y regístrese gratis hoy.