Despertador inteligente activado por movimiento: Levántate de una vez
Componentes y suministros
| Arduino Nano Every | ×1 | Microcontrolador compacto y de bajo consumo, ideal para este proyecto. Cualquier variante Arduino funciona. |
| Módulo reloj DS3231 | ×1 | |
| Sensor de movimiento PIR HC-SR501 | ×1 | Sensor de movimiento que dispara al detectar movimiento frente a él. |
| Zumbador (buzzer) | ×1 |
Aplicaciones y servicios online
- Arduino IDE
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:
- Módulo reloj en tiempo real DS3231
- Sensor de movimiento PIR HC-SR501
- Zumbador piezoeléctrico 5V
- Pulsador momentáneo
- Arduino Nano Every (o cualquier placa compatible)

Cablea los componentes como sigue:
- Pin negativo del zumbador a GND
- Pin positivo del zumbador a D11
- Pin de tierra del pulsador a GND
- Pin de señal del pulsador a D9
- HC-SR501 VCC a 5V
- HC-SR501 salida a D7
- HC-SR501 GND a GND
- DS3231 GND a GND
- DS3231 VCC a 5V
- DS3231 SDA a SDA (pin A4 en Nano)
- DS3231 SCL a SCL (pin A5 en Nano)

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

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

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.

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

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.




Producto final:



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