Industriële fabricage
Industrieel internet der dingen | Industriële materialen | Onderhoud en reparatie van apparatuur | Industriële programmering |
home  MfgRobots >> Industriële fabricage >  >> Manufacturing Technology >> Productieproces

Slimme bewegingsgeactiveerde wekker: Wakker worden voor de zekerheid

Onderdelen en benodigdheden

Arduino Nano Every × 1
Klokmodule (DS3231) × 1
HC-SR501 PIR bewegingsensor × 1
Buzzer × 1

Apps en online diensten

  • Arduino IDE

Over dit project

Uit bed komen kan een echte uitdaging zijn. Deze bewegingsgeactiveerde wekker zorgt ervoor dat je wakker blijft door beweging te detecteren nadat je op snooze hebt gedrukt. Als je teruggaat liggen, reset de alarm, wat je dwingt om voor een ingestelde periode wakker te blijven voordat het alarm stopt.

Montage

Verzamel de volgende componenten:

  • DS3231 real-time klokmodule
  • HC-SR501 PIR bewegingsensor
  • Buzzer (elke 5V piezo)
  • Momentane drukknop
  • Arduino Nano Every (of elk Arduino-compatibel bord)
Slimme bewegingsgeactiveerde wekker: Wakker worden voor de zekerheid

Bedraad de componenten als volgt:

  • Verbind de buzzer negatieve pin met GND.
  • Verbind de buzzer positieve pin met D11.
  • Verbind de knop grondpin met GND.
  • Verbind de knop signaalpin met D9.
  • Verbind HC-SR501 VCC met 5V.
  • Verbind HC-SR501 output met D7.
  • Verbind HC-SR501 GND met GND.
  • Verbind DS3231 GND met GND.
  • Verbind DS3231 VCC met 5V.
  • Verbind DS3231 SDA met SDA (pin A4 op Nano).
  • Verbind DS3231 SCL met SCL (pin A5 op Nano).
Slimme bewegingsgeactiveerde wekker: Wakker worden voor de zekerheid

Code

Download de DS3231 bibliotheek ZIP uit de Code sectie en voeg het toe aan de Arduino IDE via Sketch > Include Library > Add .ZIP Library.

Upload de volgende sketch. Na de eerste upload, commentaar de regel die de datum en tijd instelt uit, zodat de RTC de juiste tijd behoudt bij resets.

#include <Wire.h>
#include <DS3231.h>
DS3231 clock;
RTCDateTime dt;
int button = 9;
int pirPin = 7; // Input voor HC-SR501
int pirValue; // Plaats om gelezen PIR waarde op te slaan
//--------------------------------------
int set_hour = 7;
int set_minute = 0;
//--------------------------------------

void setup() {
  clock.begin();
  pinMode(button, INPUT_PULLUP);
  pinMode(LED_BUILTIN, OUTPUT);
  //clock.setDateTime(__DATE__, __TIME__); // commentaar na eerste 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); // als geen beweging gedetecteerd wordt voor te lang, reset het alarm
      }
    }
    if(abs(dt.minute - minute) >= 1){
      // stel de tijdsperiode in waarin je voor de sensor moet zijn
      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);
}

Sensorinstelling

Slimme bewegingsgeactiveerde wekker: Wakker worden voor de zekerheid

Stel de HC-SR501 in op herhaalbare triggermodus door de trigger-selectie-jumper dienovereenkomstig te plaatsen.

Slimme bewegingsgeactiveerde wekker: Wakker worden voor de zekerheid

Stel de vertraging en gevoeligheid fijn. Maximale gevoeligheid met een minimale vertraging werkt het beste: het zorgt ervoor dat de sensor lang genoeg actief blijft om je te detecteren, maar niet zo lang dat het een terugkeer naar bed negeert.

Slimme bewegingsgeactiveerde wekker: Wakker worden voor de zekerheid

Nu maken we het compact

Na het testen van het breadboard-prototype, soldeer de componenten direct op de Arduino Nano Every om een zakformaat-alarm te maken.

Slimme bewegingsgeactiveerde wekker: Wakker worden voor de zekerheid

Bouw een lichtgewicht behuizing van 3 mm balsahout (afmetingen 55 mm × 35 mm × 40 mm). De behuizing bevat een grote opening voor de PIR-sensor, een sleuf voor de micro-USB-kabel, en een opening voor de buzzer.

Slimme bewegingsgeactiveerde wekker: Wakker worden voor de zekerheid
Slimme bewegingsgeactiveerde wekker: Wakker worden voor de zekerheid
Slimme bewegingsgeactiveerde wekker: Wakker worden voor de zekerheid
Slimme bewegingsgeactiveerde wekker: Wakker worden voor de zekerheid

Eindproduct:

Slimme bewegingsgeactiveerde wekker: Wakker worden voor de zekerheid
Slimme bewegingsgeactiveerde wekker: Wakker worden voor de zekerheid
Slimme bewegingsgeactiveerde wekker: Wakker worden voor de zekerheid

Code

  • Alarm Clock Arduino Code
  • Clock Library (DS3231)

Alarm Clock Arduino Code Arduino

#include <Wire.h>
#include <DS3231.h>
DS3231 clock;
RTCDateTime dt;
int button = 9;
int pirPin = 7; // Input voor HC-SR501
int pirValue; // Plaats om gelezen PIR waarde op te slaan
//--------------------------------------
int set_hour = 7;
int set_minute = 0;
//--------------------------------------

void setup() {
  clock.begin();
  pinMode(button, INPUT_PULLUP);
  pinMode(LED_BUILTIN, OUTPUT);
  //clock.setDateTime(__DATE__, __TIME__); // !!NA DE EERSTE UPLOAD MOET JE DEZE REGEL UITCOMMENTARIËREN. ANDERS KRIJG JE EEN VERKEERDE TIJD!!
  pinMode(pirPin, INPUT);
}

void alarm(int minute){
  bool button_pressed = false;
  bool awake = false;
  bool movement = false;
  while(!button_pressed){
    // het alarm blijft aan zolang de knop niet ingedrukt is
    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); // als geen beweging gedetecteerd wordt voor te lang, reset het alarm
      }
    }
    if(abs(dt.minute - minute) >= 1){
      // stel de tijdsperiode in waarin je voor de sensor moet zijn
      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);
}

Clock Library Arduino

Dit is een ZIP-bestand voor de DS3231-bibliotheek. Download het en voeg toe aan je bibliotheken via Arduino → Sketch → Include Library → Add .ZIP Library.

Geen preview (alleen download).

Schema's

Verbind 5V op de Arduino met de positieve rail en GND met de negatieve rail op het breadboard.

Slimme bewegingsgeactiveerde wekker: Wakker worden voor de zekerheid Slimme bewegingsgeactiveerde wekker: Wakker worden voor de zekerheid

Productieproces

  1. Bouw een betrouwbare wekker met DS1302 RTC en Arduino UNO
  2. Essentiële Factoren voor Succesvolle en Veilige Ponsoperaties
  3. Kritieke factoren die oppervlakteslijpprestaties beïnvloeden
  4. CNC Draaibank Machines: Uw All-In-One Precisie Hulpmiddel
  5. Essentiële horizontale bearbeitingscentra voor hoogprecisie productie
  6. De ideale korte staafvoeder kiezen voor uw draaibank
  7. Belangrijkste Voordelen van Boormachines voor Precisiebewerking
  8. Impact van directe waterpompen op circulatiesystemen
  9. Inzet Frezen: Een Uitgebreide Gids voor Efficiëntie en Prestaties
  10. Start uw Industry 4.0-reis: beheers IO-Link op PLC's met SICK-training
  11. NEVS' revolutionaire autodeel-initiatief in Trollhättan: Een nieuwe mobiliteitstijdperk