Hace ya un tiempo, venía pensando en una forma de alumbrar las escaleras en la noche para cuando bajas a la cocina por agua o a saquear el refrigerador.

si puede ser tan fácil como tocar un enchufe y listo o en mi caso decirle a google home que encienda la luz, peroooo …… podemos programar.

Materiales

  • Arduino (use arduino nano)
  • leds (para el tutorial use 4)
  • cables utp/estañado
  • sensor de movimiento pir hc-sr501 (yo use 2)

Conexiones y programación

El sensor de movimiento pir funciona de la siguiente manera

sensor pir

Sensor de infrarrojos pasivo: PIR puede detectar objetos detectando la emisión de nivel de radiación de rayos infrarrojos de la fuente. La dependencia de este sensor es en el nivel de radiación infrarroja la emisión más fuerte irradiación del cuerpo más serían capaces de detectar un objeto fácilmente. Como el cuerpo humano irradia energía infrarroja tiene unos niveles diferentes. Puede conseguir este sensor fácilmente de la tienda electrónica.

Hay muchos proyectos sobre estos sensores como este proyecto que use la imagen y la buena descripción del sensor.

Trae 3 pines de conexión, y dos controles para ajustar la sensibilidad, gnd o tierra, vcc es la corriente y output que es la que vamos a utilizar, nota, quiten la esfera plastica para que puedan ver el orden de estos pines, hay veces que el output puede ir en la orilla.

La ventaja del arduino uno y el nano, es que los pines son los mimos solo no tenemos el pin 13, así que este código y explicación aplica en cualquiera de los dos.

Vamos a conectar los sensores output en el pin 2 y el pin 11, estos pines son digitales.

luego vamos a conectar 4 led en los puertos 7,8,9 y 10 (pata positiva) como se ve en la imagen

conexion de leds en arduino

Con estas conexiones cada vez que detecte movimiento nos va a encender los led, pero la problemática era, ¿en que momento quiero que se encienda ?

la solución fue sencilla agregar un sensor de luz, cuando tenga luz las escaleras no se enciende ningún led pero si esta todo a oscuras estos se encienden al detectar una persona.

entre mis cosas tenía el siguiente sensor que compre para una raspberry pi

▷ Ldr En Placa. | PatagoniaTec

un sensor ldr pero que envia la señal en digital a 3.3v para las raspberry, si no lo tienen pueden usar el sensor normal y colocarlo en una entrada analogica (A0).

si usamos la salida A0 será hacia análogo, y D0 en digital, yo use en digital para este código quedaría algo así

si desean verlo un poco más de cerca les recomiendo entrar a esta página y cargar el archivo que les pongo a continuación:

Código

#define pir1 2
#define pir2 11
#define luz 6
#define led1 7
#define led2 8
#define led3 9
#define led4 10
void setup() {
  // put your setup code here, to run once:
  pinMode(led1, OUTPUT);
  pinMode(led2, OUTPUT);
  pinMode(led3, OUTPUT);
  pinMode(led4, OUTPUT);
  pinMode(luz, INPUT);
  pinMode(pir1, INPUT);
  pinMode(pir2, INPUT);
  Serial.begin(9600);

}

void loop() {
  // put your main code here, to run repeatedly:
  int l = digitalRead(luz);
  Serial.println(l);
  if(l == HIGH){
    if(digitalRead(pir1) == HIGH){
      digitalWrite(led1, HIGH);
      delay(300);
      digitalWrite(led2, HIGH);
      delay(300);
      digitalWrite(led3, HIGH);
      delay(300);
      digitalWrite(led4, HIGH);
      delay(50000);
    }else{
      digitalWrite(led4, LOW);
      delay(300);
      digitalWrite(led3, LOW);
      delay(300);
      digitalWrite(led2, LOW);
      delay(300);
      digitalWrite(led1, LOW);
      
    }
    if(digitalRead(pir2) == HIGH){
      digitalWrite(led4, HIGH);
      delay(300);
      digitalWrite(led3, HIGH);
      delay(300);
      digitalWrite(led2, HIGH);
      delay(300);
      digitalWrite(led1, HIGH);
      delay(50000);
    }else{
      digitalWrite(led1, LOW);
      delay(300);
      digitalWrite(led2, LOW);
      delay(300);
      digitalWrite(led3, LOW);
      delay(300);
      digitalWrite(led4, LOW);
    }
    
  }
  
  delay(1000);
  

}

Así se ve en acción, ya queda de ustedes poner canaletas y cambiar utp por cables más flexibles o mejorarlo si hacen esto no duden en etiquetarme en twitter

por Cesar Flores

Programador de tiempo completo, Gamer de medio tiempo y fotógrafo ocasionalmente, me gusta el front-end y mi framework favorito es angular aunque no por eso le hago el feo a un nuevo lenguaje.

Deja un comentario

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.