JSONからフットプリントを自動配置するスクリプトを作った

前置き

キーボードを作ろう!と思い立ち、キーマトリクス回路を理解して、KiCadのEeschemaでスイッチとダイオードを結線して、フットプリントを関連付けして、pcbnewを開いて、「うわメンドクサイ」と思った経験はありませんか?僕は毎回思います。

f:id:yskoht:20190401004223p:plain
作業を始める最初の状態。ここからキーボードの形に部品を配置していく

f:id:yskoht:20190401003527p:plain
作業完了した状態

なので、フットプリントを自動配置するスクリプトを作りました。

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
  • Linuxの場合
    • ~/.kicad/scripting/plugins

Quick Start

簡単に試せるようにJSONと回路のサンプルを用意しました。

これをダウンロードしてKiCadを起動し、pcbnewを開くと以下のようになっていると思います。

f:id:yskoht:20190401010057p:plain

「ツール」→「外部プラグイン」→「Keyboard Layouter」を選択します。

f:id:yskoht:20190401010431p:plain

KLEで作成したJSONを指定します1。ここではErgoDoxのJSONファイルを選びました。

スイッチを移動させたいときは"Switch"のチェックボックスにチェックを入れます。 ダイオードも一緒に移動させたいときは"Diode"にもチェックを入れます。スイッチの原点からどれだけオフセットを持たせて配置させるか、表裏反転させるかを設定することができます。設定が終わったら、最後に"Run"ボタンを押します。

f:id:yskoht:20190401011742p:plain
実行が完了した状態

それっぽく配置されました🎉

制限事項

  • 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

最後に

まだまだバグがあるかもしれません。ご使用の際は自己責任で、目視確認を!(Issue, PRいただけると喜びます)

皆様のキーボードづくりの一助になれば幸いです。

参考


  1. 左上の凡例をスイッチのリファレンス番号にする必要があります。