산업 제조
산업용 사물 인터넷 | 산업자재 | 장비 유지 보수 및 수리 | 산업 프로그래밍 |
home  MfgRobots >> 산업 제조 >  >> Manufacturing Technology >> 제조공정

스마트 모션 감지 알람 클락: 확실히 일어나기

부품 및 소모품

Arduino Nano Every×1
클락 모듈 (DS3231)×1
HC-SR501 PIR 모션 센서×1
부저×1

앱 및 온라인 서비스

Arduino IDE

프로젝트 소개

아침에 일어나기란 진짜 도전입니다. 이 모션 감지 알람 클락은 스누즈 버튼을 누른 후 움직임을 감지해 당신이 계속 깨어있도록 합니다. 다시 침대로 돌아가면 알람이 리셋되어, 알람이 멈추기 전까지 설정된 시간 동안 깨어있게 만듭니다.

조립

다음 부품을 준비하세요:

스마트 모션 감지 알람 클락: 확실히 일어나기

다음과 같이 배선하세요:

스마트 모션 감지 알람 클락: 확실히 일어나기

코드

코드 섹션에서 DS3231 라이브러리 ZIP을 다운로드해 아두이노 IDE의 스케치 → 라이브러리 포함 → .ZIP 라이브러리 추가로 설치하세요.

다음 스케치를 업로드하세요. 최초 업로드 후 날짜/시간 설정 라인을 주석 처리해야 리셋 시 RTC가 정확한 시간을 유지합니다.

#include <Wire.h>
#include <DS3231.h>
DS3231 clock;
RTCDateTime dt;
int button = 9;
int pirPin = 7; // 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__); // 최초 업로드 후 주석 처리!
  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);
}

센서 조정

스마트 모션 감지 알람 클락: 확실히 일어나기

HC-SR501의 트리거 선택 점퍼를 반복 트리거 모드로 설정하세요.

스마트 모션 감지 알람 클락: 확실히 일어나기

지연과 감도를 미세 조정하세요. 최대 감도에 최소 지연이 최적입니다: 당신이 감지될 만큼 충분히 오래 활성화되지만, 다시 침대로 돌아가면 무시하지 않을 정도입니다.

스마트 모션 감지 알람 클락: 확실히 일어나기

컴팩트 제작

브레드보드 프로토타입 테스트 후, 부품을 아두이노 나노 에브리에 직접 납땜해 주머니 크기 알람을 만듭니다.

스마트 모션 감지 알람 클락: 확실히 일어나기

3mm 발사나무로 경량 케이스 제작 (55mm × 35mm × 40mm). PIR 센서용 큰 개구부, 마이크로 USB 케이블 슬롯, 부저용 구멍이 포함됩니다.

스마트 모션 감지 알람 클락: 확실히 일어나기
스마트 모션 감지 알람 클락: 확실히 일어나기
스마트 모션 감지 알람 클락: 확실히 일어나기
스마트 모션 감지 알람 클락: 확실히 일어나기

완성품:

스마트 모션 감지 알람 클락: 확실히 일어나기
스마트 모션 감지 알람 클락: 확실히 일어나기
스마트 모션 감지 알람 클락: 확실히 일어나기

코드

알람 클락 아두이노 코드

#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__); // 최초 업로드 후 반드시 주석 처리!
  pinMode(pirPin, INPUT);
}

void alarm(int minute) {
  bool button_pressed = false, awake = false, 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);
}

클락 라이브러리 (DS3231)

DS3231 라이브러리 ZIP 파일입니다. 다운로드 후 아두이노 → 스케치 → 라이브러리 포함 → .ZIP 라이브러리 추가로 설치하세요. 미리보기 불가 (다운로드만 가능).

회로도

아두이노 5V를 브레드보드 양극 레일에, GND를 음극 레일에 연결하세요.

스마트 모션 감지 알람 클락: 확실히 일어나기 스마트 모션 감지 알람 클락: 확실히 일어나기

제조공정

  1. NEVS, 트롤헤탄에서 혁신적 카셰어링 이니셔티브 출범: 모빌리티 새 시대
  2. DS1302 RTC와 아두이노 우노로 만드는 신뢰할 수 있는 알람 시계
  3. 식(SICK), IO-링크 PLC 교육으로 인더스트리 4.0 여정 지원…실습 중심 1일 코스
  4. 성공적이고 안전한 펀칭 작업을 위한 필수 요소
  5. 표면 연마 성능에 영향을 미치는 핵심 요소
  6. CNC 선반 기계: 올인원 정밀 공구
  7. 고정밀 제조를 위한 필수 수평 머시닝 센터
  8. 선반용 이상적인 숏 바 피더 선택 가이드
  9. 정밀 가공을 위한 보링 머신의 주요 장점
  10. 직결식 워터 펌프가 순환 시스템에 미치는 영향