目次
背景
- 最近、自作キーボードのLily 58 Proと7sProを組み立てた
- その際に、それぞれのキーボードで利用されたマイコンにQMK Firmwareを書き込む必要があった
- そこで、マイコンへのファームウェアの書き込み方法の備忘録を残す
使ったもの
ソフトウェア
OSは次を使用した。
- Windows 11
Arduino IDEのバージョンは以下である。 (マイコンのドライバー用にArduinoはインストールをした)
- その際に、Arduino AVR Boards (ver. 1.8.6)のインストールも行った。
- Menuから、Tools > Board > Board Managerと進み、
AVR
検索すればインストールできる。
QMKは次のバージョンになる。
|
|
QMK toolboxは次になる。
ハードウェア
また、マイコンとパソコンの通信及びリセットの為に次が必要だった。
- Pro Micro
- Arduino Pro Micro互換の中国のマイコンボードのSparkfun Pro Microを使用
- Pro MicroのマイコンはATmega324U4
- ATmega324U4はAVRのマイコン
- データ転送できるMicro USBケーブル
- リセットの為の道具 (OR)
- ブレッドボードとジャンプワイヤー
- ピンセット
注意!
- Micro USBケーブルは「充電専用」と「データ転送専用」がある
- Micro USBケーブルは見た目ではデータ転送ができるかは分からない
- 故に、パッケージを確認するか、使ってみてExplorerが立ち上がるかを確認しないと分からない
- USBトライデントマークがあるからデータ転送ができるとも限らないので注意
前提知識
マイコン
マイコンとは
Googleで調べると次が生成された。
マイコンとは、マイクロコントローラ(Microcontroller Unit、MCU)やマイクロコンピュータの略で、電気機器を制御するための小さなコンピュータ
つまりは、電気的な回路や機械的な部分を制御する半導体チップの事。
マイコンの種類
自作キーボードではArduionoのPro Microがよく使われる。 そのPro MicroはAVR系のアーキテクチャのマイコンである。 他にも有名どころでは、PICやARMがあるが、その種類は以下になる。
- PICマイクロコントローラ
- Microchip Technologyによって開発された
- 低コスト、低消費電力であり、趣味の電子工作から産業用途まで幅広く使用されている
- ARMマイクロコントローラ
- ARM Holdingsによって設計されたアーキテクチャを採用
- 高性能で省エネルギー性に優れており、スマートフォンから組み込みシステムまで広範囲に渡って利用されている
- AVRマイクロコントローラ
- Atmel(現在はMicrochip Technologyが所有)によって開発された
- Arduinoなどの人気のある開発ボードに採用されており、教育や趣味のプロジェクトに広く使われている
- Intel 8051/8052
- Intelによって開発された古典的なマイクロコントローラ
- 教育や一部の産業用途にまだ使われている
- MSP430(Texas Instruments)
- 低消費電力の設計で知られ、バッテリー駆動の携帯機器やセンサー類に利用される
- ESPシリーズ(Espressif Systems)
- WiFiやBluetooth組み込みのマイクロコントローラ
- IoTデバイスやスマートホームアプリケーションに適している
マイコンとマイコンチップとマイコンボードの違い
マイコンとマイコンボードとマイコンチップには次の違いがある。
- マイコン(マイクロコントローラ)
- マイコンは、1つの集積回路(IC)の中にプロセッサ(CPU)、メモリ(RAM、ROM)、入出力のI/Fなどを統合した半導体デバイス
- 一般的に「マイコン」と言った場合、この単一のチップを指す
- マイコンチップ(マイクロコントローラチップ)
- これはマイコンの別の呼び方
- マイコンボード(マイクロコントローラボード)
- マイコンボードは、マイコンチップを含む、より大きな電子基板
- 例えば、ArduinoやRaspberry Piなど
マイコン(Microcontroller)のチップやボードの違いで呼び名が変わるという事。
QMK
QMKについて
- QMKは、コンピューターのキーボードを制御するマイコン用のOSSのファームウェア
- QMKの意味は、Quantum Mechanical Keyboard
- メカニカルキーボード界隈ではよく利用されるファームウェア
QMKのツールについて
主に、以下の3つのQMKのツールを使う。
- QMK Configurator
- Firmware(hexファイル)をオンラインで作成するためのWebsite
- QMK Toolbox
- Firmware(hexファイル)を書き込む為のツール
- QMK MSYS
- Firmwareをローカルで作成するためのツール
NOTE:
- なお、QMK ConfiguratorとQMK MSYSはどちらも
hex
ファイルを作成するのが目的 - そののため、それらどちらか好きな方を使うのでOK
- 次の使い分けになる
- Keymapだけを変更したいならQMK Configurator
- 細かく修正したい場合はQMK MSYS
QMKのツールの使い方
QMK Configurator
QMK Configuratorとは
- QMKが提供しているWebサイト
- キーボードのKeymapの設定を簡便に行うために利用する
- URLはここになる
利用方法
自分のキーボードタイプとレイアウトを選べば、好みのKeymapに設定できる。
設定後にCompleボタンとDLボタンを押下して、hex
ファイルをDLする。
それをQMK Toolboxで焼けばOK。
NOTE:
- なお、Keycode > Quantumにある
Any
は任意のキーを設定できるモノだが、次のリンクのコードを入力する必要がある。
qmk_firmware/docs/keycodes.md at master · qmk/qmk_firmware
QMK MSYS
QMK MSYSとは
- QMK Confugulatorでhexをビルドせずに、ローカルでソースコードからビルドする時に使うツール
- QMKは、MSYS2、CLI、および必要な全ての依存関係のバンドルしている
MSYSとは
- MSYS (Minimal SYStem)は、Windows上で動作するUNIXシェル(Bash)や各種ツール類(gawk, sed, tarなど)を統合したプログラム開発環境を提供するパッケージ
- コンパイラ環境である、MinGW(Minimalist GNU for Windows)をより使い易くサポートするもの
- MinGWを導入すれば、gcc/g++コンパイラや各種開発ツールを用いてシェル環境上でC/C++言語プログラムを開発できる
- MSYSはMinimal SYStemの略
一言で言えば、WSLが無かった頃に使われていたWindows上のLinuxの開発環境。
QMK MSYSのインストール方法
QMK MSYSからexeファイルをダウンロード。 それを実行する。
すると以下のようにshellが立ち上がる。 自分の場合はMSYSをインストール後次のようになった。
|
|
その後、qmk setup
を行う。
Submoduleも含めてCloneするので時間がかかった。
|
|
これにてqmkのセットアップは完了。
自分のカスタムkeymapを作成する
qmk_firmware/keyboards
フォルダ以下にレイアウト毎のキーマップフォルダが作成されているので、好みのキーボードで自分のkeymapフォルダを作る。
例としてlily58
のキーマップを作る。
lily58
フォルダは次にある。
|
|
このlily58
のフォルダのkeymaps
以下にlily58のキーボードのキーマップの設定例がある。
|
|
そこでlily58l
のフォルダをコピーして同じ階層にmylily58
を作成する。
以下のような感じになる。
|
|
そのmylily58
の中のkeymap.c
を変更すればキーマップを変更できる。
下はkeymap.c
の中身の一部。
|
|
変更が終わったら今回作ったmylily58
をビルドする。
一旦qmk_firmware
のリポジトリのルートフォルダまで行く。
|
|
ここで次のコマンドを実行しビルドする。 なお、ビルドに関してはMSYSから行う(自分はWSLから行ったらフリーズしたため)。
|
|
すると、同じ階層にmylily58
のhex
ファイルが生成される。
|
|
このhexファイルをマイコンに焼き付ける。
QMK Toolbox
QMK Toolboxとは
- QMKでFirmwareをマイコンに書き込むだめの、Windows / Macアプリ
- ビルドしたHexファイルをマイコンに書き込むため利用する
インストール方法
このReleases · qmk/qmk_toolboxページから、
最新のバージョンのqmk_toolbox_install.exe
を選択して、DLしてインストールする。
ファームウェアの焼き方
MIC / Microcontrollerの箇所で今回のマイコンであるATmega324U4
を選択する。
また、load fileはQMK MSYSかQMK Configurationで作成した.hex
ファイルを選択する。
TIPS:
- auto-flashを選択するとマイコンがリセットされた際に、自動的に書き込まれる。
- Pro microはリセット後に8sしか書き込み状態にならないので、auto-flashを選択すると便利である。
次にPro microのpinoutを示す。
Pro MicroはGNDとRSTを2回ショートさせるとリセットモードになる。 次の写真のようにブレッドボードにさしてジャンプワイヤーを使ったり、ピンセットで短絡させたりする。 QMK toolboxを起動していればログが吐かれるので、それで確認をしても良い。 その際に、RX LEDとTX LEDが微笑に光るので、それでリセットされたかを確認することも可能。
リセットが完了し書き込まれると、次のようなログが流れる。 これは書き込みが完了したと事を示す。
|
|
これで書き込みは完了である。
なお、USBケーブルを抜き差しをするとQMK Tookboxで次のようなログが残る。 ArduinoをでインストールされたArduino Leonardoのドライバが働いて、Pico Microのブートローダーが認識されていると言う事である。
|
|
参考文献
- QMK
- QMK MSYS
- QMK Configurator
- qmk_firmware/docs/keycodes.md at master · qmk/qmk_firmware
- QMK Firmware
- 【 5分でわかる!】マイコン(マイクロコントローラー)の種類 | 半導体・電子部品とは | CoreContents
- (初心者編)自作キーボードにファームウェアを書き込む - 自作キーボード温泉街の歩き方
- qmk_firmware/docs/ja/newbs_getting_started.md at master · qmk/qmk_firmware
- Windows development (MSYS2)
- 【特集】このUSBケーブル、何に使えるんだっけ?見た目で分からない仕様の判別法 - PC Watch
- 同じ形に見えるけど充電できる・できない「USBケーブル」の不思議 | エンジョイ!マガジン
- Pro Micro & QMK Firmware のセットアップガイド (Let’s Split編) - Voxel Highway