KiCad において、スルーホール部品を部品配置情報に追加して、JLCPCB の PCBA をオーダーする

#1. はじめに
　JLCPCB[^11] は、中国のプリント基板 (PCB) 業者で、PCB の生産および部品搭載 (PCBA) の試作をしてくれます。JLCPCB の PCBA は格安ですが、他のプリント基板業者とは異なり、JLCPCB が在庫している SMT 部品のみ、片面の実装のみ、数量も 30 枚までと、かなり限定されたサービスでした。今後、サービスの範囲を段階的に広げるとしています。現在、スルーホール (THT) 部品の手作業によるはんだ付けサービスが可能となっています[^12]。

- PCB: Printed Circuit Board
- PCBA: PCB Assembly
- SMT: Surface Mounted Technology
- THT: Through Hole Technology

[^11]: [JLCPCB](https://jlcpcb.com/)
[^12]: [JLCPCB: SMT Assembly](https://jlcpcb.com/smt-assembly)

#2. JLCPCB の PCBA
　格安 PCBA のために自動化が進められています。PCBA に必要な部品表 (BOM) や部品配置情報 (CPT, PNP) を CSV 形式で利用者がアップロードすると、Web 上で部品の在庫状況、プリント基板上の部品配置シミュレーション、フットプリントの整合性などが自動的にチェックされます。最終的には JLCPCB の技術者による確認や修正、パネライズ、基準マーク (Fiducials) の追加があります。JLCPCB のサイトに KiCad[^13] で BOM や CPL を作成する手順が 詳しく書かれています[^14]。

#### BOM
　BOM には LCSC[^15] の部品番号が必要です。LCSC 番号は JLCPCB の部品管理にも使用されています。KiCad の回路図エディタ Eeschema において BOM の出力を JLCPCB が指定する様式とするためのスクリプト[^15]が用意されています。部品ライブラリに LCSC 番号を予め埋め込んでおくことで自動的に LCSC が BOM に反映されます。一般部品のライブラリ修正は面倒なので、出力された BOM の CSV ファイルで空欄となっている LCSC 番号を手修正する方が楽と思います。THT 部品も同様に LCSC 番号を付加します。
　以下の BOM では、トリマコンデンサ C5 と GROVE コネクタ J1, J2 の LCSC での扱いがなく、LCSC 番号がありません。
![bf-027_1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/378410/1b1bcd0c-bd7e-54f6-c6e2-99d9b7c0f7fc.png)

#### CPL
　KiCad の PCB エディタ Pcbnew で部品配置情報 POS を CSV で出力し、タイトル行を修正して CPL を作成します。JLCPCB は THT 部品も SMT 部品と同じ形式で設計情報の受け渡しをすることを要求しています。しかし、KiCad が POS に出力するのは SMT 属性を持っている部品のみです。

- BOM(Bill of Materials)
- CPL(Component Placement List)
- PNP(Pick & Place)
- CSV(Comma Separated Values)
- POS(Position)

[^13]: [KiCad](https://www.kicad.org/)
[^14]: [JLCPCB: How to generate the BOM and Centroid file from KiCAD](https://support.jlcpcb.com/article/84-how-to-generate-the-bom-and-centroid-file-from-kicad)
[^15]: [LCSC](https://lcsc.com/)

#3. POS データに THT を載せる苦肉の策
　THT 部品の属性を THT から SMT に変更します。KiCad の POS に、これら THT 部品の配置情報が含まれる様になります。THT 部品が標準ライブラリにある場合、ローカルのライブラリにコピーして修正する必要があります。THT から SMT に変更することによる副作用については不明です。
　以下は、ピンソケット (１列 3P, 水平型）のフットプリントを標準ライブラリからコピーしてきたものです。
![bf-027_6.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/378410/ec171dcd-05c8-6971-51bd-04f3c7014da3.png)

　「フットプリントのプロパティ (Footprint Properties)」を開き、「基板製造用の属性 (Fabrication Attributes)」を「スルーホール (Through Hole)」から「表面実装 (Surface Mount)」に変更します。
　![bf-027_7.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/378410/05ac6bef-6ec6-dbcf-e8c1-0f84f27414c3.png)

　POS を出力すると、属性を SMT に変更した THT 部品 (J3, Y1) も含まれています。
![bf-027_5.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/378410/3b7639af-9502-ca93-4908-85576e31551d.png)

　JLCPCB の QUOTE 画面で Gerber, BOM, CPL(POS) をアップロードすると、部品一覧が表示されます。THT 部品　(J1, Y1) は、[Hand-soldering] と表示されています。 
![bf-027_2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/378410/d21e1f9e-2b41-8973-1ff3-b439d0f7b7bd.png)

　上記画面で、PCBA の対象外の部品を指定できます。ここでは C4 のチェックを外し対象外にしています。配置情報がないか、LCSC 部品番号がないものは、既に対象外になっています。
![bf-027_3.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/378410/b53eff54-a596-4951-7f0f-051cd03d16cb.png)

　基板上の部品配置シミュレーション結果が表示されます。C4 は SMT 部品なのに部品がないことが赤枠で示されています。J3 には黒い部品シルエットの上にハンダゴテの図案が赤で示されています。Y1 も同様にハンダゴテが表示されるはずですが、今回は見当たりません。配置に問題がある場合には、戻って修正した POS をアップロードし直します。部品の回転指定が合わないことが多いです。THT 部品の場合は位置ずれもありました。JLCPCB のレイアウト表示画面にもいろいろ不具合があり、JLCPCB の技術者が支援します。
![bf-027_4.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/378410/cf37d852-843e-6a1e-db58-39130c7a0283.png)
![bf-027_8.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/378410/ee6bf514-71b0-3231-5da3-9f986d713585.png)

#4. おわりに
　THT 部品を SMT に化かすことは筋が良いとは言えず、一時しのぎの回避策に過ぎません。JLCPCB 以外の基板業者が THT 部品を実装する場合、拠り所は基板上のシルク印刷であったり、別途準備する実装図面だったりします。技術者が事前に読み取って製造へ指示書を作成することになります。JLCPCB のアプローチでは、THT 部品の実装情報を SMT と同等としたことで準備作業が自動化され、技術者の準備作業の軽減が図れます。これは進歩だと思います。KiCad が THT 属性も POS に出力するオプションを備えてくれれば解決[^16][^17]します。
　JLCPCB が提供している基板 CAD EasyEDA[^18] ではこのあたりが解決されているものと推測されます。


[^16]: [KiCad INFO: Through hole parts (THT) in position files - missing ?!](https://forum.kicad.info/t/through-hole-parts-tht-in-position-files-missing/19927)
[^17]: [reddit: Missing footprints in my pos file](Missing footprints in my pos file)
[^18]: [EasyEDA](https://easyeda.com/)