메이킹/메이킹 프로젝트

아두이노 프로를 사용한 스탠드 작동부 제작

트리맨스 2020. 4. 21. 01:08
반응형

 

이거를 만들고 나서, 스탠드는 하나 사는게 훨씬 좋다는 생각이 들었다. 뻘짓 하지 맙시다 여러분.

 

개요


'그 바이러스' 덕분에, 등교는 고사하고 꼼짝없이 집에 있게 생겼다. 집에서 공부를 할 때면, 빛이 항상 그늘져서 책이 어둡게 보인다. 평소에 공부를 했여야 공부하는 환경이 있을텐데, 그늘져서 더욱 공부가 되질 않았다. 그래서 그냥 이참에 작업실에 있는 재료들을 이용해서 스탠드를 하나 만들기로 했다.

 

사실 여기 들인 돈과 시간을 생각하면 그냥 스탠드 하나 사는게 더 이득이겠지만, 괜히 공대생 자존심이 스탠드 구입을 막았다. 정말 귀찮게 산다.

 

부품 구성


아두이노 프로 미니를 이용해 전체 동작을 컨트롤 할 것이다. 아두이노 프로 미니를 사용한 이유는 

 

https://tre2man.tistory.com/165

 

아두이노 프로 특징 및 사용법

이번에 간단한 작품을 만들면서 아두이노 프로를 쓰게 되었다. 아두이노 프로는 기존의 아두이노와 다를 게 별로 없지만, 아두이노 프로를 사용함으로서 얻는 장점이 있기에, 사용을 할 것이다. 여기서는 간단히..

tre2man.tistory.com

 

이곳에 잘 나와있다. 저렴하고 (사실 작업실에 널린 게 이것) 소형화에 유리하기 때문이다.

 

빛은 네오픽셀을 이용할 것이다. 아래의 사진은 튜브형 네오픽셀이고, 내가 쓸 것은 튜브없는 방수처리된 네오픽셀이다. 동작 전압은 5V 를 이용하여 승압 없이 바로 사용할 예정이다.

 

 

출저 : http://vctec.co.kr/

 

 

가변 저항을 이용해 빛의 밝기를 조절할 것이다. 네오픽셀에 직접 신호를 주는 것이 아닌, 아두이노에서 값을 입력한 다음, 네오픽셀에 출력을 해 줄 것이다.

 

 

출저 : 위키백과

 

 

기타 부품으로는 남는 USB선, 전선, 스위치 등이 필요하다.

 

동작 구상


 

 

 

 

 

너무 간단해서 설명하기도 좀 그렇다. 아두이노 프로 미니에 가변저항과 네오픽셀을 연결한 후, 적절한 코딩으로 네오픽셀을 제어하게 만든다. 전원은 USB로 공급할 예정이므로, USB 입력단을 구해야 한다. 

 

 

 

 

파밍에 성공했다. USB 핀을 이용해 전력을 공급할려면, 전원선이 어디인지 알아야 한다. 접지와 5V 두 개의 선만 찾아내면 된다. 선을 까고 색깔을 확인해 보면, 아래 사진과 같은 4개의 선이 나온다.

 

 

 

대부분 저렇게 4개의 선이 나올 것이다. USB 2.0은 총 4개의 선을 이용해 데이터 전송을 한다. 3.0 부터는 기존 4개 + 4개의 추가 데이터 전송선 해서 대부분 8개의 배선이 있을 것이다. 꼽는 단자는 4개 + 5개 해서 총 9개가 있다.  여튼 검은색, 녹색, 흰색, 빨간색 4개의 색이 나오는데, 대부분 검은선과 빨간선이 전원을 위한 선이다. 가장 정확한 방법은 멀티미터로 확인하는 것인데, 특수한 경우가 아니면 저 두가지의 색상이 전원일 것이다.

 

 

 

 

가변저항과 핀헤더, 네오픽셀, 스위치 (나중에 색상 제어를 위해 추가해 주었음) 을 만능기판 위에 납땜한다. 만능기판 자를 때 커터칼로 할려고 했으나, 근성이 부족하여 포기하였다. 작업실에 있는 헨드글라이더를 이용하니 10초안에 잘렸다. 역시 사람은 고급 도구를 쓸 줄 알아야 한다. 사포로 갈아주니 매끈하고 작은 만능기판이 만들어졌다.

 

 

 

 

후면도 회로도에 따라 납땜을 해 준다. 전류가 과하게 들어갈까봐 전선을 두꺼운 것으로 할려했으나, 얇은 선밖에 없어서 어쩔 수 없이 그것들로 납땜을 했다.

 

하드웨어가 만들어졌으면, 코딩을 해야 한다. 아두이노 IDE를 키고 코딩을 해 보자. 네오픽셀을 사용하기 위해선  Adafruit_NeoPixel 이라는 라이브러리가 필요하다. 

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
#include <Adafruit_NeoPixel.h>
#ifdef __AVR__
 #include <avr/power.h>
#endif
 
#define LED_PIN    6
#define Handle     A0
#define Switch     10
#define LED_COUNT  30
 
bool BeforeState = 0;
bool NowState = 0;
 
int State;
int Mode = 0;
int Green=0,Red=0,Blue=0;
 
Adafruit_NeoPixel strip(LED_COUNT, LED_PIN, NEO_GRB + NEO_KHZ800);
 
void setup() {
  strip.begin();           
  strip.show();  
  strip.setBrightness(50);          
 
  pinMode(Handle,INPUT);
  pinMode(Switch,INPUT_PULLUP);
 
  Serial.begin(9600);
}
 
void loop() {
  strip.begin();
  State = analogRead(Handle);
  State = map(State,0,1023,0,255);
  NowState = digitalRead(Switch);
  
  if(BeforeState==0&&NowState==1){
    Mode++;
    Mode%=4;
    delay(20);
  }
 
  Serial.print(BeforeState);
  Serial.print(" ");
  Serial.print(NowState);
  Serial.print(" ");
  Serial.println(Mode);
 
  switch(Mode){
    case 0:
      colorWipe(strip.Color(255,255,255),1);
      break;
    case 1:
      colorWipe(strip.Color(Green,State,Blue),1);
      break;
    case 2:
      colorWipe(strip.Color(Green,Red,State),1);
      break;
    case 3:
      colorWipe(strip.Color(State,Red,Blue),1);
      break;
  }
  
  BeforeState = NowState;
}
 
void colorWipe(uint32_t color, int wait) {
  for(int i=14; i<strip.numPixels(); i++) {
   strip.setPixelColor(i, color);       
    strip.show();                          
    strip.setBrightness(State);
  }
}
cs

 

가변저항으로 네오픽셀의 밝기를 조절하고, 스위치로 색상을 바꿀 수 있는 코드이다. 급하게 작성하느라고 코드를 대충 짰다는 느낌이 많이 난다.

 

결과


동작은 정상적으로 잘 작동한다. 가변저항을 돌리면 네오픽셀의 밝기가 변화하고, 버튼을 클릭할 때 마다 RGB 색상을 선택할 수 있다.

 

 

하지만 여기 치명적인 단점이 있다. 눈이 너무 피곤하다. 네오픽셀의 빛을 보고 있으면, 눈이 쉽게 피로해지는 것을 느낄 수 있다. 애초에 스탠드의 기능을 상실해 버렸다.

 

내일 스탠드 하나 주문해야겠다. 이거 만드느라 아직도 눈이 피곤하다. 부품들의 구매 링크는 혹시 몰라서 아래 달아놓았다.

 

 

 

 

반응형