Fabrication industrielle
Internet des objets industriel | Matériaux industriels | Entretien et réparation d'équipement | Programmation industrielle |
home  MfgRobots >> Fabrication industrielle >  >> Manufacturing Technology >> Processus de fabrication

Réveil intelligent à détection de mouvement : Se lever pour de bon

Composants et fournitures

ComposantQuantité
Arduino Nano Every1
Module horloge DS32311
Capteur de mouvement PIR HC-SR5011
Buzzer (piézo 5V)1
Bouton poussoir momentané1

Applications et services en ligne

À propos de ce projet

Se lever du lit peut être un vrai défi. Ce réveil à détection de mouvement vous assure de rester debout en détectant vos mouvements après avoir appuyé sur « snooze ». Si vous retournez au lit, l'alarme se réinitialise, vous forçant à rester éveillé pendant une période définie avant que l'alarme ne s'arrête.

Assemblage

Rassemblez les composants suivants :

Réveil intelligent à détection de mouvement : Se lever pour de bon

Câblez les composants comme suit :

Réveil intelligent à détection de mouvement : Se lever pour de bon

Code

Téléchargez la bibliothèque DS3231 au format ZIP depuis la section Code et ajoutez-la à l'Arduino IDE via Croquis > Inclure une bibliothèque > Ajouter une bibliothèque .ZIP.

Téléversez le sketch ci-dessous. Après le premier téléversement, commentez la ligne qui règle la date et l'heure afin que le RTC conserve l'heure correcte lors des réinitialisations.

#include <Wire.h>
#include <DS3231.h>
DS3231 clock;
RTCDateTime dt;
int button = 9;
int pirPin = 7; // Entrée pour 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__); // commenter après le premier téléversement
  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);
}

Réglage du capteur

Réveil intelligent à détection de mouvement : Se lever pour de bon

Mettez le HC-SR501 en mode déclenchement répétable en positionnant le jumper de sélection de déclenchement en conséquence.

Réveil intelligent à détection de mouvement : Se lever pour de bon

Ajustez finement le délai et la sensibilité. Une sensibilité maximale avec un délai minimal fonctionne le mieux : cela garantit que le capteur reste actif assez longtemps pour vous détecter, mais pas si longtemps qu'il ignore un retour au lit.

Réveil intelligent à détection de mouvement : Se lever pour de bon

Construction compacte

Après avoir testé le prototype sur breadboard, soudez les composants directement sur l'Arduino Nano Every pour créer un réveil de poche.

Réveil intelligent à détection de mouvement : Se lever pour de bon

Construisez un boîtier léger en bois de balsa de 3 mm (dimensions 55 mm × 35 mm × 40 mm). Le boîtier comprend une grande ouverture pour le capteur PIR, une fente pour le câble micro-USB et une ouverture pour le buzzer.

Réveil intelligent à détection de mouvement : Se lever pour de bon
Réveil intelligent à détection de mouvement : Se lever pour de bon
Réveil intelligent à détection de mouvement : Se lever pour de bon
Réveil intelligent à détection de mouvement : Se lever pour de bon

Produit final :

Réveil intelligent à détection de mouvement : Se lever pour de bon
Réveil intelligent à détection de mouvement : Se lever pour de bon
Réveil intelligent à détection de mouvement : Se lever pour de bon

Code

Code Arduino pour réveil

#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__); // !!APRÈS LE PREMIER TÉLÉVERSEMENT VOUS DEVEZ COMMENTER CETTE LIGNE. SINON VOUS AUREZ UNE MAUVAISE HEURE!!
  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);
}

Bibliothèque horloge (DS3231)

Il s'agit d'un fichier ZIP pour la bibliothèque DS3231. Téléchargez-le et ajoutez-le à vos bibliothèques via Arduino → Croquis → Inclure une bibliothèque → Ajouter une bibliothèque .ZIP.

Aucune prévisualisation (téléchargement uniquement).

Schémas

Connectez le 5V de l'Arduino au rail positif et le GND au rail négatif sur la breadboard.

Réveil intelligent à détection de mouvement : Se lever pour de bon Réveil intelligent à détection de mouvement : Se lever pour de bon

Processus de fabrication

  1. L'initiative révolutionnaire d'autopartage de NEVS à Trollhättan : une nouvelle ère de mobilité
  2. Construire un Réveil Fiable avec RTC DS1302 et Arduino UNO
  3. Démarrez votre parcours Industrie 4.0 : Maîtrisez IO-Link sur API avec la formation SICK
  4. Facteurs essentiels pour des opérations de poinçonnage réussies et sûres
  5. Facteurs critiques influençant la performance de la rectification de surface
  6. Tours CNC : votre outil de précision tout-en-un
  7. Centres d'usinage horizontaux essentiels pour la fabrication de haute précision
  8. Choisir le Chargeur de Barres Court Idéal pour Votre Tour CNC
  9. Principaux avantages des machines d'alésage pour l'usinage de précision