ALLPCBの試作基板無料クーポンでキーボードの基板を作ってみました。
allpcb.com
100x150mmのサイズまでですが、毎月1回送料も無料で試作ができるようです。
クーポン発行のルールが変更されたようです。
マクロパッドや分割キーボードなら40%ぐらいのキーボードが作れそうです。
設計だけして放置していた基板を注文してみました。
ガーバーファイル
ガーバーファイルの出力は以下を参考にしました。
allpcb.blogspot.com
elecrowなどで提出していた形式で問題ありませんでした。
到着
注文した翌日には製造が完了して、1週間で手元に届きました。(8/24注文、8/31到着)
今回作ったのは、狭ピッチ格子配列の36キー分割キーボードです。(前回作ったキーボードの格子配列版です。)
5枚の注文でしたが、おまけ?で6枚ありました。分割キーボードは基板2枚で1台なのでちょうどよかったです。
ケース
トッププレートとボトムケースは3Dプリンタで出力しました。
組み立て
部品をはんだ付けしていきます。
OLEDディスプレイ保護用のアクリルプレートを作っていないので、OLEDディスプレイなしで組み立てました。
前回作成したキーボードと比較して、格子配列なので少しコンパクトになりました。
QMKファームウェア
久しぶり手元にあるQMKファームウェア(0.13.20)をアップデート(0.14.6)するとファームウェアのビルドでエラーになったので、備忘録として残しておきます。
QMKファームウェアは開発が活発で日々更新されています。QMKファームウェアに登録されているキーボードは問題ないと思うのですが、個人的に作っているキーボードのファームウェアでは互換性のないアップデートがあるとビルドがエラーになったり、挙動が変わったりします。(特に問題がなければ、キーボードを作った時点のQMKのバージョンを使用してアップデートはしないほうが良いかもしれません。)
私の使っている範囲では分割キーボード周りの仕様で変化がありました。
ビルドエラー
エラーはOLEDディスプレイ関係の関数が見つからないというもので、MakefileでOLEDディスプレイを有効にするために指定する定義が変更されていたことが原因でした。
# rules.mk # OLED_DRIVER_ENABLE = yes OLED_ENABLE = yes OLED_DRIVER = SSD1306
WPM
分割キーボードのスレーブ側でWPMの値が正しく取得できなくなっていました。
WPM値はWPMを有効(WPM_ENABLE=yes)することでスレーブ側でも取得できていたのですが、以下を定義しないとマスター側からスレーブ側に送信されるデータにWPM値に含まれなくなっていました。(quantum/split_common/transport.hを参照)
// config.h #define SPLIT_WPM_ENABLE
スレーブ側のOLEDディスプレイの点灯/消灯
スレーブ側のOLEDディスプレイの点灯/消灯にはWPM値を使用して、WPM値が0の状態が一定時間続くとスレーブ側のOLEDディスプレイを消灯するといった処理をしていました。(なぜかスレーブ側はOLEDディスプレイのタイムアウト時間が適用されず、ずっと点灯した状態になっていました。)
マスター側とスレーブ側のOLEDディスプレイの点灯/消灯が同期する機能が新たに追加されていました。WPM値による処理が必要なくなりました。
// config.h #define SPLIT_OLED_ENABLE