프로젝트

[아두이노 프로젝트] 소형 아두이노 비틀을 사용해서 나만의 아두이노 컨트롤러를 만드는 프로젝트!

페이지 정보

작성자 메카 작성일16-03-17 18:16 조회4,404회 댓글0건

본문

안녕하세요 메카솔루션입니다!


이번에는 아두이노 비틀을 사용해서, 나만의 컨트롤러를 만드는 프로젝트를 진행하려합니다...

이번에 프로젝트를 진행하게 된 계기는 이전에 상품으로 판매하려고 하였던 닌텐도 넌척이 불량상품이 와버려서 이를 어떻게 처리할지 고민하다 만들게 되었습니다. 

그래서! 누워서 손가락만 까딱하고 컴퓨터를 하기위해! 

불량품인 넌척을 프레임으로 사용하고! 컴퓨터와 연결하기 위해, 비틀이라고 하는 소형 아두이노 호환보드를 사용하였습니다!

사용되는 부품 소개

02cd46d8a607ca14b01d10ead866e139_1458205

DFRobot의 아두이노 마이크로 호환 보드인 beetle입니다.

아두이노 마이크로 호환보드의 특성상 키보드, 마우스입력이 지원됩니다.(HID 지원)

3개의 아날로그핀, 기본 3개(최대 10 개) 의 디지털핀이 있어, 이것저것 추가하여 사용할 수 있습니다.

요즘 누워서 마우스를 움직이기 힘들기때문에 손에 들고 쓸수 있는 제품을 만드려면 이제품이 적합하다고 생각하였습니다.

제품 바로가기~

02cd46d8a607ca14b01d10ead866e139_1458205

마침 불량재고로 사무실 구석에 자리잡고있는 넌척을 프레임을 사용하도록 하였습니다.

내부의 회로를 수정하고 좀만 만져주면 제가 원하는 제품이 될것같네요~!

불량품을 팔 수는 없는 관계로, 이번 프로젝트는 "나만의 컨트롤러를 만들면 이렇게~ 만들면 되겠구나~" 를 알아보기 위한 프로젝트라고 생각해주시면 될것같습니다. ㅠㅠ

제작 과정

02cd46d8a607ca14b01d10ead866e139_1458206

넌척 분해후 사진

우선 넌척을 분해해 봅니다.

선이 5가닥 보이는데 우선 별로 중요하지는 않지만 설명을 드리자면, 

기존의 넌척은 IIC(I2C) 통신을 사용하여서 데이터를 주고받습니다.

이때문에 SCL, SDA, VCC, GND는 필수적으로 필요하게 됩니다. 나머지는 위모트에 신호를 보내주기 위한 선인듯합니다.

근데 저희는 이런거 필요없어요

동작이 불량이라서 폐기가 되었기 때문이지요 ㅠㅠ

그냥 잘라줍니다.

02cd46d8a607ca14b01d10ead866e139_1458206

전선을 자른 뒤의 모습
02cd46d8a607ca14b01d10ead866e139_1458206

버튼부와 조이스틱부를 연결을 때어냅니다.

이제 기존의 회로와 필요한 부분의 연결을 없애 주어야합니다.

기존회로를 없애는 이유는, 아두이노와 연결이 될때, 기존회로가 동작이 되면, 값을 읽어들이는데 노이즈가 생기거나 이상동작을 일으킬 수 있습니다.

기존의 회로를 없애거나 기존의 회로와 분리를 해야되는데 상당히 대규모 작업이므로 간단하게 커터칼로 회로를 잘랐습니다.

02cd46d8a607ca14b01d10ead866e139_1458206

회로를 단선시켜야하는 부분 이미지

위에 나와있는 검은 절삭선을 기준으로 커터칼로 칼집을 내줍니다!

02cd46d8a607ca14b01d10ead866e139_1458206

회로를 전부 연결한 모습

배선을 완료합니다~! 
회로도는 조립이 끝나고 설명하도록 하겠습니다.

02cd46d8a607ca14b01d10ead866e139_1458206

커버를 닫아 조립완성!

사진을 찍는걸 깜빡했습니다. 다용도 가위등으로 아두이노 비틀이 들어갈 부분의 기둥을 잘라주시면 쏙! 들어갑니다! 우선 조립은 끝!

회로도 알아보기

02cd46d8a607ca14b01d10ead866e139_1458206

회로도

으.. 비틀의 프리징파일을 찾지못해서직접 그리게 됬네요. 저항은 각각 4.7K옴 을 사용하였습니다!

A0 - 3DLX
A1 - 3DLY
10 - 버튼1
9   - 버튼2 

소스코드

소스코드는 다음과 같습니다. 

void setup() {
  pinMode(A0, INPUT);
  pinMode(A1, INPUT);
  pinMode(10, INPUT);
  pinMode(9 , INPUT);
  Mouse.begin();
}
int x = 0;
int y = 0;
void loop() {
  x = (analogRead(A0) - 500) / 100;//100나누게 되면 100의자리 단위로 읽기게 되서 초기 값이 삐둘어져도 문제없습니다.
  y = (analogRead(A1) - 500) / -100;
  Mouse.move(x, y, 0);//입력된 값에맞게, 마우스를 움직입니다.
  if (digitalRead(10) == HIGH) {
    if (!Mouse.isPressed(MOUSE_LEFT)) {
      Mouse.press(MOUSE_LEFT);
    }
  }
  else {
    if (Mouse.isPressed(MOUSE_LEFT)) {
      Mouse.release(MOUSE_LEFT);
    }
  }
  if (digitalRead(9) == HIGH) {
    if (!Mouse.isPressed(MOUSE_RIGHT)) {
      Mouse.press(MOUSE_RIGHT);
    }
  }
  else {
    if (Mouse.isPressed(MOUSE_RIGHT)) {
      Mouse.release(MOUSE_RIGHT);
    }
  }
  delay(7);
}





동작 영상보기


너무나도 완벽한 동작영상

이것으로 나만의 컨트롤러 프로젝트 완성!
 

읽어주셔서 감사합니다.

댓글목록

등록된 댓글이 없습니다.


모바일 버전으로 보기