제조공정
| 부품 | 수량 |
|---|---|
| Particle Photon | 2 |
| 아두이노 UNO | 1 |
| 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의 클라우드 연결 솔루션 구축의 단순함과 편의성이 마음에 들었습니다. 아두이노용으로 다양하고 방대한 애드온 하드웨어를 활용할 수 있어 빠르게 완성할 수 있었습니다.
부품: 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 대시보드 로그에서 이벤트 발행을 확인할 수 있습니다.
부품: 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에 연결되어 있으므로 올바른 디바이스를 선택해 플래시해야 합니다.
부품: 아두이노 우노, 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 파일을 재생합니다.
센서는 차고 선반에 설치했습니다(주차 위치 바로 옆). 트리거와 아두이노+Music Maker 쉴드+스피커는 주방 카운터에 두었습니다(딸이 보통 주방 식탁에 있음). 두 위치 모두 근처에 벽면 콘센트가 있어 전원 공급이 쉬웠습니다.
// 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초 대기 후 다음 측정
}
// 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() {
// 루프에서는 아무것도 안 함 (이벤트 기반)
}
/************************************************************
* 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);
}
sensor.fzztrigger.fzz제조공정
전자 회로 기판(PCB)에 관심 있다면, 그 위를 채우는 부품들을 알아야 합니다. 모든 전자 기기에 예외 없이 탑재되는 PCB. 초보자에게 녹색 기판 위 수많은 부품은 미스터리입니다. 입문자를 위해 PCB에서 가장 흔한 15가지 부품의 기능과 특징을 정리했습니다. 1. 저항(Resistor) 전류 흐름을 제한하고 전력을 열로 소모시키는 가장 기본적인 수동 소자. 색상 밴드(색코드)로 저항값 표시. 탄소 피막, 금속 피막, 와이어 와운드 등 재질 다양. 리드 타입(축타입)은 양단에 리드선, 본체에 색링 각인. 2. 커패시터(Capac
ABB IRB 7600은 일꾼 모델로 모델에 따라 150~500kg(손목 다운 시 최대 630kg) 사이의 모든 중량급 작업을 수행할 준비가 되어 있습니다. 높은 가용 토크와 관성 능력, 견고하고 강성 있는 설계, 강력한 가속도로 힘든 작업을 훌륭히 수행합니다. 이 강력한 가속도는 ABB 고유의 모션 제어로 인해 더 짧은 사이클 타임을 만듭니다. IRB 7600의 수평 리치는 버전에 따라 2,550mm에서 전체 3,500mm까지이며 완전히 뒤로 젖힐 수 있어 작업 범위를 크게 확장하고 밀집된 생산 라인에 완벽하게 들어맞습니다. 또