민트 통에 들어갈 만큼 작지만 집 전체에서 들릴 만큼 큰 소리, 단 몇 달러로 제작 가능한 훌륭한 장난감입니다. 바로 시작해 보겠습니다!
1단계: 회로도
PCB는 위 부품 목록의 링크에서 구매할 수 있습니다. 반드시 ATtiny나 맞춤 PCB를 쓸 필요는 없습니다. 브레드보드나 퍼프보드에서도 약 20분이면 조립 가능합니다. 소형화를 원한다면 PCB 방식이 좋습니다. 위 그림은 브레드보드 버전이며, ATtiny85 대신 다른 마이크로컨트롤러로 교체해도 됩니다.
2단계: PCB 조립
부품 실장은 비교적 쉽습니다. 부저와 LED는 극성이 있으니 주의하세요.
부저: 긴 다리가 원형 패드, 짧은 다리가 사각 패드
LED: 긴 다리가 흰색 사각형 반대쪽 구멍
배터리 커넥터 납땜이 가장 까다롭습니다. 앞면 부품을 모두 납땜한 뒤, DIP 소켓 중앙 구멍을 통해 배터리 커넥터의 그라운드 핀을 패드에 납땜하세요. PCB에 흰색 실크스크린 사각형이 있어 장난칠 메시지를 적을 수도 있습니다. PCB를 커스터마이징하려면 내 circuits.io 디자인을 복제하세요.
3단계: 소프트웨어
// Code produced by Alex Wulff: https://www.AlexWulff.com
#define BUZZ 0
#define LED 1
#define BEEP_DELAY 30
#define LIGHT_DELAY 200
#define INITIAL 5000 // 밀리초 단위
// 10,000 ms → 총 시퀀스 46.5초
// 20,000 ms → 총 시퀀스 91.5초
// 30,000 ms → 총 시퀀스 136.5초
// 10초 증가마다 시퀀스 시간 45초씩 증가
void setup() {
pinMode(BUZZ, OUTPUT);
pinMode(LED, OUTPUT);
// 장치 동작 확인용 LED 점멸
for (int i = 0; i < 5; i++) {
digitalWrite(LED, HIGH);
delay(LIGHT_DELAY);
digitalWrite(LED, LOW);
delay(LIGHT_DELAY);
}
}
void loop() {
// 50회 반복, 매번 지연 시간을 1/i 배로 감소
for (int i = 1; i < 50; i++) {
digitalWrite(BUZZ, HIGH);
digitalWrite(LED, HIGH);
delay(BEEP_DELAY);
digitalWrite(BUZZ, LOW);
digitalWrite(LED, LOW);
delay(INITIAL / i);
}
}
위 코드는 영상의 동작을 구현한 예제입니다. 비프 간격이 점점 짧아져 매우 성가시게 만듭니다. INITIAL 값을 늘리면 시간 간격을 조절할 수 있으며, 일주일 동안 매일 빨라지도록 설정할 수도 있습니다. 무작위 비프/점멸이나 멜로디 재생 등 다양하게 응용 가능합니다.
Autodesk Circuits 시뮬레이션으로 실제 배선 없이 코드 테스트가 가능합니다: 시뮬레이션 링크
4단계: ATtiny85 프로그래밍
Arduino Uno와 10µF 커패시터로 ATtiny85를 프로그래밍할 수 있습니다. 자세한 방법은 여기를 참조하세요. DIP 소켓에서 ATtiny를 뺄 때는 핀셋을 사용하는 것이 편합니다.
5단계: 설치 위치
부품 조달가에 따라 개당 5달러 미만으로 여러 개 제작 가능합니다. 화분, 작은 상자, 베개, 램프 안, 책상 등 어디든 숨기기 좋습니다. 워치독 타이머로 ATtiny를 슬립 모드 시키면 코인 셀 배터리로 1년 이상 구동됩니다.