Arduino를 키보드로 사용

새로나온 Arduino Leonardo는 키보드, 마우스 등 HID(Human Interface Device)로 사용할 수 있다.

http://www.plughouse.co.kr/shop/goods/Goods_view.php?G_code=122006150144

MakeyMakey를 참고. Arduino와 Capsense라이브러리를 이용하면 만들 수 있다.

 

Arduino Uno도 USB드라이버 펌웨어를 바꿔서 키보드처럼 접속해서 사용할 수 있다.

http://mitchtech.net/arduino-usb-hid-keyboard/

 

Arduino Uno R2/SMD버전

우선 USB드라이버의 펌웨어를 업로드할 수 있게 dfu-programmer를 설치해야한다. macports(http://macports.org)를 설치하고 터미널에서

sudo port install dfu-programmer

를 입력해서 설치한다. (새 맥미니에 설치하다 에러가 났는데, 로그를 읽어보니 xcode command line tool이 없어서 문제라고 한다. xcode를 열고 command line tool을 다운로드해서 다시 해보니 잘 된다.)

 

USB커넥터 옆에 있는 핀헤더를 아주 잠시 쇼트시켜서 USB칩을 리셋시킨다.

터미널에서

sudo dfu-programmer at90usb82 erase
sudo dfu-programmer at90usb82 flash --debug 1 Arduino-keyboard-0.3.hex
sudo dfu-programmer at90usb82 reset

를 차례로 실행시켜서 키보드 펌웨어를 넣는다. 보드를 USB에서 뽑았다가 다시 연결하니 이제 아르두이노는 키보드로 바뀐다.

 

다만 이 상태에서는 코드를 넣을 수가 없다. 코드를 업로드하려면 다시 USB시리얼 펌웨어를 넣어야한다.

sudo dfu-programmer at90usb82 erase
sudo dfu-programmer at90usb82 flash --debug 1 Arduino-usbserial.hex
sudo dfu-programmer at90usb82 reset

과정이 좀 번거롭다.

 

/* Arduino USB HID Keyboard Demo
 * Random Key/Random Delay
 */

uint8_t buf[8] = { 
  0 }; 	/* Keyboard report buffer */

void setup() 
{
  Serial.begin(9600);
  randomSeed(analogRead(0));
  delay(200);
}

void loop() 
{
  int randomChar = random(30, 130);
  long randomDelay = random(100, 500);

  delay(randomDelay);

  buf[2] = randomChar;	  // Random character
  Serial.write(buf, 8);	// Send keypress
  releaseKey();
}

void releaseKey() 
{
  buf[0] = 0;
  buf[2] = 0;
  Serial.write(buf, 8);	// Release key  
}

Leave a Reply

You must be logged in to post a comment.