blog

DeNAのエンジニアが考えていることや、担当しているサービスについて情報発信しています

2021.06.24 技術記事

キーボードの試作

by mazgi

#welfare #keyboard

@mazgi です。
DeNA では最近勤続表彰制度ができ、私も勤続満N年の対象となり勤続特別休暇と賞品をいただきました。
表彰内容は、在籍期間に応じて特別休暇と使途自由ないくらかのお金がいただけるというもので、活用方法は書籍を購入したり平時なら旅行でリフレッシュされたりと人それぞれです。

そこで私は以前から必要性を感じていた PC キーボードの試作に充てました。
実はかなり前に 4 キーのキーボードキットを組み立てたことがあり、そのシンプルさと配列自由度の高さから「いつか自分に合わせてキーボードを作りたい」と思っていました。

そんな試作の第一弾として出来上がったのはこちらの 9 キーのキーボードです。
これくらいの機能が限定されたキーボードは「マクロパッド」と呼ばれるようです。

構成は界隈の方ならおなじみ ProMicro+ QMK Firmware です。

9 キーで何ができるのか?
Slack の絵文字が 1 タイプで入力できます、便利!

日々のテキストコミュニケーションは業務に必須なので、このように円滑なコミュニケーションをサポートするデバイスは業務効率の向上に大きな役割をはたしそうですね!
福利厚生でデバイスを作ってさらに業務効率をあげる!
なんともはんてきなふるまいなんでしょう!

つくりかた

このキーボードの作り方をご紹介します。
キーボードはざっと以下の要素で構成されています。

  • 配列や見た目を決める基板やシャーシ
  • キースイッチやコントロール用のマイコンといった電子部品
  • それらの部品で動作する電子回路
  • 電子回路とキーボードとしての振る舞いをマップするファームウェア

いわゆる自作キーボードのキットであればこれらがすでにほとんど決まっているのですが、自分で設計する場合には自分で考え決めていく必要があります。

しかしキーボードを設計したことがなければそもそも何をどう考えて良いのかわかりません。
にわとりたまごです。

そんな私のような初心者がキーボード制作に手をつける上でとても参考になる同人誌「 自作キーボード設計入門 2 」があります。
この同人誌を参考にさせていただき少しずつ学び作っていきました。

また部品の購入やハンダ付け作業の場所として 遊舎工房 さんに大変お世話になりました。
実のところ今回のマクロパッドはだいたい全部遊舎工房さんでご相談したり教えていただいたりして成り立っています。
撮影場所もだいたい全部遊舎工房さんです、本当にお世話になっております 🙏

ブレッドボードで試作

何はともあれ回路を組まないと始まらないので、まずはマイコンとキースイッチ 1 つだけで構成されたキーボード回路から試作します。
1 キーのキーボード回路ができたら、格子状に回路を組んで 4 キー、9 キーとキースイッチの数を増やしていきます。

電子部品だけで構成でき、部品点数もほんの数個なのでブレッドボードを引っ張り出して組んでみます。
写真は 4 キーまで増やしたところです。

このようにキーボード回路を試行錯誤しながら同時にファームウェアを作ります。
「ファームウェアを作る」といってもデファクトスタンダードといえる OSS のキーボードファームウェア「QMK Firmware」が存在しており、手軽に自分好みのキーボード配列を実現できます。

QMK Firmware はファームウェアとして動作するだけに留まらず、「自作キーボードファームウェア」を開発するためのエコシステムが整っています。
ですので、生成されたソースコードを編集し make するだけで、組んだ回路上のマイコンに USB キーボードのファームウェアが書き込まれ、PC に繋ぐと USB キーボードとして認識され打鍵できます。

QMK Firmware という巨人の肩にしがみついて、まずは今自分で組み上げた回路が USB キーボードとして認識されたことに拍手します。
そしてキースイッチ代わりのタクトスイッチを押して”a”が入力される様子を見てさらに喜びます。

余裕があれば LED を光らせたり OELD に文字を表示させると夢が広がります。

なお本同人誌発刊後に QMK Firmware が改善されたらしく OLED に文字を出力するためのコードは次の通りに簡略化されていました。

しかし私の手元では OLED の表示が安定せず、文字が時々表示される状態です。
余力が持てたら原因を追ってみたいところです。

基板で試作

ブレッドボード上での施策を通して「キーボードなんとなくわかった」状態になれました。
しかしブレッドボードのままではキーボード感が足りないのでもう少しコンパクトにキーボードらしい見た目を目指して基板上に実装するための設計をします。

キーボード感が足りないどころか、キースイッチを 3 回くらい押すと飛び跳ねていなくなってしまいますし、別の場所に持ち運ぶためには都度分解 → 組み立てが必要で実用的ではありません。

基板上には電子部品をハンダで固定しますが、この基板はよく PCB(Printed Circuit Board)と略されるようです。
その PCB を作るためにはパターンを描いて発注する必要があるのですが、今回はもっと手軽に試作したいと思っていました。

そこで遊舎工房さんで教えていただいた「 Choc っとした可能性 」を試させていただきます。
これはキースイッチ向けのパターンが印刷された PCB で、前述の「自分でパターンを考え発注もしくはエッチング」する手間を省いてくれます。

同人ハードウェアらしくマニュアルは見つけられなかったのでテスターをお借りして回路を確かめながら、ブレッドボード実装で得た知識と突き合わせて配線を考えます。

今回はこの素晴らしく私の用途に合った基板とユニバーサル基板を組み合わせることで試作品としては満足できる形状に収めることができました 🎉

ただしこれを持って飛行機に乗ろうとすると別室に案内されること請け合いなので、自由に遠出できるようになる頃までにはもっとキーボードらしい見た目を作れるように引き続き精進したいところです。

最後に

「仕事場」のあり方がますます多様になっている今日この頃、自分に最適化したオリジナルデバイスを作ってみるのはいかがでしょうか?
私も自分の要件にあったキーボードや入力デバイスを模索していきたいと思います。
この記事が 1 つの作例として参考になれば幸いです。

最後まで読んでいただき、ありがとうございます!
この記事をシェアしていただける方はこちらからお願いします。

recruit

DeNAでは、失敗を恐れず常に挑戦し続けるエンジニアを募集しています。