En la entrada de hoy, os enseñaremos a automatiza cualquier tira LED para su encendido y apagado con Arduino, y sin necesidad de conexión a Internet. De modo que la tira LED se encienda sola cuando detecta que hay poca luz en la habitación o se ha hecho de noche, y se apague automáticamente cuando haya suficiente luz.
Para ello, hemos subido un vídeo explicando en detalle cómo hacer este proyecto, para que podáis hacerlo vosotros mismos y darle un toque de luz a vuestras habitaciones.
NOTA: En el vídeo olvido comentar que es necesario utilizar 3 transistores Mosfet de tipo NPN para evitar posibles problemas en el circuito, ya que el máximo que soporta Arduino en sus salidas son 40mA, y según qué tira LED se use, es muy probable sobrepasar este límite, pudiendo así dañar algún componente.
Componentes necesarios
Para este proyecto necesitaremos los siguientes componentes:
- Arduino. Cualquier placa Arduino servirá. https://amzn.to/2Xi9ZYR
- Placa protoboard o de pruebas. Para montar el circuito. También podéis usar una placa de baquelita y soldar el circuito directamente a ella. https://amzn.to/2YV0eAy
- Una tira LED, que funcione a 5V. https://amzn.to/39fkmzw
- 4 resistencias de 330 Ohm o similar. https://amzn.to/2XxMNGn
- 1 fotorresistencia. https://amzn.to/3zgrEh0
- Algunos cables. https://amzn.to/3AlGYdA
- 3 transistores NPN Mosfet
- (OPCIONAL) Placa baquelita para soldar el circuito. https://amzn.to/3hE66oz
Circuito
El circuito usado es el siguiente. Si tenéis dudas sobre el mismo, os recomendamos ver el vídeo de Youtube, donde os explicamos paso a paso cómo montarlo.
Código
El código que usaremos en nuestro Arduino para este proyecto es el siguiente:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 | int green = 4; int red = 7; int blue = 8; int sensorPin = A3; int ldr = 0; int offset = 3; int prev_ldr = 0; void setup() { Serial.begin(9600); pinMode(green, OUTPUT); pinMode(red, OUTPUT); pinMode(blue, OUTPUT); prev_ldr = analogRead(sensorPin); } void loop() { ldr = analogRead(sensorPin); if(abs(prev_ldr) - abs(ldr) > offset){ if (ldr > 4) { digitalWrite(green, HIGH); digitalWrite(blue, HIGH); digitalWrite(red, HIGH); } else { digitalWrite(green, LOW); digitalWrite(blue, LOW); digitalWrite(red, HIGH); } } prev_ldr = ldr; } |
Como podéis ver, se trata de un código sencillo, aunque a continuación os lo explicamos paso a paso, para que sepáis cómo alterarlo, y así ajustar los colores de la tira LED y el umbral que determina qué nivel de luminosidad es necesario para encender o apagar la tira LED.
1 2 3 4 5 6 7 | int green = 4; int red = 7; int blue = 8; int sensorPin = A3; int ldr = 0; int offset = 3; int prev_ldr = 0; |
El primer fragmento del código es la definición de variables. Aquí definimos los pines que usaremos para cada color (por ejemplo, el color verde, irá en el pin 4 de Arduino), así como la variable donde almacenaremos el valor que detecta la fotorresistencia en cada momento.
1 2 3 4 5 6 7 | void setup() { Serial.begin(9600); pinMode(green, OUTPUT); pinMode(red, OUTPUT); pinMode(blue, OUTPUT); prev_ldr = analogRead(sensorPin); } |
Esta es la función setup, la cual usamos para inicializar cada pin, de modo que los pines donde conectaremos los 3 colores de la tira LED, sean salidas digitales, y el pin donde conectaremos la fotorresistencia, sea un pin analógico de entrada.
1 2 3 | void loop() { ldr = analogRead(sensorPin); |
Por último, tenemos la función loop o bucle, la cual como su nombre indica, se estará ejecutando continuamente. En la primera línea, vemos que almacenamos el valor de luminosidad que capta la fotorresistencia, en una variable llamada ldr.
1 2 3 4 5 6 7 8 9 10 11 12 | if (ldr > 4) { digitalWrite(green, HIGH); digitalWrite(blue, HIGH); digitalWrite(red, HIGH); } else { digitalWrite(green, LOW); digitalWrite(blue, LOW); digitalWrite(red, HIGH); } |
A continuación, nos encontramos con la parte del código que se encarga de controlar cuándo se debe apagar o encender la tira LED y qué umbral queremos usar para activarlo. En este ejemplo, cuando la variable ldr es menor que 4 (valor umbral), los 3 pines digitales usados para iluminar los 3 colores de la tira LED, se pondrán en HIGH, que para la topología de nuestro circuito significará que permanecerán APAGADOS. Por otro lado, cuando ldr sea menor que 4, es decir, haya muy poca luminosidad detectada, se encenderán los pines del color AZUL y VERDE, lo cuál, dará lugar a un color CIAN.
Podréis ajustar estas variables, de modo que se enciendan los colores que prefiráis, poniendo en LOW, los colores que queráis que se enciendan. Por ejemplo, para que la tira LED se ilumine en color AMARILLO, deberéis poner en LOW, los colores AZUL y VERDE.
También deberéis ajustar el umbral que hará que se encienda o se apague la tira LED. En el ejemplo que os damos, el umbral está en 4. Pero vosotros podéis cambiar este número por el que mejor se ajuste a vuestras preferencias. Cuanto menor sea el número, la tira LED se encenderá cuando se detecte menos luz, y viceversa.
1 | if(abs(prev_ldr) - abs(ldr) > offset){ |
Para terminar, al código hemos añadido un condicional if, el cual usamos para controlar que si el valor detectado por la fotorresistencia está continuamente fluctuando por encima y por debajo del umbral que hayamos puesto, la tira LED no se encienda y se apague constantemente, produciendo un molesto efecto de parpadeo o «flickering».
Conclusiones
Como podéis ver, de forma muy sencilla y con muy poco dinero, podemos automatiza cualquier tira LED que tengamos por casa con Arduino . De hecho no necesitaremos comprar un enchufe inteligente y conectarlo con asistentes de voz, los cuales son más caros y requieren estar conectados 100% del tiempo a Internet corriendo un asistente. Además la luz se encenderá automáticamente cuando sea necesario en la habitación. Con la ayuda de un simple Arduino.
Por último, os queremos agradecer que nos leáis y si os ha gustado el vídeo, os agradeceríamos mucho si os suscribierais al canal de Youtube. En él, empezaremos a subir cada semana nuevos proyectos con Arduino, Raspberry pi y multitud de tutoriales y proyecto de programación y electrónica.
Por supuesto, si tenéis cualquier pregunta, no dudéis en dejarnos un comentario aquí o en la caja de comentarios del vídeo de Youtube.