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

시스 테마 스마트 홈 현관 시스템 구축 - 다스 베이더 입장 음악 자동 재생

부품 및 소모품

부품수량
Particle Photon2
아두이노 UNO1
Adafruit Music Maker MP3 쉴드1
Adafruit PIR 모션 센서1
LED (일반)2
저항 220 옴2
점퍼 와이어1
스피커: 3W, 4옴1
브레드보드 (일반)2
USB 마이크로 B 월 충전기1
USB-A to B 케이블1
수컷 헤더 36핀 1열 (0.1인치)1

필수 도구 및 장비

앱 및 온라인 서비스

프로젝트 개요

제 딸은 스타워즈 열성 팬입니다(아직 영화는 한 편도 못 봤지만). 스타워즈 테마 프로젝트를 제안하자 바로 흥미를 보였습니다. 딸이 다스 베이더 코스튬을 입고 방에 들어올 때마다 '임페리얼 마치(다스 베이더 테마곡)'를 틀어달라고 한 게 몇 번인지 모릅니다. 그래서 이 프로젝트 아이디어로 정했습니다: 누군가 집에 오면 자동으로 감지하여 현관에 들어가기 직전에 임페리얼 마치를 재생한다.

초보자에게 적합한 비교적 간단한 프로젝트입니다. 클라우드에서 발행/구독 패턴을 처음 사용해봤고, 서로 다른 종류의 마이크로컨트롤러를 하나의 프로젝트에 통합한 것도 처음이었습니다. Photon의 클라우드 연결 솔루션 구축의 단순함과 편의성이 마음에 들었습니다. 아두이노용으로 다양하고 방대한 애드온 하드웨어를 활용할 수 있어 빠르게 완성할 수 있었습니다.

1단계: 센서 조립 (소요 시간: 10분)

부품: Photon, 220옴 저항, LED, PIR 모션 센서, 브레드보드, 수-수 점퍼 와이어, USB 마이크로 B 케이블

먼저 LED를 Photon에 연결합니다. Photon을 브레드보드에 장착하고, 저항을 Photon GND 핀과 브레드보드 빈 행 사이에 연결합니다. LED 긴 다리(애노드)를 Photon 디지털 핀(D0 사용)에, 짧은 다리(캐소드)를 저항이 연결된 행에 연결합니다. LED는 선택 사항이지만 PIR 센서 자체는 모션 감지 표시가 없고 Photon도 클라우드에 이벤트 발행 시 표시가 없어 상태 표시용으로 유용합니다.

다음으로 PIR 센서를 Photon에 연결합니다. PIR 센서를 브레드보드에 장착합니다(직각 암 헤더 핀 사용 권장). 점퍼 와이어로 PIR GND를 Photon GND, PIR 5V를 Photon Vin, PIR 신호 핀을 Photon 디지털 핀(D7 사용)에 연결하세요.

주의: 센서 데이터시트에서 5V, GND, 신호 핀 순서를 꼭 확인하세요. 제조사마다 다릅니다. 제 PIR 센서는 5V로 동작하지만 신호 핀은 3.3V라 Photon 디지털 핀에 직접 연결 가능합니다. 본인 센서도 신호 전압이 3.3V인지 확인하세요.

Photon USB 마이크로 B 커넥터를 PC나 벽면 콘센트에 연결해 전원을 공급합니다. Particle IDE를 열고 아래 센서 코드를 붙여넣어 Photon에 플래시하세요.

이제 센서 앞에 손을 흔들면 LED가 켜지고, Particle 대시보드 로그에서 이벤트 발행을 확인할 수 있습니다.

2단계: 트리거 조립 (소요 시간: 10분)

부품: Photon, 220옴 저항, LED, 브레드보드, 수-암 점퍼 와이어

1단계와 동일하게 LED와 저항을 Photon에 연결합니다. LED는 선택 사항이지만 Particle 클라우드에서 이벤트 수신 시 표시용으로 유용합니다. Photon의 Vin, GND, 디지털 핀(D7 사용)에 수-암 점퍼 와이어를 연결합니다. Photon의 디지털 핀은 Music Maker 쉴드의 GPIO 핀 중 하나에 연결해 음악 재생을 트리거합니다. Photon의 Vin과 GND는 아두이노에서 Photon에 전원을 공급하는 데 사용합니다.

아두이노에 연결하기 전에 먼저 Photon을 PC나 벽면 콘센트에 연결해 전원을 공급하고, Particle IDE에서 아래 트리거 코드를 붙여넣어 플래시하세요. 이제 두 디바이스가 Particle IDE에 연결되어 있으므로 올바른 디바이스를 선택해 플래시해야 합니다.

3단계: 아두이노와 Music Maker 쉴드 조립 (소요 시간: 20분)

부품: 아두이노 우노, Adafruit Music Maker 쉴드, Photon, 220옴 저항, LED, 미니 브레드보드, 점퍼 와이어, USB 케이블

도구: 납땜 인두

Music Maker 쉴드에 포함된 헤더 핀을 납땜해야 합니다. 아두이노 연결용 헤더 핀 외에도 쉴드 상단에 GPIO와 전원 연결용 수컷 헤더 핀을 추가했습니다(암 헤더 핀이 있었다면 수-수 점퍼 와이어만으로 연결 가능했지만 수컷 헤더만 있어 이 방식을 사용).

Photon 디지털 핀에서 온 점퍼 와이어를 쉴드 GPIO 핀(7번 사용)에 연결합니다. Photon Vin을 쉴드 5V 핀에, GND를 쉴드 GND 핀에 연결합니다.

마지막으로 스피커를 쉴드 터미널 블록에 연결합니다(우측/좌측 스피커용 각각 하나). 저는 하나만 연결했습니다. 딸의 망가진 장난감에서 작은 스피커를 구해 사용했습니다.

아두이노를 개발 머신에 연결하고, 아래 아두이노 스케치를 아두이노 IDE에 붙여넣어 업로드하세요.

완성입니다! 센서 앞을 지나가면 음악이 시작될 때까지 기다려 보세요.

코드 설명

앞서 언급했듯 발행/구독 패턴을 처음 사용했는데 Photon으로 매우 쉽게 구현할 수 있었습니다. 센서 코드에서 PIR 센서 신호 핀이 HIGH가 되면 LED를 켜고 Particle 클라우드에 이벤트를 발행합니다. 발행은 한 줄로 끝납니다:

published = Particle.publish("motion-detected", NULL, 60, PRIVATE);

처음엔 비공개로 하지 않았는데(개인 식별 정보가 없으므로), 구독 시 다른 사용자들의 'motion' 관련 이벤트로 오알림이 많이 발생했습니다. 그래서 구독 시 내 디바이스만 구독하도록 MY_DEVICES 파라미터를 추가했습니다:

Particle.subscribe("motion", soundAlarm, MY_DEVICES);

구독 함수가 내 디바이스로만 제한되게 하려면 발행을 비공개(PRIVATE)로 해야 합니다.

트리거 코드는 모션 이벤트 발생 시 이벤트 핸들러 soundAlarm을 호출합니다. 핸들러는 LED를 켜고 Music Maker 쉴드의 GPIO 핀을 HIGH로 만듭니다. 아두이노 스케치는 GPIO 핀이 HIGH가 되면 60초 대기(주차, 짐 정리, 집 입장 시간) 후 SD 카드의 MP3 파일을 재생합니다.

4단계: 프로젝트 배치

센서는 차고 선반에 설치했습니다(주차 위치 바로 옆). 트리거와 아두이노+Music Maker 쉴드+스피커는 주방 카운터에 두었습니다(딸이 보통 주방 식탁에 있음). 두 위치 모두 근처에 벽면 콘센트가 있어 전원 공급이 쉬웠습니다.

소스 코드

센서 코드 (Photon)

// D0 핀에 LED
int led = D0;
// D6 핀에 PIR 센서 입력
int pir = D6;
// 발행 성공 여부 추적
bool published;

void setup() {
  pinMode(led, OUTPUT);
  pinMode(pir, INPUT);
  digitalWrite(led, LOW);
}

void loop() {
  if (digitalRead(pir) == HIGH) { // 모션 감지 시
    digitalWrite(led, HIGH); // 감지 표시 LED 켜기
    published = Particle.publish("motion-detected", NULL, 60, PRIVATE);
    if (!published) { // 발행 실패 시
      for (int i = 0; i < 10; i++) { // LED 10회 깜빡임으로 실패 알림
        digitalWrite(led, LOW); delay(500);
        digitalWrite(led, HIGH); delay(500);
      }
    }
  } else { // 모션 미감지 시
    digitalWrite(led, LOW);
  }
  delay(2000); // 2초 대기 후 다음 측정
}

트리거 코드 (Photon)

// D0 핀에 LED
int led = D0;
// D7 핀에 아두이노 트리거 신호
int trigger = D7;

void soundAlarm(const char *event, const char *data) {
  digitalWrite(led, HIGH);   // LED 켜기
  digitalWrite(trigger, HIGH); // 트리거 신호 HIGH
  delay(2000);               // 2초 대기
  digitalWrite(trigger, LOW);  // 트리거 신호 LOW
  digitalWrite(led, LOW);      // LED 끄기
}

void setup() {
  // 내 디바이스에서 발행한 motion 이벤트만 구독
  Particle.subscribe("motion", soundAlarm, MY_DEVICES);
  pinMode(led, OUTPUT);
  pinMode(trigger, OUTPUT);
}

void loop() {
  // 루프에서는 아무것도 안 함 (이벤트 기반)
}

아두이노 & Music Maker 쉴드 코드

/************************************************************
 * Photon이 쉴드 GPIO 핀에 연결되어 트리거할 때
 * Adafruit Music Maker 쉴드로 SD 카드에서 MP3 재생
 * Adafruit 튜토리얼과 라이브러리에 감사
 * https://learn.adafruit.com/adafruit-music-maker-shield-vs1053-mp3-wav-wave-ogg-vorbis-player/pinouts
 ************************************************************/
#include <SPI.h>
#include <Adafruit_VS1053.h>
#include <SD.h>

// Music Maker 쉴드 핀 정의
#define SHIELD_RESET -1  // VS1053 리셋 핀 (미사용)
#define SHIELD_CS 7      // VS1053 칩 셀렉트 핀 (출력)
#define SHIELD_DCS 6     // VS1053 데이터/명령 셀렉트 핀 (출력)
#define CARDCS 4         // SD 카드 칩 셀렉트 핀
#define DREQ 3           // VS1053 데이터 요청, 인터럽트 핀 권장

// 뮤직 플레이어 정의
Adafruit_VS1053_FilePlayer musicPlayer = 
  Adafruit_VS1053_FilePlayer(SHIELD_RESET, SHIELD_CS, SHIELD_DCS, DREQ, CARDCS);

// Photon이 연결된 GPIO 핀
int photonPin = 7;

void setup() {
  musicPlayer.begin();     // 뮤직 플레이어 초기화
  SD.begin(CARDCS);        // SD 카드 초기화
  musicPlayer.setVolume(1, 1); // 볼륨 설정 (낮을수록 큼)
  
  // DREQ가 인터럽트 핀(우노에서 #2 또는 #3)이면 백그라운드 오디오 재생 가능
  // 초기 단계에서는 사용 안 함
  // musicPlayer.useInterrupt(VS1053_FILEPLAYER_PIN_INT);
  
  // Photon이 연결된 GPIO 핀을 입력으로 초기화
  musicPlayer.GPIO_pinMode(photonPin, INPUT);
}

void loop() {
  if (musicPlayer.GPIO_digitalRead(photonPin) == HIGH) {
    delay(60000); // 60초 대기 후 재생 (집에 들어오는 타이밍 맞춤)
    musicPlayer.playFullFile("track001.mp3"); // 재생 완료까지 대기
  }
  delay(500);
}

회로도

제조공정

  1. CNC 공작기계의 핵심 구성 요소 완벽 가이드
  2. 효과적인 위기 커뮤니케이션의 필수 요소
  3. 제조업의 미래: 트렌드, 인재, 혁신
  4. Annoy-O-Bug: ATtiny85로 만드는 소형 LED 부저 장난감
  5. 나노기술: IoT 보안의 새로운 개척지
  6. 신뢰할 수 있는 압축 공기 시스템의 핵심 구성요소
  7. 크레인 현대화로 핵심 부품 혁신해 피크 성능 달성하기
  8. 내일 기술자: 디지털 팩토리 시대 역량·도구·역할
  9. 듀얼 컬럼 밴드쏘 머신의 핵심 부품과 특징
  10. 정밀 가공 부품 설계 마스터: 종합 가이드