Arduino micro pro を使って自作キーボードを作った話

公開: 2020-07-05 / 更新: 2025-07-16

作ろうと思った背景

子供の教材開発の一環で,microbit の次のステップとして Arduino を想定していて,
その使い方を学んでいるときに,HID機能というものを知りました.

これは何かというと,ヒューマン・インターフェース・デバイスの略称で,
USB接続であたかもキーボード,マウスのように振舞う(なりすます)ことが
できる機能のことです.

このいわゆる「なりすまし」が使えると,
「ある1つのボタンを押したら,xxxというキー入力をする」とかが
出来るようになります.

本当にそんなことが出来るのだろうか,難しくないのだろうか,と思ったので,
試してみた結果が本記事の内容です.

準備するもの

配線

Amazon で購入した Arduino micro pro 互換品は,ピンヘッダが半田付けされていないので,
最初にそれをはんだ付けする必要があります.
はんだ付けするにあたっては,ブレッドボードにピンヘッダを差し込み,
その上に,Arduino micro pro を乗せて,はんだ付けすると足が斜めにならずに済みます.

fig1. Arduino のはんだ付け準備 その1
fig2. Arduino のはんだ付け準備 その2 - ピンヘッダをブレッドボードに差します
fig3. Arduino のはんだ付け準備 その3- ピンヘッダに Arduino を置き,はんだ付け

次にブレッドボードに,Arduino, タクトスイッチを配置して,
ジャンパワイヤーで繋げていきます.

fig4.タクトスイッチは,赤丸で囲んだ隣同士の足がスイッチを押したときに繋がります
fig5. 配線図

プログラミング

fig6. 書き込むボードの対象を Arduino Leonardo にする
fig7. 書き込み先 Port の指定
#include <Keyboard.h> // キーボードライブラリの読み込み

#define Button5 5 // 5番ピンを Button5 と呼ぶことにするよ
#define Button6 6

void setup() {
  Keyboard.begin(); // キーボード機能を使うおまじない
  pinMode(Button5, INPUT_PULLUP); // Button5 をプルアップしておく.スイッチ青を押すとGND に繋がる
  pinMode(Button6, INPUT_PULLUP);
}

void loop() {
  // Button5 が押された時の動作設定
  if(digitalRead(Button5) == LOW){ // Button5 がGND になったら,つまり,スイッチ青が押されたら
    Keyboard.print("hogehoge"); // hogehoge と入力される.
    Keyboard.write(9); // TABが入力される.参考先:http://www.asciitable.com/
    Keyboard.print("fugafuga");
    Keyboard.press(KEY_RETURN);
    delay(100); //wait PC busy // PC側が入力を受け付けるまで100ms待つ
    Keyboard.releaseAll(); // キーを離す

    while(digitalRead(Button5) == LOW); // Button5 が連続で入力されてるとき,無視する
  }
  // Button6 が押された時の動作設定
  if(digitalRead(Button6) == LOW){
    Keyboard.print("fugafuga");
    Keyboard.press(KEY_RETURN);
    delay(100); //wait PC busy
    Keyboard.releaseAll();

    while(digitalRead(Button6) == LOW);
  }
  delay(100);
}
fig8. File → Save as... より,プログラムファイルを保存する
fig9. プログラムを Arduino に書き込む.赤丸のところの矢印を押すだけ.押すと黄色くなります.
fig10. 書き込み終わると,黄色くなってたボタンが元の色に戻り, Done uploading と出ます.
fig11. メモ帳を開いて,タクトスイッチ青を押した図

むすび

やってみて,一番初めに思ったのは,「超簡単にできる!」です.

キーボード自作というと,正直ベーシック的な処理をいっぱい書かなきゃいけないのかな,と
勝手にイメージしていたのですが,今回書いたのは全部で35行程度でした.

で,これを作ってから,自作キーボードのその道には,もっと簡単に自作キーボードを作ることができる,QMKというファームウェアが存在することを知った(知ってしまった)ので,次はQMKについても記事を書こうかな,と思ってます.

ご参考:fabcross さんでも特集していたようです.
https://fabcross.jp/category/make/20200427_Zoom.html