分割トラックボール自作キーボード作成の記録（PCB作成編）

## はじめに

前回はトラックボールが動作するところまで確認できた。
今回はキーボード本体のPCBを作成していく。
キーボード本体のPCB設計はEasyEDAではやりにくい（ホットスワップソケットのフットプリントがない）ため今回はKiCadを使用していこうと思う。

## KiCadインストール

https://www.kicad.org/download/windows/
ここから最新バージョンをダウンロードすることができる。

自作キーボード関係のシンボル・フットプリントのライブラリはサリチル酸さん（ @Salicylic_acid3 ）のものを使用させてもらう。

https://github.com/Salicylic-acid3/KiCAD_FootPrint

また下記のライブラリを追加した。

* SeeedStudio_XIAO_nRF52840
* S2B-PH-K-S

https://github.com/Seeed-Studio/OPL_Kicad_Library/tree/master/Seeed%20Studio%20XIAO%20Series%20Library

https://www.digikey.jp/ja/models/926626

## PCB設計

ライブラリをすべて追加できたら早速回路設計をしていく。

ただEasyEDAよりKiCadは直感的にはさわれなかったので躓いた箇所を残しておく。

### シンボルを配置

「A」を押すと出てくる。それか右側にあるメニューから「シンボルを配置」を押すとメニューが出てくる。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4097244/3bf45d05-d269-46ea-8d73-b48c8ed84598.png)

### フットプリントの割り当て

配置したシンボルに対してフットプリントを割り当てる必要がある。
※EasyEDAではLCSCからシンボル・フットプリントも割り当てられる。（初心者にすごく優しい）
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4097244/a9ad3173-8ba5-4c07-8d86-131ce8a8ae25.png)

あとはワイヤーを引いて完成。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4097244/13e18554-52d0-4587-a1d1-526b5861cf76.png)


### PCBエディタ

まず基盤の外形「Edge.Cuts」を設定する必要があるため、Fusion360からインポートする。
DXFファイルを入れる必要があるが、検索して出てくる「投影・交差」の方法だとうまくできなかった。

うまくインポートできる方法は、インポートしたい面を選択して「スケッチを作成」→左側のブラウザから「DXFをエクスポート」を選択する。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4097244/57515fe4-7321-4429-ab1d-d00e5128a031.png)

Fusion360からエクスポートしたDXFをKiCadにインポートする。
その時レイヤーは「Edge.Cuts」を選択する。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4097244/52ff70e0-6a5e-4b5b-9b84-0cba446e214d.png)

プラストッププレートもインポートする。
トッププレートはキー配置を確認するために使用するのでレイヤーは「User.Drawings」にしておく。

次に「回路図から基盤を更新」を押してフットプリントをPCBエディタに反映させる。
あとはソケットをUser.Drawingsの場所を頼りに配置していく。
※フットプリントを自動配置してくれるスクリプトがあるらしいが17mmピッチ非対応なので手動で配置する。
※EasyEDAはAutoRouteで自動配線してくれるがそんな機能はなさそう…

部品の配置が終わったらワイヤーを引いて完成。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4097244/3f81fed6-4aa8-4c46-9b80-b029edb74a1e.png)

### Gerberファイル作成

メニューバーのプロットからGerberファイルを作成する。
出力するレイヤーを選択してプロットを押す。

下記の項目を選択しておく。
* F.Cu
* B.Cu
* F.Paste
* B.Paste
* F.Silkscreen
* B.Silkscreen
* F.Mask
* B.Mask
* Edge.Cuts

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4097244/c8d4867f-eb85-4517-8385-494c19416428.png)

プロットが完了したらそのままドリルファイルを作成する。
ここは特にいじらずそのまま生成を押す。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4097244/9e5e4ccb-f551-4398-8be6-2cf1022dca3f.png)

出力したフォルダをZip圧縮してJLCPCBにアップロードする。

## 動作確認

![IMG_20250601_234417.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4097244/f0d39248-2bf9-4be7-9e3b-a3c12947f32a.jpeg)

届いた基盤の動作確認をしてみる。

![IMG_20250601_234514.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4097244/ccf5e3c8-7a28-4b16-a551-c530aa6f7b9b.jpeg)

![IMG_20250601_234536.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4097244/f3fff746-b47b-4f47-a994-7652829696b3.jpeg)

仮組の状態でファームウェアを焼いてトラックボールとキーが反応するか試してみる。
![test_trackball.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4097244/ea36f554-1e9f-4941-abbd-8db1721e951b.gif)

バッテリー接続・Bluetooth接続でも動作した。
キーについてもピンセットでショートさせて動作することが確認できた。

## 最後に

PCBの設計から動作まで確認できた。
ただ実際にPCBが来てから改善点が見つかった。

* 基盤が左右非対称（3Dプリンターで印刷したときに気づくべき）
* トラックボールの基盤とソケットが干渉する
* トラックボール周辺に無駄な場所が多い

ということでせっかく作った基盤は水の泡に…

次回は改めて基盤を再設計していく。