Manufaturação industrial
Internet das coisas industrial | Materiais industriais | Manutenção e reparo de equipamentos | Programação industrial |
home  MfgRobots >> Manufaturação industrial >  >> Manufacturing Technology >> Processo de manufatura

Despertador Inteligente Ativado por Movimento: Acorde de Vez

Componentes e Materiais

Arduino Nano Every ×1
Módulo Relógio DS3231 ×1
Sensor de Movimento PIR HC-SR501 ×1
Buzzer (piezo 5V) ×1

Aplicativos e Serviços Online

Sobre o Projeto

Levantar da cama pode ser um verdadeiro desafio. Este despertador ativado por movimento garante que você permaneça acordado detectando movimento após você apertar "soneca". Se você voltar para a cama, o alarme reinicia, forçando-o a permanecer acordado por um período definido antes que o alarme pare.

Montagem

Reúna os seguintes componentes:

Despertador Inteligente Ativado por Movimento: Acorde de Vez

Faça a fiação conforme abaixo:

Despertador Inteligente Ativado por Movimento: Acorde de Vez

Código

Baixe a biblioteca DS3231 ZIP na seção Código e adicione à Arduino IDE via Sketch > Include Library > Add .ZIP Library.

Carregue o sketch abaixo. Após o primeiro upload, comente a linha que define data e hora para que o RTC mantenha o tempo correto em resets.

#include <Wire.h>
#include <DS3231.h>
DS3231 clock;
RTCDateTime dt;
int button = 9;
int pirPin = 7; // Entrada para HC-SR501
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__); // comente após primeiro upload
  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);
}

Ajuste do Sensor

Despertador Inteligente Ativado por Movimento: Acorde de Vez

Configure o HC-SR501 para modo de gatilho repetível posicionando o jumper de seleção de gatilho adequadamente.

Despertador Inteligente Ativado por Movimento: Acorde de Vez

Ajuste fino do delay e sensibilidade. Sensibilidade máxima com delay mínimo funciona melhor: garante que o sensor permaneça ativo tempo suficiente para detectá-lo, mas não tanto que ignore um retorno à cama.

Despertador Inteligente Ativado por Movimento: Acorde de Vez

Construção Compacta

Após testar o protótipo em protoboard, solde os componentes diretamente no Arduino Nano Every para criar um alarme de tamanho de bolso.

Despertador Inteligente Ativado por Movimento: Acorde de Vez

Construa um gabinete leve em madeira balsa de 3 mm (dimensões 55 mm × 35 mm × 40 mm). O gabinete inclui uma grande abertura para o sensor PIR, um slot para o cabo micro-USB e uma abertura para o buzzer.

Despertador Inteligente Ativado por Movimento: Acorde de Vez
Despertador Inteligente Ativado por Movimento: Acorde de Vez
Despertador Inteligente Ativado por Movimento: Acorde de Vez
Despertador Inteligente Ativado por Movimento: Acorde de Vez

Produto final:

Despertador Inteligente Ativado por Movimento: Acorde de Vez
Despertador Inteligente Ativado por Movimento: Acorde de Vez
Despertador Inteligente Ativado por Movimento: Acorde de Vez

Código

Código do Despertador Arduino

#include <Wire.h>
#include <DS3231.h>
DS3231 clock;
RTCDateTime dt;
int button = 9;
int pirPin = 7; // Entrada para HC-SR501
int pirValue; // Armazena valor lido do PIR
//--------------------------------------
int set_hour = 7;
int set_minute = 0;
//--------------------------------------

void setup() {
  clock.begin();
  pinMode(button, INPUT_PULLUP);
  pinMode(LED_BUILTIN, OUTPUT);
  //clock.setDateTime(__DATE__, __TIME__); // !!APÓS O PRIMEIRO UPLOAD VOCÊ DEVE COMENTAR ESTA LINHA. CASO CONTRÁRIO, VOCÊ TERÁ UM HORÁRIO ERRADO!!
  pinMode(pirPin, INPUT);
}

void alarm(int minute){
  bool button_pressed = false;
  bool awake = false;
  bool movement = false;
  while(!button_pressed){
    // o alarme toca enquanto o botão não for pressionado
    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); // se nenhum movimento detectado por muito tempo, o alarme reinicia }
    }
    if(abs(dt.minute - minute) >= 1){
      // define o período em que você deve ficar na frente do sensor
      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);
}

Biblioteca do Relógio

Arquivo ZIP da biblioteca DS3231. Baixe e adicione às suas bibliotecas via Arduino → Sketch → Include Library → Add .ZIP Library.

Sem preview (apenas download).

Esquemáticos

Conecte 5V no Arduino ao rail positivo e GND ao rail negativo na protoboard.

Despertador Inteligente Ativado por Movimento: Acorde de Vez Despertador Inteligente Ativado por Movimento: Acorde de Vez

Processo de manufatura

  1. Iniciativa Revolucionária de Car Sharing da NEVS em Trollhättan: Nova Era da Mobilidade
  2. Construa um Relógio Despertador Confiável com RTC DS1302 e Arduino UNO
  3. Inicie sua Jornada Indústria 4.0: Domine IO-Link em CLPs com Treinamento SICK
  4. Fatores Essenciais para Operações de Perfuração Bem-Sucedidas e Seguras
  5. Fatores Críticos que Influenciam o Desempenho da Retificação Superficial
  6. Máquinas de Torno CNC: Sua Ferramenta de Precisão Tudo-em-Um
  7. Centros de Usinagem Horizontal Essenciais para Manufatura de Alta Precisão
  8. Escolhendo o Alimentador de Barras Curtas Ideal para Seu Torno
  9. Principais Benefícios das Máquinas de Mandrilar (Boring) para Usinagem de Precisão
  10. Impacto das Bombas de Água Diretas em Sistemas de Circulação