Luz nocturna con Arduino

Luz nocturna con Arduino

Pequeño proyecto de electrónica para crear un sistema de luz nocturna con Arduino, un sensor de movimiento, un relay y una resistencia LDR, te mostramos el paso a paso para crearla, esquemas y código fuente de programa Arduino.

¿A quién no le ha pasado que va al baño en la noche y no encuentra el camino?

Debido a este me puse a realizar un pequeño proyecto de electrónica que resolviera esta situación.

Lo primero que pensé fue por supuesto recurrir a nuestra amiga Arduino, así que el resto fue fácil.


Suscríbete!

Suscríbete a nuestra lista de correo y recíbe los últimos contenidos directamente en tu bandeja de correo electrónico, puedes elegir únicamente de que categoria del blog quieres recibir contenido.

Suscríbeme

En este pequeño articulo vamos a ver cómo crear luz nocturna con Arduino y un par de componentes más.

Lo que vamos a lograr hoy es que uno de nuestros focos se encienda automáticamente cuando te pares por la noche.

Por cierto hace poco hice un post sobre cómo hacer video en streaming con el ESP32Cam por si te interesa.

¿Cómo lo haremos? ¡Fácil!

Veamos lo que necesitaremos:

  • Placa Arduino uno
  • PIR
  • LDR
  • Resistencia de 10K
  • Relay
  • Extensión o cable de luz
  • Un foco

Todo partirá de la placa Arduino a la cual conectaremos los dos sensores: el PIR y el LDR.

Con esto seremos capaces de detectar movimiento y presencia de luz, es decir, si es de noche o de día.

Nuestro foco inteligente solo se encenderá si detecta movimiento y es de noche.

Si solo detecta movimiento pero es de día (detecta luz el LDR) entonces no lo hará.

Controlaremos también el relay lo que permitirá encender o no el foco, el resto es programación con el Arduino

Veamos cómo lucirá todo al final, un poco feo pero al menos en lo que lo hago presentable para instalarlo donde lo necesito.

El diagrama de lo que haremos es el siguiente:

diagrama de luz nocturna con arduino

Y el código fuente de nuestro Arduino es el siguiente:

/*
 ***
 *** Programa para encender un foco automaticamente en la noche cuando detecte movimiento
 ***
*/
 
int relay = 8;
volatile byte statusRele = 0;

int PIR = 2;

int LDRPin = A0;

volatile int LDRReading;

int LDRThreshold = 1000;

volatile long ultimoMovimiento = 0;  
long tiempoEspera = 20000;

void setup() {
  
  pinMode(relay, OUTPUT);
  digitalWrite(relay, HIGH);
  
  pinMode(PIR, INPUT);
  
  attachInterrupt(digitalPinToInterrupt(PIR), detectarMovimiento, RISING);
  
  Serial.begin(9600);
}

void loop() {
  
  //tiempo - tiempoUltimoMov > 10 seg ) && FocoEncendido
  if( ( ( millis() - ultimoMovimiento ) > tiempoEspera ) && statusRele == 1 ){
    
    digitalWrite(relay, HIGH); // Apagamos
    
    statusRele = 0;
    
    Serial.println("Apagando, 10 segundos sin movimiento");
    
  }
  
  delay(50);
  
}

void detectarMovimiento() {
  
  Serial.println("Movimiento detectado");
  
  LDRReading = analogRead(LDRPin);
  
  Serial.println(LDRReading);
  
  if(LDRReading > LDRThreshold){ // 900 > 1000 SI SI ENTONCES ENCENDEMOS
    
    if(statusRele == 0){
      
      digitalWrite(relay, LOW); // Encendemos

      statusRele = 1;  
      
    }
    
    Serial.println("Encendiendo, no hay luz");
    
  }

  ultimoMovimiento = millis();
  
}

A destacar que debemos registrar una interrupción para el PIR y cuando suceda llamar a la función detectarMovimiento.

Calibra tu LDRThreshold  para detectar el nivel de oscuridad en la ubicación donde pondrás el circuito.

En nuestro código el foco se mantiene encendido 20 segundos después de detectar movimiento, puedes ajustarlo a tu gusto.

Al final tendremos algo como esto en funcionamiento:

Este proyecto ha sido corto pero bastante interesante y sobre todo práctico para el hogar, la verdad es que me ha servido bastante.

Si este proyecto sobre luz nocturna con Arduino te ha sido de utilidad no olvides compartirlo en tus redes sociales y dejarnos un comentario en la sección de abajo si tienes cualquier comentario respecto con este tema, será un placer ayudarte.

¡Hasta luego!

Clic para valorar esta información
[Total: 2 Promedio: 5]