ALLPCBの無料キャンペーンで初めての自作キーボードを作ったら本当に無料で最高だった件

無料プリント基板が作れる!?

f:id:inajob:20211110123159p:plain

Twitter「無料でプリント基板を作ってくれる中国の会社がある」と聞いて、調べると、どうもALLPCBという会社がキャンペーンをやっているようでした。

f:id:inajob:20211110102332p:plain

キャンペーンの詳細を見ると・・

  • 毎月送料も含め無料で 5枚の基板を1回注文できる
  • 基板には大きさの制限がある(100mm*150mm = 15000mm2以内)
  • 基板の色は緑と白のみ
  • クレジットカード情報不要

というようなものでした。

f:id:inajob:20211110102353p:plain

プリント基板の製作会社は中国にたくさんあり、最近は少量を安くで作ってくれる業者も増えてきましたが、「送料を含めて無料」というキャンペーンは初めて見ました。

※このキャンペーンは2021年6月から9月ごろまで行われていたようですが、今現在は「1つ有料で注文すると、以降6か月は毎月無料で1度5枚基板を注文できる」というキャンペーンに変更されているようです。これでも十分お得です。この記事を見て興味がわいた方は → ALLPCB から試してみてください。

月に1回無料で基板を注文する日々

無料と聞いたら試してみたくなるのが人情です。

自分はプリント基板を設計し、中国の業者に発注したことは何度かあったので、これはうれしい!と思いこのキャンペーンに乗じて毎月基板を発注しました。

今回はそんな基板の中でも、比較的うまく作ることが出来た、「自作キーボード」について紹介しようと思います。

自作キーボードとは

このブログを見ているような人は、ご存知だとは思いますが「自作キーボード」という電子工作のジャンルがあります。

キーボードというのは、いわゆるパソコンに接続するキーボードです。

このキーボード、かなり奥が深く、配列やキーボードスイッチの押し具合の違い、テンキーの有無や、有線・無線など、こだわりポイントがたくさんあります。

市販の製品も大量に販売されていますが、キーボード自体を「自作」することもでき、近年この「自作キーボード」というのがエンジニアを中心に話題となっています。

「自作キーボードを作る」と言っても、様々なレベルがあり、「組み立て済みのキーボードを購入する」、「キットを買ってきてはんだ付けする」、など、様々な取り組み方がありますが、今回自分が挑戦したのは「基板の設計からおこなう」という比較的ガチ目な方法です。

キー配列を設計する

前述したALLPCBのキャンペーンを見ていて、気になったのが「基板の大きさの制限」です。

基板には大きさの制限がある(100mm*150mm = 15000mm2以内)

と書かれていますが、この100mmと150mmというのはあくまで例のようで、面積さえ条件を満たしていれば、とても細長い基板などもキャンペーンの対象であることがわかりました。

※残念ながら、現在のキャンペーンではこの制限は少しきつくなり長辺が150mm以内となっているようです。キーボードを作るのであれば左右分割式や、キーボードスイッチの小さなものが選択肢となりそうです。

f:id:inajob:20211110102353p:plain

この制限は中国の基板製造会社の中では異例です。

通常よくあるのは、100mmx100mmサイズがとても安く設定されており、それよりはみ出すと途端に料金が高くなるという価格設定です。 そのため、キーボードなどの細長い基板を作る際は、思った以上に基板の製造費用が高くついてしまっていました。

しかし、ALLPCBではこれが毎月5枚まで無料!!

ということで、自分はこの制限の中で自作キーボードを作る事を計画しました。

15000mm2以内のサイズでキーボードを作ろうと考えると、まずは標準となるキーボードスイッチの大きさが19.05mm程度なので、、

13×3のキーボードスイッチを並べるのがよさそうです。

一般的なキーボードはファンクションキー、数字、英字3列、機能キーと6列キーが並ぶものですが、今回作るキーボードはたった3列だけです。

自作キーボードの世界では、キーの数の少ないキーボードも数多く設計されており、このような3列のキーボードは30%キーボードなどと呼ばれるジャンルが確立されています。

f:id:inajob:20211110102555p:plain

少なくなったキーはLayerという仕組みを用いて、Layerキーと同時押しすることで利用することが出来るようにします。

キーボードのスイッチには様々なサイズがあります。例えばShiftキーは一般的に細長く、Enterキー縦長で、少し変わった形をしているものが多いです。

しかし今回は、設計を簡単にしようという事で、すべてのキーを文字キーと同じ正方形のキーとしました。

また、キーボードの各列は、通常のキーボードだと列ごとに少しずつずれているものですが、今回設計するキーボードはずらさず格子状にキーボードスイッチを並べました。

このような格子状のキーボード配置をOrtholinearなどと呼んだりするようです。

この段階で各キーの役割はふわっと決めていましたが、まぁ後でいくらでも変更することが出来るので、そこまでしっかり考えていません。

キーボードの配列の設計には下記サイトが非常に役立ちました。

www.keyboard-layout-editor.com

f:id:inajob:20211110102944p:plain

実はこのサイトでキーボードの配列を作ると、この後の基板の設計に必要な下準備も出来てしまうという優れものです。

基板を設計する

前項でキーボードの配列が決定したので、基板を設計していきます。

設計にはKiCADというオープンソースの基板設計ソフトウェアを利用しました。

keyboard-layout-editorでキーボードを設計し、生成されるjsonファイルを使うと基板設計のひな型になるデータを作ることが出来ます。

GitHub - yskoht/keyboard-layouter-playground: A sample circuit and netlist to quickly try the Keyboard Layouter plugin.に元となる基板データがあります。 さらに、このプラグインGitHub - yskoht/keyboard-layouter: Footprint auto placement plugin for keyboard layoutを使うことで、keyboard-layout-editorで設計したキーボードに必要な部品だけが残されます。

ここまでで、基板に載せるキーボードスイッチとダイオードのデータが用意できました。

これを基に以下の作業を行うことで基板データを完成させます。

  • マイコンの配置
  • 部品間の論理配線
  • 基板上の部品配置
  • 基板上の物理配線

マイコンの配置

今回はPro micro(Arduino)互換のマイコンボードを使うことにします。

f:id:inajob:20211110111152p:plain

加えてマイコンをリセットするためのスイッチや、デバッグに利用できるようにシリアルポートや、電源ポート、I2Cポートなどを接続するためのピンヘッダも配置しておきます。

f:id:inajob:20211110103326p:plain

部品間の論理配線

マイコン、キーボードスイッチ、ダイオードを論理配線します。

マイコン、キーボードスイッチ間はマトリクス状に配線を行います、何行、何列に配線するかはお好みです。 今回はなるべくArduinoのピン数を節約するために、6x7のマトリクスで配線を行いました。

f:id:inajob:20211110103350p:plain

基板上の部品配置

論理配線が終わったら次は部品配置です。 キーボードスイッチは、ほぼ自動生成された形のまま利用します。 ダイオードを対応するキーの近くに配置し、マイコンモジュールをなるべく邪魔にならないと頃に配置します。

基板の外形線もここで設計します。ALLPCBの無料の範囲をはみ出さないように気を付けて設計します。

基板とケースを固定するための穴もここで指定します。

f:id:inajob:20211110103431p:plain

基板上の物理配線

最後に物理配線です。各部品の足を、論理配線に従って配線します。 配線にこだわりがある場合は、手で配線を1つずつ指定することが出来ますが、今回はFreeroutingという自動配線ツールを使います。

KiCADから部品情報をExportしてFreeroutingに読み込ませ、自動配線を指示して、数時間放置するだけで、勝手に配線を行ってくれます。

ここまで作ると、出来上がりのイメージを3Dで見ることもできます。

折角なので「I Love ALLPCB」みたいな文字を入れてみることにします。

f:id:inajob:20211110103539p:plain

基板を発注する

基板データが出来たらいよいよ発注です。

KiCADから基板発注に必要なデータを出力しZipファイルに固めてALLPCBの注文フォームからアップロードします。

上手くキャンペーンが適応されると、合計金額が$0と表示され、本当に0円で注文ができます。

f:id:inajob:20211110103756p:plain

製造の状況は適宜アップデートされ、今回の場合は、8/15に家に届いたので、注文から1週間かからずに基板を手に取ることが出来ました。

Webページやメールはすべて英語で書かれており、中国語が必要となる事はありませんでした。

部品を注文する

自作キーボードづくりに必要な部品は、様々なパーツショップで購入することができます。

今回必要となった部品は以下です。

  • キーボードスイッチx39
  • キーボードキャップx39
  • ダイオード(表面実装版)x39
  • ネジとナット
  • リセット用タクトスイッチ(表面実装版)
  • Pro micro(Arduino)互換モジュール

自分はもっぱらAliExpressを使います。届くに1か月以上かかることもあり、また記載されている部品と違うものが届いたりすることもたまにあるので、あらかじめ買っておくのが良いと思います。

(すぐに部品が欲しい場合や、信頼のおける部品が欲しい場合は遊舎工房など、国内のパーツショップを利用するのが良いと思います。)

実は自分はすべての必要部品をすでに購入済みだったので、このステップは不要でした。 f:id:inajob:20211110104031p:plain

ファームウェアを用意する

自作キーボードのファームウェアは、QMKというものが非常に有名です。

QMKを自作のキーボードで使うためには、配線とキーの関係を設定ファイルとして用意して、QMKをビルドしなおす必要があります。

これにはプログラミングの知識が必要ですが、下記サイトを利用すると、ポチポチと配線をGUIで設定するだけで、QMKをビルドして、ファームウェアをダウンロードすることが出来ます。

どのキーに何の役割を持たせるかといった試行錯誤もこのツールがあれば非常に簡単でした。

Keyboard Firmware Builder

f:id:inajob:20211110104211p:plain

キーボードを組み立てる

さて、基板が届いたら、いよいよ組み立てです。

Pro micro(Arduino)互換モジュールに前述のファームウェアを書き込みます。ファームウェアはhex形式なので、avrdudeなどを使えば書き込みができますが、下記サイトを使うとWebページから簡単に書き込みが出来ました。

Pro Micro Web Updater

Pro micro(Arduino)互換モジュールと、キーを1つ、対応するダイオードを1つはんだ付けをして、パソコンにつないでみて、キーボードとして認識されるか?、1つのキーを押すと期待する文字が入力されるかを確かめるのが良いです。

f:id:inajob:20211110104236p:plain
写真は2つのキーで動作確認をしている様子です。

動作が確認出来たら後はひたすらはんだ付けです。

ケースを作る

ここまででキーボードの内臓は完成しましたが、このキーボード、このままではまっすぐ机の上に置くことが出来ず、使うことが出来ません。

ということで3Dプリンタを使ってケースを作る事にしました。

我が家の3Dプリンタでは、横幅が足りず、このキーボードのケースを一気に作ることが出来ず、左右2つの部品に分割してケースを出力しました。

f:id:inajob:20211110110615p:plain f:id:inajob:20211110110652p:plain

ケースの設計にはFreeCADを用いました。

f:id:inajob:20211110104506p:plain

応用する

前項までで、キーボードとしては完成ですが、この自作キーボード、コンパクトでかつ、ケースなどを取り付けるためのネジ穴もあるので、このキーボードと電子工作を組み合わせる事で、キーボード付きのガジェットを自作できそうだなと考えています。

もちろん市販のキーボードでも似たようなことはできるのですが、キーボード自体が大きかったり、ほかのパーツを取り付ける余地が無かったりと、不便が多いです。

こんな感じでM5StackとUSBHostシールドを組み合わせて、モバイル入力システムを作ってみたりしています。

f:id:inajob:20211110114206p:plain

今回の反省点

初めての自作キーボードという事もあり反省点は山積みです。同じようなことに挑戦する人のために、少しメモを残しておきます。

ネジがキーボードスイッチと干渉しそう

ネジ穴をキーボードスイッチの隙間に開けたのですが、いざ組み立てた後にねじを取り付けようとしたところ、ねじの頭が引っかかってしまい、ねじを取り付けるのが難しいという問題が発生しました。

f:id:inajob:20211110111738p:plain

ナットを上にすることでこの問題は一応回避できました。

f:id:inajob:20211110111816p:plain

Pro micro(Arduino)互換モジュールがかさばる

基板の面積を小さく保つために、キーボードスイッチの裏側に重なるようにPro micro(Arduino)互換モジュールを取り付けるように設計しました。 そのため、キーボード自体の厚みが増してしまいました。

また、キーボードスイッチとPro micro(Arduino)互換モジュールの両方をはんだ付けしてしまうと、部品をつけなおすことなどが非常に難しいという点も気になります。(普通に組み立てる場合は部品のつけなおしは不要なので、そこまで問題になりません。)

ハートマークが消えた

これは自分のデータの作り方がまずかったのですが、 この基板のキモの1つであるI Love(ハートマーク) ALLPCBの ハートマークが消えてしまっていました。

発注前にガーバーデータを確認していればこの間違いに気付けたのですが、、残念です。

仕方が無いのであとから修正液でハートマークを書きました。これはこれで好きな記号が書けて面白いという事で結果オーライです。

f:id:inajob:20211110112212p:plain

キーボードスイッチが基板取り付け用ではなかった

今回家にあったキーボードスイッチは、「パネル取付用」でした、このほかに「基板取り付け用」というものがあり、今回のようにに基板だけでキーボードスイッチを「基板取り付け用」を使うべきでした。

「基板取り付け用」のキーボードスイッチには基板に固定するための足が付いており、これによりまっすぐにキーボードスイッチを固定することが出来ます。

「パネル取付用」を使うと、この足が無いのでキーボードスイッチが微妙に傾いて、ガタガタになってしまいました。

複数のキーボードスイッチに対応したフットプリントを使いたい

キーボードスイッチのフットプリントはCherry MX専用のものを使いましたが、ホットスワップソケットや、ロープロファイルなど、ほかのキーボードスイッチにも対応したフットプリントもあるようで、これら複数のキーボードスイッチに対応したフットプリントを使うと、拡張性がさらに広がると思います。

GitHub - foostan/kbd: for building keyboard libraries に良いフットプリントがあるようです。

キー配列は12x3でもよかったかも

今回なるべくたくさんキーボードスイッチを並べようと13x3の配列にしましたが、 実際に利用してみるとどうも1列多く感じました。

30%キーボードの良いところの一つに、指を横にずらす必要が無い、というがあるのですが、13列だとどうも1列指が左右に動く箇所が出てきてしまい、もてあます感じがありました。

実際キーに文字を割り当てていても1列だけどうにも割り当てが難しい箇所がありました。

少しだけ隙間を開けてマクロキーとして使えるようにすると良いかもしれません。

参考

この記事が非常によくまとまっており、ほとんどこれに従ってキーボードを作ることが出来ました。

zenn.dev

まとめ

自作キーボード、気になってはいたのですが、基板を作るとなるとお値段が・・と躊躇していましたが、ALLPCBの素晴らしいキャンペーンのおかげで、ついにその一歩を踏み出すことが出来ました。

この記事を見て興味がわいた方は → ALLPCB から試してみてください。

流行っているだけあって、周辺ツールが充実しており、プログラミングすることなく、オリジナルの自作キーボードを作ることが出来ました。

皆さんもこの機会に自作キーボードに入門してみませんか?