Fusion PCBAでハードウェアを「コンパイル」する

# イントロダクション
ソフトウェアと比較してハードウェアの「コンパイル」は面倒です。プリント基板CADで設計したらプリント基板を製造し、部品を調達し、部品をプリント基板に実装する必要があります。物理的なプロセスがいくつも入るため、時間がある程度かかるのは仕方ないとして、細かなやり取りにかなりコストがかかります。そんな中で、設計後のデータを投げておいたらプリント基板の製造から実装までを勝手に行ってくれるサービスがいくつか登場してきました。

Fusion PCBA Prototype Serviceは中国の深圳にあるSeeed Studioが提供する製造サービスの一つで、PCB（プリント基板）の製造だけでなく部品の実装まで行ってくれるものです。使用できる部品はSeeed Studioが定める「[Open Parts Library](http://www.seeedstudio.com/depot/OPLopen-parts-library-catalog-c-136_138/)」の中の部品を使用することで、2個から100個までの製造を簡単に行えます。

# 手順
手順は非常に簡単です。

1. Open Parts Libraryに対応したプリント基板CAD「Eagle」用の[ライブラリ](http://www.seeedstudio.com/wiki/File:OPL_eagle_library.zip)をウェブサイトから入手します
2. そのライブラリにある部品だけを用いてEagleでプリント基板を設計します
3. プリント基板製造用のガーバーデータに加えて部品リスト（BOM：Bill Of Materials）をFusion PCBA Prototype Serviceに提出します

# 実例
今回試しにつくってみたのは、最近話題のWi-Fiモジュール「ESP-WROOM-02」をブレッドボードで使用するための変換基板です。

![ESP-WROOM-02_OPL_v0_sch.png](https://qiita-image-store.s3.amazonaws.com/0/92577/1914253e-4af3-7bf7-8f83-210ae713249f.png)

![ESP-WROOM-02_OPL_v0_brd.png](https://qiita-image-store.s3.amazonaws.com/0/92577/0e84ab45-feac-6233-8d59-1a030c0a2454.png)

プリント基板の設計が終わったら、Fusion PCBA Prototype Serviceのウェブサイトにアクセスし、Eagleから出力したガーバファイルをまとめたZIP形式のファイルをアップロードします。ここで、プリント基板の枚数や仕様などを指定します。

![FireShot Capture 5 - Fusion PCB, customize PCB proto_ - http___www.seeedstudio.com_service_index.php.png](https://qiita-image-store.s3.amazonaws.com/0/92577/6ec4100d-9c13-366b-8c8c-9f4fdc7a4f59.png)

ガーバファイルのアップロードが終わったら、画面下の「PCB Assembly」ボタンをクリックして次の画面に進みます。ここで、部品リスト必要になりますので、Eagle上で準備します。まず、Eagleの回路図エディタ上でbom.ulpを実行します。

![スクリーンショット 2015-10-02 12.20.40.png](https://qiita-image-store.s3.amazonaws.com/0/92577/c1b6c8d6-a0ff-b80c-3a1b-e9c3c51d3b29.png)

すると次のようなウィンドウが表示されますので、形式にCSVを選択してファイルに保存します。

![スクリーンショット 2015-10-02 12.22.13.png](https://qiita-image-store.s3.amazonaws.com/0/92577/6eaf3922-77e4-38eb-2064-62c987dd30a7.png)

このファイルをもとに、Fusion PCBA Prototype Serviceで指定されているテンプレートに沿った部品リストファイルを作成します。テンプレート「Please format your BOM file according to the template.」の最後にリンクされています。

![FireShot Capture 6 - Fusion PCB, customize PCB proto_ - http___www.seeedstudio.com_service_index.php.png](https://qiita-image-store.s3.amazonaws.com/0/92577/fe25b2bc-0f93-a7ef-4d9d-88588ffda7b5.png)

ダウンロードされたBom-template.csvの中身は次のようになっています。

```csv:Bom-template.csv
Part/Designator,Manufacture Part Number/Seeed SKU,Quantity
C1,RHA0J471MCN1GS,1
"D1,D2",CC0603KRX7R9BB102,2
```

このままだと見にくいので表で整理すると以下のようになります。

| Part/Designator | Manufacture Part Number/Seeed SKU | Quantity |
|:----------------|:----------------------------------|:---------|
| C1 | RHA0J471MCN1GS | 1 |
|D1,D2|CC0603KRX7R9BB102|2|

先ほどEagleから出力したCSVファイルを、Part/Designator（部品番号）、Manufacture Part Number/Seeed SKU（Seeed Studioの部品番号）、Quantity（数量）が並んだものとして整形して用意します。その際、この例でのD1とD2のように、同じ部品があれば同じ行にまとめます。この編集はExcelやOpen Officeなどを用いて行うと良いでしょう。

今回の例として紹介したESP-WROOM-02用変換基板の場合には次のようになりました。

```csv:example.csv
Part/Designator,Manufacture Part Number/Seeed SKU,Quantity
C1,302020002,1
C2,302020021,1
D1,304090043,1
"D2,D3",304020026,2
"R1,R2,R3,R4,R6",301010299,5
R5,301010298,1
"SW1,SW2",311020045,2
U1,310030095,1
USB1,320010003,1
```

同じく表で整理すると以下のようになります。

| Part/Designator | Manufacture Part Number/Seeed SKU | Quantity |
|:----------------|:----------------------------------|:---------|
|C1|302020002|1|
|C2|302020021|1|
|D1|304090043|1|
|D2,D3|304020026|2|
|R1,R2,R3,R4,R6|301010299|5|
|R5|301010298|1|
|SW1,SW2|311020045|2|
|U1|310030095|1|
|USB1|320010003|1|

このファイルを先ほどの画面から「Select Your BOM」ボタンをクリックしてアップロードすると、ファイルが解析され、画面に表示されるとともに自動的に価格も計算されます。ここで再度間違いがないことを確認したら、カートに入れると注文できます。

![FireShot Capture 8 - Fusion PCB, customize PCB proto_ - http___www.seeedstudio.com_service_index.php.png](https://qiita-image-store.s3.amazonaws.com/0/92577/af834c1d-45dc-7fad-7163-a8b8d5a144c4.png)

今回の場合には、日本への送料を含めて実装済みの基板10枚で約13,000円でした。1枚当たりにすると約1,300円ということになりますね。期間はプリント基板の製造が約3営業日、実装が約3営業日でした。発送時に荷物のピックアップに連絡の行き違いがあったらしく、9/14にオーダーして届いたのは9/28でしたが、このミスがなければ2週間かからずに届いていたかもしれません。

![スクリーンショット 2015-10-02 13.12.22.png](https://qiita-image-store.s3.amazonaws.com/0/92577/880c50a5-c154-f08e-53a7-2a96b3849451.png)

![写真 2015-10-03 9 46 00.jpg](https://qiita-image-store.s3.amazonaws.com/0/92577/76e1b208-7a18-fd5f-f94e-f6211f62ea0f.jpeg)

# まとめ
手順さえわかってしまえばFusion PCBA Prototype Serviceはかなり簡単に利用できます。セットアップ費用は高くなりますが、Open Parts Libraryに加えてDigi-KeyおよびMouserで購入できる部品も指定することができます[^1]。ソフトウェアのコンパイルと比較するとやはり時間はかかりますが、かなり手間は軽減されるため、うまく活用すると便利なサービスになるのではないかと思います。

[^1]: その際に指定するのはDigi-KeyやMouserの部品番号ではなく、製造元の番号であることに注意しましょう。Digi-KeyやMouserの部品番号を指定するとBOMをアップロードした段階でエラーとして処理されてしまいます。

# 参照
* [Fusion PCBA Specification](http://support.seeedstudio.com/knowledgebase/articles/457797-fusion-pcba-specification)