Manufactura industrial
Internet industrial de las cosas | Materiales industriales | Mantenimiento y reparación de equipos | Programación industrial |
home  MfgRobots >> Manufactura industrial >  >> Manufacturing Technology >> Proceso de manufactura

Despertador inteligente activado por movimiento: Levántate de una vez

Componentes y suministros

Arduino Nano Every×1Microcontrolador compacto y de bajo consumo, ideal para este proyecto. Cualquier variante Arduino funciona.
Módulo reloj DS3231×1
Sensor de movimiento PIR HC-SR501×1Sensor de movimiento que dispara al detectar movimiento frente a él.
Zumbador (buzzer)×1

Aplicaciones y servicios online

Sobre este proyecto

Levantarse de la cama puede ser un verdadero desafío. Este despertador activado por movimiento asegura que te mantengas despierto detectando movimiento después de que das a "posponer". Si vuelves a la cama, la alarma se reinicia, obligándote a permanecer despierto un período determinado antes de que la alarma se detenga.

Montaje

Reúne los siguientes componentes:

Despertador inteligente activado por movimiento: Levántate de una vez

Cablea los componentes como sigue:

Despertador inteligente activado por movimiento: Levántate de una vez

Código

Descarga la librería DS3231 en formato ZIP desde la sección Código y añádela al Arduino IDE mediante Sketch > Include Library > Add .ZIP Library.

Sube el siguiente sketch. Tras la primera subida, comenta la línea que establece fecha y hora para que el RTC mantenga la hora correcta en reinicios.

#include <Wire.h> 
#include <DS3231.h> 
DS3231 clock; 
RTCDateTime dt; 
int button = 9; 
int pirPin = 7; 
int pirValue; 

int set_hour = 7; 
int set_minute = 0; 

void setup() { 
  clock.begin(); 
  pinMode(button, INPUT_PULLUP); 
  pinMode(LED_BUILTIN, OUTPUT); 
  // clock.setDateTime(__DATE__, __TIME__); // comentar tras primera subida 
  pinMode(pirPin, INPUT); 
} 

void alarm(int minute){ 
  bool button_pressed = false; 
  bool awake = false; 
  bool movement = false; 
  
  while(!button_pressed){ 
    for(int i = 0; i < 4; i++){ 
      tone(11, 523, 100); 
      delay(100); 
      tone(11, 784, 50); 
      for(int i = 0; i < 20; i++){ 
        if(digitalRead(button) == LOW){ 
          button_pressed = true; 
          awake = true; 
          dt = clock.getDateTime(); 
          minute = dt.minute; 
        } 
        delay(65); 
      } 
    } 
  } 
  
  dt = clock.getDateTime(); 
  minute = dt.minute; 
  
  while(awake){ 
    movement = false; 
    dt = clock.getDateTime(); 
    for(int i = 0; i < 30; i++){ 
      if(digitalRead(pirPin)){ movement = true; } 
    } 
    digitalWrite(LED_BUILTIN, movement); 
    
    if(!pirValue){ 
      delay(5000); 
      for(int i = 0; i < 40; i++){ 
        if(digitalRead(pirPin)){ movement = true; } 
      } 
      if(!movement){ 
        alarm(minute); // si no hay movimiento mucho tiempo, la alarma se reinicia 
      } 
    } 
    
    if(abs(dt.minute - minute) >= 1){ 
      tone(11, 698, 50); 
      delay(100); 
      tone(11, 698, 50); 
      digitalWrite(LED_BUILTIN, 0); 
      awake = false; 
    } 
    delay(100); 
  } 
} 

void loop() { 
  dt = clock.getDateTime(); 
  if(set_minute == dt.minute && set_hour == dt.hour){ 
    alarm(set_minute); 
  } 
  delay(10000); 
}

Ajuste del sensor

Despertador inteligente activado por movimiento: Levántate de una vez

Configura el HC-SR501 en modo de disparo repetible colocando el jumper de selección de disparo según corresponda.

Despertador inteligente activado por movimiento: Levántate de una vez

Afinar el retardo y la sensibilidad. La máxima sensibilidad con retardo mínimo funciona mejor: asegura que el sensor se mantenga activo el tiempo suficiente para detectarte, pero no tanto que ignore un regreso a la cama.

Despertador inteligente activado por movimiento: Levántate de una vez

Montaje compacto

Tras probar el prototipo en protoboard, suelda los componentes directamente al Arduino Nano Every para crear una alarma de bolsillo.

Despertador inteligente activado por movimiento: Levántate de una vez

Construye una carcasa ligera de madera balsa de 3 mm (dimensiones 55 mm × 35 mm × 40 mm). La carcasa incluye una abertura grande para el sensor PIR, una ranura para el cable micro-USB y una abertura para el zumbador.

Despertador inteligente activado por movimiento: Levántate de una vez
Despertador inteligente activado por movimiento: Levántate de una vez
Despertador inteligente activado por movimiento: Levántate de una vez
Despertador inteligente activado por movimiento: Levántate de una vez

Producto final:

Despertador inteligente activado por movimiento: Levántate de una vez
Despertador inteligente activado por movimiento: Levántate de una vez
Despertador inteligente activado por movimiento: Levántate de una vez

Código

Código Arduino del Despertador

#include <Wire.h> 
#include <DS3231.h> 
DS3231 clock; 
RTCDateTime dt; 
int button = 9; 
int pirPin = 7; 
int pirValue; 

int set_hour = 7; 
int set_minute = 0; 

void setup() { 
  clock.begin(); 
  pinMode(button, INPUT_PULLUP); 
  pinMode(LED_BUILTIN, OUTPUT); 
  // clock.setDateTime(__DATE__, __TIME__); // ¡¡DESPUÉS DE LA PRIMERA SUBIDA DEBES COMENTAR ESTA LÍNEA. SINO OBTENDRÁS HORA INCORRECTA!! 
  pinMode(pirPin, INPUT); 
} 

void alarm(int minute){ 
  bool button_pressed = false; 
  bool awake = false; 
  bool movement = false; 
  
  while(!button_pressed){ 
    for(int i = 0; i < 4; i++){ 
      tone(11, 523, 100); 
      delay(100); 
      tone(11, 784, 50); 
      for(int i = 0; i < 20; i++){ 
        if(digitalRead(button) == LOW){ 
          button_pressed = true; 
          awake = true; 
          dt = clock.getDateTime(); 
          minute = dt.minute; 
        } 
        delay(65); 
      } 
    } 
  } 
  
  dt = clock.getDateTime(); 
  minute = dt.minute; 
  
  while(awake){ 
    movement = false; 
    dt = clock.getDateTime(); 
    for(int i = 0; i < 30; i++){ 
      if(digitalRead(pirPin)){ movement = true; } 
    } 
    digitalWrite(LED_BUILTIN, movement); 
    
    if(!pirValue){ 
      delay(5000); 
      for(int i = 0; i < 40; i++){ 
        if(digitalRead(pirPin)){ movement = true; } 
      } 
      if(!movement){ 
        alarm(minute); 
      } 
    } 
    
    if(abs(dt.minute - minute) >= 1){ 
      tone(11, 698, 50); 
      delay(100); 
      tone(11, 698, 50); 
      digitalWrite(LED_BUILTIN, 0); 
      awake = false; 
    } 
    delay(100); 
  } 
} 

void loop() { 
  dt = clock.getDateTime(); 
  if(set_minute == dt.minute && set_hour == dt.hour){ 
    alarm(set_minute); 
  } 
  delay(10000); 
}

Librería Reloj (DS3231)

Archivo ZIP para la librería DS3231. Descárgalo y añádelo a tus librerías vía Arduino → Sketch → Include Library → Add .ZIP Library.

Esquemáticos

Conecta 5V del Arduino al rail positivo y GND al rail negativo en la protoboard.

Despertador inteligente activado por movimiento: Levántate de una vez Despertador inteligente activado por movimiento: Levántate de una vez

Proceso de manufactura

  1. Construye un reloj despertador fiable con RTC DS1302 y Arduino UNO
  2. Factores Esenciales para Operaciones de Punzonado Exitosas y Seguras
  3. Factores Críticos que Influyen en el Rendimiento del Rectificado Superficial
  4. Tornos CNC: Su Herramienta de Precisión Todo en Uno
  5. Centros de Mecanizado Horizontal Esenciales para Fabricación de Alta Precisión
  6. Elección del alimentador de barras cortas ideal para su torno
  7. Principales ventajas de las máquinas de mandrinar para mecanizado de precisión
  8. Impacto de las Bombas de Agua Directas en los Sistemas de Circulación
  9. Fresas de Plaquita (Insert End Mills): Guía Completa para Eficiencia y Rendimiento
  10. Inicie su viaje Industry 4.0: Domine IO-Link en PLCs con formación de SICK
  11. La revolucionaria iniciativa de coche compartido de NEVS en Trollhättan: una nueva era de movilidad