JavaScriptを有効にしてください

[自作キーボード]ファームウェア作成用ツールを調べた

 ·  ☕ 4 分で読めます

概要

経緯

初心者が自作キーボードを製作するにあたり、物理設計の基本についてはネットや書籍で学ぶことができる。
しかしファームウェアの作成についてはQMK Firmwareを使用する前提となっている情報が多い。
Pro microを使用する場合にはQMK Firmwareが使用できるので、その場合は特に問題ない。
今回使用するボードはPro microで使用されているATmega32U4とは異なり、nRF52840が搭載されている。
QMK Firmwareではライセンス的な問題がありnRF52840への書き込みに対応していないらしい。
https://github.com/qmk/qmk_firmware/issues/18556
arduino IDEを使用してプログラムを自作することも可能だが、無線通信やレイヤー機能などを初心者がゼロから実装していくのは現実的ではない。
そのためQMK Firmware以外のツールを探すことにした。

調べたもの

KMK firmware

CircuitPythonで記述されたファームウェアで無線接続やLEDの制御も対応している。CircuitPythonを使用する場合にはまずボード用に作成されたCircuitPythonを入れる必要がある
https://circuitpython.org/board/ssci_isp1807_micro_board/

上記をボードに入れた状態で、KMK firmwareの使用手順に従ってファームウェアを作成すれば良さそうだが、うまく動かすことができなかった。
作業をする上で発生した問題としては容量が不足していてKMKのディレクトリをコピーすることができないことがあった。
https://zenn.dev/74th/scraps/c59fb553c9309f
上記サイトでmpy-crossを使用して容量を減らせることが記載されていた。
mpy-crossの導入にあたっては作業時点でmacos12に対応するものがなかったので、11のものを使用した。
https://adafruit-circuit-python.s3.amazonaws.com/index.html?prefix=bin/mpy-cross/
一応それでもコンパイルはできたけど、最終的に動かなかったのはこの辺りが原因かもしれない。
使用するOSとCircuitPythonのバージョンに対応するものを使用すべきだったが、環境を整えるのが手間に感じたのでそこまでのモチベーションが保てなかった。(後述のBlueMicro nRF52 Keyboard Firmwareの存在を認識してたのでそっちを試せば良いかと思ってた)
あとコンパイルした後でも入りきらなかったので使用しなさそうなファイルを削除した部分もあり、動かなかった原因の切り分けができてない。

ZMK Firmware

こちらは調べたものの最初に使用するボードの設定があり、できなさそうな雰囲気だったので試していない。
https://zmk.dev/docs/user-setup

BLE Micro Proのファームウェア作成ツール

ブートローダーが違うのでできないだろうと思いつつ一応試した。
uf2ファイルの作成まではできたが、それをボードに書き込むときにエラーとなって完了できなかった。

BlueMicro nRF52 Keyboard Firmware

これを使用すると一応キーボードとして機能するところまでは行けた。
無線接続で、左右分割キーボードとして動作。レイヤー機能も使用できた。
動作確認にあたってはドキュメントに記載の方法で既存のキーボード用の設定を作成し、作成されたファイルを一部修正してarduino IDEを使用してボードに書き込んだ。
本来の使用方法では生成されたUF2ファイルをドラッグアンドドロップで書き込みを完了できるとのことだったが、ブレッドボードで試すためにピン配置等を変更したかったので生成後のファイル内容を修正した。

その他

ブレッドボードを使用して簡単に動作確認を行っただけなので、今後不具合があるかもしれないがひとまず BlueMicro nRF52 Keyboard Firmware を使用する方針で進める。
本体設計を進めていきたいが、いきなり全部を完成させるのは難しそうなので、一旦2x2とかの小さいサイズで電池搭載できる基盤を作成を目指す。
検証で使用したものの一覧についてはこちら


書いた人
keee
Webエンジニア

目次