自作キーボード温泉街の歩き方

自作キーボードの世界は温泉に例えられます。自作キーボードの温泉街の楽しい歩き方を紹介します。

(設計者向け)オートルーターを使って睡眠時間を確保しよう

この記事は自作キーボードアドベントカレンダー2019 その2 21日目の記事です。大幅に寝坊してしまいました…

20日目の記事は@ralfdegenさんの「BleMicroProの拡張パーツを作った話 - 趣味の備忘録」でした。鴨南蛮さんの設計は丁寧でよく考えられているので毎回参考にしています。 MANTA60の再販楽しみです。

 

こんにちは。自キ温泉ガイドのサリチル酸です。

深海探査服・潜水服のイラスト

今回は設計者向けの記事です。配線はとても楽しいのですが、睡眠時間が蒸発してしまうので時短テクニックです。

ところで記事の最初の画像が対象者を示しているって気づいてましたか?

今回は本ブログ初の初心者を想定しない記事です。

はじめに

本記事は自作キーボードの設計者を前提としています。

最低限、Meishiを設計したことがある方を前提に書いています。

Meishiを設計したこと無い方は以下の記事を参考に、まず取り組んでみることをおすすめします。

github.com

自作キーボードはProMicroの搭載を前提とする限り、電子回路としてはとても単純なのでオートルータを利用すると一瞬で配線が完了してしまいますが、色々な制約や注意点があります。

そんなオートルータとうまく付き合って時短しましょう。

Macは持っていないのでMacでどうやるかは知りませんし検証しません。ご了承ください。

電子回路を設計する

foostanさんの自作キーボード設計入門を10回くらい読みましょう。

booth.pm

わからないところはKiCadことはじめを合わせて読んだりしましょう。

私も基板設計とは無縁の仕事をしていますが、この2つを読み込むことでなんとか設計が出来るくらいにはなりました。

レイアウトを決定する

foostanさんの自作キーボード設計入門にも書いてありますが、欲しいレイアウトを決めます。

Keyboard Layout EditerPowerPointチラシの裏などで詰めていきます。

詰める際は実際に使いたいキーキャップを置くと想像しやすいです。

f:id:Salicylic_acid3:20200101152910j:plain

この時点で簡単にキーキャップが揃わない事に気づいて設計変更をしたりします。

早い段階なら手戻りが少ないので必ずやりましょう。

スイッチを並べる

レイアウトが決定したらスイッチのフットプリントを並べましょう。

スイッチのサイズはMX互換では19.05mm四方以上、Chocスイッチでは18×17mm以上で並べましょう。

f:id:Salicylic_acid3:20200101153947p:plain

注意1

特にMX互換スイッチ用のキーキャップのサイズが実測が19.05mm以下だとしても19.05mm以下にすることはおすすめできません。

キーキャップごとにサイズは若干異なるからです。(DSAは特に大きめ)

注意2

フットプリント自体を任意の角度で傾けるとオートルータは動作しません。

※もしかしたら私の環境だけかも?一回そのままやってみてもいいと思う。

外形線を引いてネジ穴を設置する

外形線を引きましょう。

角はだいたい2mmくらいのRで丸めないと触った時に痛いです。

ネジ穴は完成形を想像しながら置いていきます。

0.1mm単位でネジ穴は合わせるようにします。

とはいえ無意味に頭を悩ませるよりも早めに発注して何度かテストしたほうが早いです。

お財布と時間と相談しましょう。

f:id:Salicylic_acid3:20200101154402p:plain

電源線を引く

電源線(VCC、GND)を少し太めの0.5mmで引きます。

なるべく両者が重ならないように、表裏を跨がないように引いていきます。

両者が重なると、Viaを使用しても向こう側に渡れなくなりますし、電源線に無闇にviaを使用すると良くないから(理由はググってね)です。

f:id:Salicylic_acid3:20200101154923p:plain

傾いているパーツの線を引く

オートルータは任意の角度で傾いているパーツには線を引けないようです。

一回やってみてエラーが出る場合は先に引いてしまいましょう。

スタンドアロンモードでPcbnewを起動する

拡張子が「.kicad_pcb」のファイルをダブルクリックし、スタンドアロンモードでPcbnewを開きます。

SpecctraDSNをエクスポートする

「ファイル」→「エクスポート」→「Specctra DSN」を選択し、任意の場所にエクスポートする。

f:id:Salicylic_acid3:20200101155914p:plain

Freerouting.exeをダウンロードする

以下のGithubからダウンロードします。

github.com

実行形式の.exeファイルは「binaries」ディレクトリ配下にありますので、全体をダウンロードしておきます。

f:id:Salicylic_acid3:20200101160604p:plain

.exeファイルは日本語のディレクトリ配下に置くと動かないので「C:\」直下とかに置いておきます。

DSNファイルも同じところに置きます。

Javaをインストールする

大体すでにPCに入ってると思いますが、なければインストールします。

java.com

Javaの入れ方が分からない人は適当にググってね。

FreeRouting.exeを起動する

管理者として実行します。

f:id:Salicylic_acid3:20200101160130p:plain

DSNファイルを開く

f:id:Salicylic_acid3:20200101161116p:plain

開くとこんな感じの画面になる。

f:id:Salicylic_acid3:20200101161326p:plain

オートルータを開始する

「Autorouter」をクリックする。

f:id:Salicylic_acid3:20200101161602p:plain

キー数によりますが、数分~数十分で終わりますのでお茶でも飲んでいましょう。

f:id:Salicylic_acid3:20200101161521p:plain

こんな感じで出来ます。

下にCompletedと小さく出ます。

エラーが出る場合

フットプリントが任意の角度(90°、180°、270°以外)で傾いている場合、エラーが出て終了する可能性があります。

その場合は先に線を引いてからやり直します。

(配線が気に入らない場合)パラメータを設定してやり直す

やけに遠回りしてるとかで気に入らない場合、パラメータを設定してやり直すといいです。

「Parameter」→「Autoroute」→「Detail parameter」をクリックして設定画面を開きます。

f:id:Salicylic_acid3:20200101162241p:plain

f:id:Salicylic_acid3:20200101162333p:plain

コストを調整します。

コストは低いほうが優先度は上がります。(全体のコストが低くなるように選択していく)

つまりvia(基板の表裏を行き来する穴)のコストを上げればviaが少ない基板になります。

逆にコストを下げれば直線が多い基板になります。

色々試してください。

f:id:Salicylic_acid3:20200101162508p:plain

自動配線結果をエクスポートする

「File」→「Export Specctra Session File」→「はい」をクリックするとDSNファイルと同じディレクトリに拡張子が「.ses」のファイルが生成される。

f:id:Salicylic_acid3:20200101163406p:plain

KiCadでインポートする

「ファイル」→「インポート」→「Specctra セッション」をクリックし、先程エクスポートしたファイルを選択します。

f:id:Salicylic_acid3:20200101163557p:plain

こんな感じに反映されます。

f:id:Salicylic_acid3:20200101164036p:plain

手で補正する

そのままでも回路として成立していますが、オートルータでは汚い部分もあるので補正します。

f:id:Salicylic_acid3:20200101164240p:plain

パッドに無意味に近すぎる

f:id:Salicylic_acid3:20200101164434p:plain

基板ギリギリに密集しすぎ

f:id:Salicylic_acid3:20200101164517p:plain

なんでそんなとこ通すかなあ

完成

というわけで完成。

f:id:Salicylic_acid3:20200101164732p:plain

おわりに

設計者向けの記事はいかがでしたでしょうか。

この記事で皆さんの睡眠時間を確保出来ましたら幸いです。

本記事に対して問い合わせ等あれば遠慮なく私のDiscordまでどうぞ。

salicylic-acid3.hatenablog.com

本記事はNaked64SF+Holy RedPandaで書きました。