お知らせ:この記事はJLCPCBの提供でお送りしています。

#makepcba 第2回開催します!今回は自作キーボード特集!」の記事でも予告した通り、#MakePCBAのイベントに合わせて、上の写真のような自作キーボード(マクロパッド)を作成しました。イベント内でも製作過程を紹介しましたが、あらためて記事としてまとめておきます。(イベント内で使用したスライドはこちら

製作のきっかけ

自作キーボードが流行していて、キットを組み立てるだけではなくプリント基板まで自作している方が増えてきているのは知っていたのですが、自分自身はこれまで自作キーボードには手を出していませんでした。しかし、最初に書いたように#MakePCBAの第2回イベントで自作キーボードを特集したいと高須さん(@tks)からお誘いを受けたので、せっかくならば自分も自作キーボードに挑戦して発表してみようと考えました。

設計方針

今回は自作キーボードの入門ということもあって、いきなりフルキーボードを作るのではなく、マクロパッドを作成することにしました。マクロパッドというのは、主にショートカットキーなど、本来であれば複数個のキーを同時に押さなければいけない操作を1つのキーの操作でできるようにまとめたりする用途で使われるキーボードを指します。

フルキーボードだけでなく、マクロパッドも様々な作例がネットで公開されていますが、今回はオリジナリティを少し出してみようと思い、ピアノの鍵盤のような配置にしたマクロパッドを作ってみました。VSTプラグインなどのソフトウェアシンセは、QWERTYキーボードの配列を転用して、演奏ができるようになっていることが多いです。例えば、「ド」の音が”Q”、「ド#」の音が”2″のキーといったような具合です。今回はそのようなソフトウェアシンセと一緒に使うことを想定したキー配置にしてみたというわけです。1オクターブ分のキーに加えて、左端にオクターブUp/Downのキーを付けて、全部で15個のキーを搭載したマクロパッドとしました。マクロパッドといいつつ、とりあえずは1キーにつき1操作になっています。(プログラム次第で複数キー操作をまとめることも可能です。)

また、キーボードの制御を行うマイコンは中国WCH社のCH554を使用しています。自作キーボードの世界ではArduino Pro Microやその互換ボードが主に使用されているようですが、いきなりファームウェアのカスタマイズ等々をやっていると沼にはまってしまいそうなことと、CH55x系マイコン用のArduino風環境であるCH55xduinoを使ってCH55x系マイコンに入門してみたかったことから、CH554を選定しました。今回はUSBデバイスとしての機能しか使っていないため、CH554ではなくCH552で十分なのですが、JLCPCB Parts Libraryの在庫の都合でCH554を実装しています。CH55xduinoではCH552を指定して書き込みを行えば問題なく使えます。

基板到着

今回はキースイッチ以外の部品実装もJLCPCBで行ってもらいました。以前はUSB-Cのコネクタ等はParts Libraryになかったのですが、現在はコネクタ類も実装してもらえるようになったので、より便利になりました。

8/3の朝にオーダーして、配送はDHLを選択したところ8/12にはPCBAが届きました。黒基板で仕上がりはばっちりです。

組み立て…の前に

残りのパーツであるキースイッチを用意してさあ組み立てようと回路図を見ていたら、上のTweetの通り回路図上で配線が1個抜けているのを見つけてしまいました。まさか…と思ってパターンの方も確認すると、やはり配線が抜けていました。幸い、そこまで修正が難しくない場所だったので、UEW(ポリウレタン被覆銅線)で配線を追加しました。皆さんはこうならないように、ERC1を使うようにしましょう…

気を取り直して組み立て

修正を入れた後は、気を取り直してキースイッチの実装です。今回は遊舎工房さんで購入したGateronのクリア軸を使っています。このスイッチはリニア・35gという荷重特性のスイッチです。現在メインで使っているキーボードが静電容量無接点方式のキーボードで、荷重が35gなので、それに合わせてみました。

今回は位置決めピンがあるタイプのキースイッチなので、スイッチを基板に差し込むと位置決めピンのおかげでしっかりと固定されます。あとは基板を裏返して、ひたすらはんだ付けするだけです。

キー数の多いキーボードでは、ダイオードマトリクスと呼ばれる、少ないピンで多数のスイッチの状態を読み取るための回路が組まれていることがあります。ダイオードマトリクス方式を採用した場合、マイコンのピン数は削減できますが、代わりにキースイッチと同数のダイオードが必要になります。それぞれの人がこだわりのあるキースイッチと違い、汎用品でよいダイオードはあまりに数が多いと手はんだするのはただひたすらに面倒です。今回は部品実装サービスでダイオードまで実装してもらっているため、自分ではんだ付けする必要があるのは本当にキースイッチだけです。

というわけで、1スイッチ当たり2ピン、15個のスイッチなので計30か所はんだ付けをすれば部品の実装は完了です。はんだ付けが終わったらキースイッチと同じく遊舎工房で購入したDSA無刻印キーキャップを取り付けて、ハードウェアは完成です。

ファームウェア作成

ハードウェアが完成したら、次はファームウェアの作成です。設計方針の章でも触れましたが、今回はWCH社のCH554というマイコンを使用しているため、このマイコンに対応したCH55xduinoというArduino風環境でファームウェアを開発しました。コンパイラがSDCCのため、C++非対応ではありますが、ちょっとしたファームウェアを書く分にはあまり困らないかと思います。今回はCH55xduinoに付属していたUSBキーボードのサンプルプログラムを改造することでファームウェアを作成しました。

今回はキースイッチ以外の部品はすべて基板の裏側に持ってきたのですが、ファームウェア書き込み用のスイッチまで裏側に持ってきてしまったのは失敗でした。当たり前ですが、一度きちんと動くファームウェアを書きこむと、この基板はUSBキーボードとして振る舞います。以降、ファームウェア書き込み用スイッチを押す際にうっかりおもて面のキースイッチに触ってしまうと、当然ながらキー入力がされたと判定され、場合によっては上の図のようにソースに余計な文字が入力されてしまいます。現状の部品配置だと、キースイッチを避けるように注意しながらファームウェア書き込み用スイッチを押すのはちょっと面倒なのでした。次回は押しっぱなしにせずに操作できるタイプのスイッチ(ディップスイッチなど)にするか、配置を工夫しようと思います。

見た目を改善

このマクロパッドを作った直後に大阪に行く機会があり、大阪の電気街・日本橋筋商店街のシリコンハウスにも行きました。特にお目当てがあって行ったわけではないのですが、店頭でキーボード用パーツの取り扱いがあり、今回使用しているDSA無刻印キーキャップが売られていることを発見しました。

せっかくなので赤と水色のキーキャップをシリコンハウスで購入し、オクターブUp/Downキーに取り付けてアクセントとしてみました。これでキーボードとしてはいったん完成です。

まとめ

今回は#MakePCBAの企画を兼ねて、小さい自作キーボード(マクロパッド)を作成しました。JLCPCBでプリント基板製造~部品実装まで行うことで、手元でのキースイッチ以外のはんだ付けを省略しつつ、表面実装部品を活用してコンパクトに仕上げることができました。

今のところ、このマクロパッドはケースがないため据わりが悪い状態ですが、どこかでケースも作ろうと思います。せっかくなのでケースはJLCPCBの3Dプリントサービスで作ってみようかと思案中です。

なお、今回作成した基板のデータやファームウェアはGitHubにアップロードしてあります。もしよろしければ参考にしてみてください。

  1. Electrical Rule Check:回路図上に電気的な矛盾点(入力に信号が接続されていない、出力同士が接続されている、など)がないか検証する機能
公開日:2022/09/12