JSONからフットプリントを自動配置するスクリプトを作った
前置き
キーボードを作ろう!と思い立ち、キーマトリクス回路を理解して、KiCadのEeschemaでスイッチとダイオードを結線して、フットプリントを関連付けして、pcbnewを開いて、「うわメンドクサイ」と思った経験はありませんか?僕は毎回思います。
なので、フットプリントを自動配置するスクリプトを作りました。
Keyboard Layouter Plugin
Keyboard Layout Editor (KLE) のJSONからスイッチのフットプリントを自動配置します。
インストール
keyboard_layouter.py をダウンロードし、以下のディレクトリに置くだけです。
- Windowsの場合
- %APPDATA%/Roaming/kicad/scripting/plugins
- macOSの場合
/Applications/KiCad/kicad.app/Contents/SharedSupport/scripting/plugins- ~/Library/Preferences/kicad/scripting/plugins
- Linuxの場合
- ~/.kicad/scripting/plugins
Quick Start
簡単に試せるようにJSONと回路のサンプルを用意しました。
これをダウンロードしてKiCadを起動し、pcbnewを開くと以下のようになっていると思います。
「ツール」→「外部プラグイン」→「Keyboard Layouter」を選択します。
KLEで作成したJSONを指定します1。ここではErgoDoxのJSONファイルを選びました。
スイッチを移動させたいときは"Switch"のチェックボックスにチェックを入れます。 ダイオードも一緒に移動させたいときは"Diode"にもチェックを入れます。スイッチの原点からどれだけオフセットを持たせて配置させるか、表裏反転させるかを設定することができます。設定が終わったら、最後に"Run"ボタンを押します。
それっぽく配置されました🎉
制限事項
- 1uのキー間隔は19.05mmです
- 対応しているスイッチのフットプリントはkicad-footprints/Button_Switch_Keyboard.prettyのCherry MX Switchのみです。
- 使えるスイッチのサイズは以下の通りです。これ以外のサイズ、例えば1 x 1.5などは現状では扱えませんが、1.5 x 1を90度回転させることはできます
- 1.00u (1 x 1)
- 1.25u (1.25 x 1)
- 1.50u (1.5 x 1)
- 1.75u (1.75 x 1)
- 2.00u (2 x 1, 1 x 2)
- 2.25u (2.25 x 1)
- 2.75u (2.75 x 1)
- 6.25u (6.25 x 1)
- ISO Enter
- 使えるスイッチのサイズは以下の通りです。これ以外のサイズ、例えば1 x 1.5などは現状では扱えませんが、1.5 x 1を90度回転させることはできます
最後に
まだまだバグがあるかもしれません。ご使用の際は自己責任で、目視確認を!(Issue, PRいただけると喜びます)
皆様のキーボードづくりの一助になれば幸いです。
参考
- Documentation/development/pcbnew-plugins.md · f0ef18fb9e24ac94d6f595f87ded98aa41925ba0 · KiCad / KiCad Source Code / kicad · GitLab
- KiCad用のPythonスクリプト ~ ほぼ回路図の配置通りにフットプリントを予備配置する - Qiita
- KiCadのPython scripting機能を使ってみる : 東京工業大学 ロボット技術研究会
- KiCAD PCBnew マクロ - N->N->N
- ruiqimao/qmkbuilder: Online GUI for QMK Firmware
- ijprest/keyboard-layout-editor: Web application to enable the design & editing of keyboard layouts
- wxPython | Python-izm
-
左上の凡例をスイッチのリファレンス番号にする必要があります。↩