brainage.egloos.com

포토로그



아두이노 실험용 실드 만들기 - 키보드 매크로머신 성공 by 천하귀남

아두이노 라는 PC에서 간단하게 접속해 프로그래밍해서 동작시키는 마이컴 보드가 있습니다. 이걸 얼마전 구입했는데 통상은 외부의 스위치나 이런것을 브레드 보드라는 실험용 보드로 이리저리 연결해가며 만들어야 합니다.
이렇게 생긴 것인데 복잡하긴 합니다. 문제는 집이면 몰라도 가지고 다니면서 간단한 실험하기에는 저 브레드 보드는 너무 거추장 스럽습니다. 그냥 버튼하나 눌렀을때 특정 동작만 해주는 정도의 간단한 실험용으로는 부적합합니다.


그래서 용산에서 작은 기판과 저항 스위치등을 몇개 구해다 테스트용 기판을 만들기로 했습니다. 저 기판 하나에 2400원인가 하더군요. 스위치는 개당 10원 저항은 10개 100원정도입니다. 스타터 킷이니 살필요 없이 적당히 부품상에서 구입하기를 권합니다.
현재는 스위치 하나와 LED하나로 동작합니다. 키배열 임의로 바꿀수 있고 매크로기능이 있는 소형 조이스틱을 만들려고 하는데 해당 스위치류는 나중에 추가 땜질해야지요.


아두이노는 기존 아두이노 위에 이런 소형기판을 만들어 붙이기 쉬운 구조로 되있고 이런 소형기판을 실드라는 이름으로 부릅니다.   꼭 방패처럼 기존 기판위에 올라갑니다.

이 아두이노 레오나르도라는 물건이 참 마음에 듭니다. 키보드나 마우스로 동작하는 기능이 추가되서 십수만원이 넘는 매크로 있는 키보드나 마우스를 대체 가능하군요. 프로그래밍이 가능하다 보니 몇초뒤 무슨동작후 어떤 키를 넣으라는 식으로도 가능합니다.

프로그래밍 예제를 하나 올려보면 다음처럼 가능합니다.


const int buttonPin = 8; // 8번핀을 버튼 스위치신호 입력으로 지정
const int ledPin = 13; // 13번 핀을 동작 확인용 LED신호 출력으로 지정
int previousButtonState = HIGH; // 반복시 이전의 버튼 상태 기본값은 눌림(HIGH는 스위치가 연결되 전압이 높다는 의미)
int counter = 0; // 버튼이 몇번 눌렸는기 기억하는 변수



void setup() {
  // 위에서 설정한 핀번호를 입력대기 지정:
  pinMode(buttonPin, INPUT);
  // 아두이노를 키보드 모드로 동작:
  Keyboard.begin();
}

void loop() {
  // 버튼 상태 읽기:
  int buttonState = digitalRead(buttonPin);
  // if the button state has changed,
  if (
	(buttonState != previousButtonState)   	// 이전과 버튼 상태가 다르고(이래야 버튼이 눌리고 한번만 동작):
  && (buttonState == HIGH)    // 버튼이 눌린경우만 아래를 실행
  )
 {
    counter++;
    // 다음 메세지를 키보드로 입력 (게임등에서는 특정 키를 누른것으로 임의대로 구성가능 그러면 그것이 매크로!!!)
    Keyboard.print("You pressed the button ");
    Keyboard.print(counter);
    Keyboard.print(" times.");
    // 가령 S키 + D키 + S키 + D키 + P키 하는 식으로 승룔권 커맨드도 가능합니다. 중간에 약간의 딜레이를 넣어야 겠지요.

  }
  // 키보드 상태 저장 이러면 키보드를 누르고 있어도 재입력안됨
  previousButtonState = buttonState; 
  
  digitalWrite(ledPin, HIGH); // 작동확인을 위해 LED를 0.1초 단위로 깜빡임
  delay(100); //
  digitalWrite(ledPin, LOW); // turn the LED off by making the voltage LOW
  delay(100);
  
}


물론 아주 복잡하게는 이 보드를 통해 센서입력을 받아 특정동작을 하거나 이걸로 모터등을 동작시키고 무선인터넷등도 가능한데 이정도 까지는 좀더 많은 연습을 해야할듯 합니다. 그래도 실용적인 용도로 목표를 삼아 뭔가 만들어 나가는 재미가 있으니 좋습니다. ^^

P.S 시한폭탄 제조용으로 악용의 소지도 높아 보입니다. ^^;

P.S2
새로 나온 신간인데 아주 상세하게 잘나왔더군요. PC와의 연동이나 모터구동등 상당히 높은 수준까지 잘 설명된 책입니다.
응용의 여지가 높을수록 의욕을 높인다는 점에서 이런 중상급 서적을 추천하겠습니다.

덧글

  • 애쉬 2012/09/03 16:44 # 답글

    호오 아두인호를 배울수 있는 곳이 되려나요? 여기 ㅎㅎㅎㅎ

    ㅅㅎㅍㅌ 이란 단어는 ;;; 주의하시는게.... 웃자고 쓴 이야기 죽자고 단속할 인간들이 있습니다;;;;

    특히 이명박근혜 회동에서 대선전에 '클린 100일'을 만들자는 무슨 계엄령 스러운 논의가 오고가는 걸 보면서 소름이 끼쳤습니다.
    인터넷 장악의 만행을 부릴 준비라도 하는 것인지;;;;(기우에 그치길 바랍니다)


    응용 범위가 넓을수록 의지가 타오르기 쉽다는 말씀 공감합니다.^^ 기대됩니다
  • 천하귀남 2012/09/03 23:00 #

    아두이노 강좌는 날고기는 분들이 많으니 저따위는 무리일듯합니다. 그저 만든거나 계속 공개할려구요. ^^;
  • 긁적 2012/09/03 20:15 # 답글

    으. 음............. 정말 재미있게 가지고 놀 만한 장난감 같은데 딱히 어떻게 가지고 놀지를 모르겠다는게 함정 (...)
  • 천하귀남 2012/09/03 23:02 #

    구버전은 그럴지 모릅니다만 신버전에서 키보드나 마우스가 되니 이건 직접적으로 써먹을 곳이 제법 됩니다.
    또 각종 센서류와 결합해도 쓸곳이 많습니다.
  • 하우 2012/09/03 20:28 # 답글

    아두이노 나노로 멀티콥터를 만들어본 적이 있는데, 언어가 C랑 좀 달라서 골머리 썩다가 결국 오픈코드로 갔었는데....
    손 뗀지 오래되서 가물가물하네요. 여튼 아두이노는 다룰줄만 알면 참 재미있는 물건 같습니다. 다룰줄 몰라서 문제지.
  • 천하귀남 2012/09/03 23:02 #

    전 저런 회로 저항이나 회로구성쪽이 전공이 아니라 고생바가지입니다. ^^;
  • 하우 2012/09/03 23:19 #

    저도 전공은 기계공학이랍니다. 어허허....^^;
  • realythm 2012/09/03 20:52 # 답글

    아두이노로 직비 센서를 학부에서 텀프를 했다는게 함정. 재밌긴 한데 뭐랄까 대중적으로 많이 하는분들이 없다는게 에러일려나요.

    근데 저는 지난학기 텀프할때 우노를 썻는데 우노랑 레오나르도랑 차이가 뭐가있나요?
  • 천하귀남 2012/09/03 23:06 #

    레오나르도의 특징이 USB에 물리면 마우스나 키보드로 인식되고 마우스와 키보드 입력관련 API가 추가됬습니다. 이것덕분에 활용폭이 늘었습니다.
    이걸로 앵그리버드용 조준장치 만든분도 있더군요.
  • 타누키 2012/09/03 20:59 # 답글

    팩까지 나왔군요. 오오...
  • 천하귀남 2012/09/03 23:07 #

    저책이 정말 나온지 얼마 안된책이더군요. 저것 이외에 4종류 인가 있는데 범용으로 볼수있는건 두권뿐인가 합니다.
  • 늄늄시아 2012/09/04 16:47 # 답글

    뭔가 쌈박한 것을 만들어서 제 활에 장착하고 싶네요.. OTL
  • 천하귀남 2012/09/05 21:13 #

    레이저 거리 측정기하고 측풍 감지기 달고 3축 자이로 센서 달아 활의 기울기를 잰다면 조준 보조장치 만들수 있겠군요 ^^;
댓글 입력 영역
* 비로그인 덧글의 IP 전체보기를 설정한 이글루입니다.

구글 애널리틱스

통계 위젯 (화이트)

3001102
6423
5674318

이 이글루를 링크한 사람 (화이트)

406

당부드리는 말

블로그 사진을 포함한 전체가 아닌 일부의 내용은 얼마든지 사용하셔도 상관없습니다.

상대방을 존중하는 생각이 있다면 욕설과 과도한 비아냥은 자제를 부탁드립니다. 정도가 심하거나 비로그인의 글은 임의 삭제 가능함을 알려드립니다.

A타입 클린 캠페인 위젯

방문자

Map