LoginSignup
11
10

More than 5 years have passed since last update.

USB-serial と Arduino Leonardo で作る簡易KVMコンソール (キーボード編)

Posted at

サーバセットアップの強い味方、ノートパソコン接続KVMコンソールの紹介 | ツチノコブログによると、VGA, Keyvboard, Mouseをノートパソコンなどで実現する機械のようですが、これのうちVGAはちょっとつらいにしても、キーボードやマウスくらいなら簡易的に実現できるのではないかと思って、USB-serial変換器とArduino Leonardoで作成してみました(キーボードのみ)

Arduino Leonardo

Arduino Unoとは違いCPUのSoC自体がUSBも持っていて、ArduinoでUSB keyboardやMouseに化ける事が出来ます。Leonardo以外でも同じようなのがあるのでそれでもいけるはずです。

回路

回路というほどではないですが、USB-serialとLeonardoを結線します。

USB-serial Arduino Leonardo
GND GND
RXD TX (PB1)
TXD RX (PB0)

ソース

https://github.com/erukiti/tiny-kvm にソースを置きました。

  • app/ Electronアプリケーション。Nodejs 5系が必要です
  • leonardo Arduinoスケッチ

app の方は分量が多いので貼らないですが、Arduinoのスケッチだけ貼ってみます。

#include <keyboard.h>

void setup(void) {
  Serial.begin(9600);
  Serial1.begin(9600);
  Keyboard.begin();
}

void keyWait() {
  while (Serial1.available() <= 0)
    delay(1);
}

void loop(void) {
  char buf[1024];
  byte ch;

  keyWait();
  byte tp = Serial1.read();
  switch (tp) {
  case 1:
    keyWait();
    ch = Serial1.read();
    Keyboard.press(ch);
    sprintf(buf, "%02x", ch);
    Serial.println(buf);
    break;

  case 2:
    keyWait();
    ch = Serial1.read();
    Keyboard.release(ch);
    sprintf(buf, "%02x", ch);
    Serial.println(buf);
    break;
  }
}

問題点や今後

  • キーボードのリピート周りがおかしい
  • まだ、Mac to Mac でしか試していない

今後はマウスも対応していきたいです。

11
10
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
11
10