프로젝트

나도 메이커! 메이커스 여러분들의 작품/프로젝트를 공유하는 공간입니다.

D-Bug 납땜기

2014-11-19 19:16:26

D-Bug 납땜기

어두운곳에 숨어있다가 밝은 빛을 비추면 도망가는 벌레로봇 키트의 조립순서를 찍어보았습니다. 

기존에는 개인적은 워크숍 요청에 의해 PCB 자체를 에칭기법을 통해 만드는 과정을 포함한 워크숍으로 진행이 되었었는데요...

이번에 PCB 로 제작하여 많은 사람들이 사용할 수 있게끔 만들어 보았습니다. 

그 첫번째로 곧 있을 코엑스에서 2014 창조경제박람회때 DIY 섹션으로 참여하게 되었습니다. 

목,금,토,일 중 금요일에 진행될 예정이며 매일 4회 40분 선착순에 한해 무료로 참여하며 키트를 조립(납땜)하고 가져갈 수 있게끔 진행될 예정입니다. 

- 오늘의 프로젝트는 약간은 실험적인(사이트의 글쓰기 기능의 파악 등..)글로써... 중간 과정 저장이 없는관계로 시간나는대로 프로젝트 포스팅을 완료할 예정입니다. 


재료 목록 및 구매 링크




 
우선 벌레긴 하지만 어두운곳에서 소심하게 " 나 여기있어!" 하고 살짝씩 반짝이게 될 LED 를 납땜하는 모습니다. 
야간에 비행기가 하늘에서 깜박깜박 거리는 것에서 영감을 받았습니다. 




벌레로봇(D-bug) 의 머리역할을 하게될 컨트롤러입니다. 머리역할이란 센서값을 받아 처리하고 소리를 내는 역할의 프로그래밍이 들어가는 것을 말하며
외형적으로는 벌레의 몸 부분처럼 보이는 역할을 하게 됩니다. 
칩으로는 ATtiny85 칩을 사용하였으며 MIT 의 HighLow Tech 에서 제공하는 라이브러리를 사용하였으나 
최근에는 Tone 함수가 가능하고 3개의 PWM 사용이 가능한 다른 라이브러리를 사용하였습니다. 
디버그의 소리를 내기위해 어렵게 코딩을 했었는데 Tone 함수가 사용가능해짐으로써 코드가 간결해졌습니다. 



LED 가 납땜이 되고 컨트롤러를 납땜하기 전 모습이네요. LED 의 경우 고휘도 Red LED 를 사용하였으며 색이나 휘도 상관없이 사용이 가능합니다. 
사진에서의 R3 에 330옴의 저항을 통해 컨트롤러에서 신호를 보내 LED 를 On Off 합니다. 






벌레의 다리 역할을 하게될 저항들입니다. 
2종류의 저항을 사용하게 되는데요. 위의 2개의 저항은 10K옴의 저항과 아래 1개는 330옴의 저항입니다. 
R1 이 10K 저항은 ATtiny85 칩의 리셋핀에 연결된 풀업저항으로써 ATTiny85 칩의 외부 영향에 의해 리셋되지 않도록 하는 역할을 하게 됩니다.
사실 저는 이 풀업저항을 잘 달지 않는데요... 벌레의 다리 역할을 위해 저항도 필요한것도 있고 정석의 회로 구성이라 할 수 있습니다.
R2 의 10K 저항은 이따라 연결할 밝기감지 센서와 연동할 저항인데요.. 다리가 2개인 센서(가변저항이라 할 수 있죠)와 함께 고정저항을 사용하여야
컨트롤러(마이크로 컨트롤러 또는 아두이노)가 인식할 수 있는 전압의 형태가 됩니다. - 더 자세한 내용은 제 사이트 www.bbaanng.com 에서 보시면 될 것 같스빈다.
R3 는 위 설명처럼 LED 에 걸리는 전압과 전류제한을 위한 저항이라 할 수 있습니다.


작성중.


납땜 과정 영상 링크 


아래의 코드는 이해를 돕기위해 쉽게 작성된 코드입니다.  
// ATMEL ATTINY85 / ARDUINO
//
//                 +-\/-+
// Ain0 (D5) PB5* 1|    |8  Vcc
// Ain3 (D3) PB3  2|    |7  PB2 (D2) Ain1 sck INT0
// Ain2 (D4) PB4  3|    |6  PB1 (D1) pwm1 miso PCINT1
//           GND  4|    |5  PB0 (D0) pwm0 mosi PCINT0
//                 +----+

//                   +-\/-+
// Reset  (D5) PB5* 1|    |8  Vcc
// Buzzer (D3) PB3  2|    |7  PB2 (D2) LED
// sensor (D4) PB4  3|    |6  PB1 (D1) Motor +
//             GND  4|    |5  PB0 (D0) Motor -
//                   +----+


int vibPinA = 0;
int vibPinB = 1;
int led = 2;

int buzzerPin = 3;

int sensorVal,sensorVal2;

int ledTimer;

void setup()
{
        pinMode(vibPinA, OUTPUT);
        pinMode(vibPinB, OUTPUT);

        pinMode(buzzerPin,OUTPUT);
        pinMode(led,OUTPUT);
} 

void loop()
{
        sensorVal = analogRead(2);
        if(sensorVal>800)
        {
                tone(buzzerPin,1000,20);
                digitalWrite(vibPinA,HIGH);
                digitalWrite(vibPinB,LOW);

                digitalWrite(led,LOW);
                
        }
        else
        {
                noTone(buzzerPin);
                digitalWrite(vibPinA,LOW);
                digitalWrite(vibPinB,LOW);

                if(ledTimer==0)
                {
                        digitalWrite(led,HIGH);
                        delay(1);
                        digitalWrite(led,LOW);
                        delay(10);
                }
                else if(ledTimer==30)
                {
                        digitalWrite(led,HIGH);
                        delay(1);
                        digitalWrite(led,LOW);
                        delay(10);
                }
                else
                {
                        digitalWrite(led,LOW);
                }                        
        }
        
        
        if(ledTimer)        ledTimer--;
        else                ledTimer = 200;
        
        delay(10);
}



강병수