自作基板を Fusion PCBに発注して、FPGA ミニチュア X68000 のフロントLEDを光らせてみた一部始終

コロナ禍のこの数ヶ月、週末はどこにも出かけられないので、X68000のミニチュアを作っていました。こんな感じです。
![IMG_4616-conv.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/41616/17cebb37-8176-621b-bbbc-f883beb5e564.jpeg)

中身は DE0-CVというFPGAボードに拙作のI/O基板を載せたものです。FPGAのロジックはプー氏が作成したものに若干カスタマイズを入れたものを使用しています。

こんな感じで実際に動きます。

<blockquote class="twitter-tweet"><p lang="ja" dir="ltr">そういえばちゃんと撮ってなかった、<a href="https://twitter.com/zinfyk?ref_src=twsrc%5Etfw">@zinfyk</a> 冬木さんのミニチュアディスプレイとのコラボ。<br><br>音がプチプチ言ってるのはこちらの回路の問題……。そのうち直したいです😅<a href="https://twitter.com/hashtag/fpga?src=hash&amp;ref_src=twsrc%5Etfw">#fpga</a> <a href="https://twitter.com/hashtag/X68000?src=hash&amp;ref_src=twsrc%5Etfw">#X68000</a> <a href="https://t.co/hqOXszV0Jv">pic.twitter.com/hqOXszV0Jv</a></p>&mdash; くにちこ（Kunihiko Ohnaka） (@kunichiko) <a href="https://twitter.com/kunichiko/status/1299601323373940738?ref_src=twsrc%5Etfw">August 29, 2020</a></blockquote> <script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>

# フロントパネルを光らせたい

ここまでできてくると、やはりフロントパネルも実際の動作に合わせて光らせたくなってきます。

X68000のフロントパネルには以下の7つのLEDが付いてます。


* POWER
    * 主電源OFF：消灯
    * スタンバイ：赤点灯
    * 電源オン時：緑点灯
* FDD0/1アクセスランプ
    * FD未挿入（通常）：消灯
    * FD未挿入（プログラムで制御時）：緑点滅
    * FD挿入時（アクセス無）：緑点灯
    * FD挿入時（アクセス中）：赤点灯
* FDD0/1イジェクトボタン
    * FD未挿入：消灯
    * FD挿入時：緑点灯
* HD BUSY
    * 通常時：消灯
    * 内蔵HDアクセス時：赤点灯
* TIMER
    * 通常時：消灯
    * RTCのCLKOUTレジスタで設定した周期：赤点滅

この実物の動作にできるだけ近づけてみたい！と思っています。

# 完成形

完成形はこんな感じです(配線ミスってTIMER LEDの色が変わってしまってますが……）。

<blockquote class="twitter-tweet"><p lang="ja" dir="ltr">フロントパネルにはめてみた😀色もそれっぽくしてみました。<br><br>TIMERが青いのは、もともとREDしか配線してなかったのに、パターンの裏表を間違えてRGBがBGRになっちゃったから。まあ使用頻度少ないから良いかな……😭 <a href="https://t.co/xJrFLJGS9g">pic.twitter.com/xJrFLJGS9g</a></p>&mdash; くにちこ（Kunihiko Ohnaka） (@kunichiko) <a href="https://twitter.com/kunichiko/status/1302243264657985539?ref_src=twsrc%5Etfw">September 5, 2020</a></blockquote> <script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>

以下、これを作るまでの道のりを紹介していきます。

# 回路設計方針

## LED

秋月電子で売っている、表面実装用フルカラーLED「LTSN-B32JEGBB-LY」を使おうと思います。アノードコモンタイプで、100円で10個入っていてお得です。

https://akizukidenshi.com/catalog/g/gI-12898/

しかしこのLED、サイズが 1mm x 1mm で非常に小さいです。試しに一つだけ万能基板上に実装してみましたが、なかなか厳しいものがありました……(2つ壊した)。

そのため、**専用基板を起こすことにしました。** 

## I2C接続型LEDドライバ

FPGAでLEDを制御することは「Lチカ」などと呼ばれていて、入門書の最初に出てくるようなごく基本的な回路です。良くある回路は、FPGAのGPIO端子に電流制限抵抗とLEDを付ける方法です。この方法ならLEDを点滅させたりPWM制御で輝度を変えたりと自由に制御できます。

しかし、これだと **LEDの数だけGPIO端子が必要である** という当たり前の事がネックになってきます。先ほど、X68000のフロントパネルのLEDは７種類と言いましたが、FDDアクセスランプやPOWERランプのように色が２色ある、つまりLEDが２つ入っているランプもあるため、実際にももっとたくさんのGPIOが必要になります。たとえばすべてのランプをRGB 3色フルカラーで制御しようと思ったら、 7x3 = 21 のGPIOが必要になってしまいます。

実際80ピンあるGPIOのほとんどは使い切ってしまっていて、1、2個でも追加するのが厳しいくらいの状況ではどうしようもありません。どうにかして、I/Oピンをあまり消費せずにLEDを制御する方法を探す必要があります。

はい。**少ないピン数でI/Oで制御といったらI2Cバス接続** ですね。たとえば、I2Cで複数のI/Oポートを制御するチップには以下のようなものがあります。

* 16bit I2C I/O エキスパンダー 「MCP23017」
* 8bit I2C I/O エキスパンダー「PCF8574N」

どちらも秋月で買うことができるICです。MCP23017でやってみようかなぁとTwitterで呟いたら、別のチップを紹介していただきました。

<blockquote class="twitter-tweet"><p lang="ja" dir="ltr">I2C接続のLEDドライバありますよ<br>例 <a href="https://t.co/1F1Wm8jmQg">https://t.co/1F1Wm8jmQg</a> <br>1010サイズのフルカラーLEDを使えば色も変え放題です<a href="https://t.co/8JIm3iHBh8">https://t.co/8JIm3iHBh8</a> <a href="https://t.co/lrpSYSe5YV">https://t.co/lrpSYSe5YV</a> <br>(と無茶振りを...</p>&mdash; kani (@kani7) <a href="https://twitter.com/kani7/status/1287883656992677888?ref_src=twsrc%5Etfw">July 27, 2020</a></blockquote> <script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>

ご紹介いただいたのは TIの「TLC59116」というICで、これも秋月で買えるものになります。このICはI2C接続で16個のLEDを制御できるもので、それだけ見るとI/Oエキスパンダーと大差ないような気もしますが、専用のLEDドライバICということで、以下のようなメリットがあります。

* LEDのPWM制御機構を内蔵していて、明るさを256段階に変えることが可能
* LEDの点滅制御機構を内蔵していて、1/24秒周期〜10秒周期まで256段階で点滅させることが可能
* 定電流回路が内蔵されているので、LED一つ一つに電流制限用の抵抗をつける必要がない

なるほどこれは便利そうですね！

これと同じことをI/Oエキスパンダで同じことをしようとすると、例えば点滅させようと思ったらその都度I2C通信を行ってLEDの点灯状態を変える必要があります。さらに、PWMで明るさを変えようとしたら、1秒間に100回以上明滅させる必要があります。

I2C通信で高頻度で書き換えを行うのは難しいため、PWMや点滅機能をもった専用ICの出番というわけですね。

## 16回路の割り振り

7つのフルカラーLEDを完全に制御しようと思ったら、3x7で21個のLEDドライバ回路が必要になります。TLC59116は 16回路しかありませんので、全てをフルカラー制御することができません。

ですが、X68000が作られた時代は青色LEDが発明されたばかりの頃で、まだ一般には使われていませんでした。そのため、使われている色も赤と緑の二色だけなので、もったいないですが以下のように一部の色を使わずに封印してしまえばなんとか足りそうです。

| 番号 | 割り当て || 番号 | 割り当て |
|:-:|:-:|:-:|:-:|:-:|
| LED0  |POWER(R) || LED8 |FDD0アクセス(R) |
| LED1  |POWER(G) || LED9 |FDD0アクセス(G) |
| LED2  |POWER(B) || LED10|FDD0アクセス(B) |
| LED3  |         || LED11|FDD0イジェクト(G) |
| LED4  |HD BUSY(R) || LED12|FDD1アクセス(R) |
| LED5  |HD BUSY(G) || LED13|FDD1アクセス(G) |
| LED6  |HD BUSY(B) || LED14|FDD1アクセス(B) |
| LED7  |TIMER(R)  || LED15|FDD1イジェクト(G) |

TIMER LEDは正直ほとんど出番はないので、実機と同じ赤色だけあれば十分でしょう。FDDのイジェクトボタンも緑一色あれば十分かなと思います。残りの POWER、HD BUSY、FDDアクセスランプは RGBのフルカラー制御ができるようにしておきます。何に使えるかはわかりませんが、例えば **特殊なモードに入ったらPOWERランプが青く光る** とか、 **FDD2,3にアクセスがあったら青く光る** とか、将来何かに使える可能性がありますので。

### 後日談
R,G,Bの結線を間違えて B,G,Rにしてしまいました😭

* POWER、HD BUSY, FDDアクセス
    * RGBの意味を読み替えればOK
* FDDイジェクト
    * Gの位置は変わっていないのでセーフ
* TIMER
    * RがBになってしまいました
    * TIMERは滅多に使わないので良しとします😭
    * そのうち赤単色のLEDに交換します
        * https://akizukidenshi.com/catalog/g/gI-03978/

# 自作基板を作るまでの道のり

自作基板を作ったことがない方だと、どこから手をつけて良いかわからないと思いますので、少し解説します。

今は海外などで安価に製造してくれる業者がたくさんあるのでそんな苦労をする必要はありませんが、僕が学生の頃(20年以上前)は、感光基板を自分でエッチングして、銅箔を溶かして、ドリルでピンの穴を開けて自作していました。

自作する場合も業者が作る場合も、**どんなパターンで銅箔を残して、どこにどんな直径の穴を開けるのか** という図面を作る必要があります。

感光基板を使って自作する場合、パターンはパワーポイントでもペイントツールでもなんでもいいので、残したい銅箔のパターンを二次元の絵にして、それをプリンターでトレーシングペーパーなどに出力し、紫外線で基板を感光してパターンを転写して作ります。

しかし、お絵かきソフトだと結線忘れやショートなどのミスが簡単に起こりますし、操作も煩雑なので、配線を簡単に引くことができる専用ソフトが欲しくなります。また基板製造業者に出す場合は、ドリルのデータやレジストのパターンなどを合わせた **ガーバーデータ** というファイルを送る必要があるため、普通のお絵かきソフトでは作ることができません。

そこで、**専用の基板CAD** というソフトが必要になります。昔は基板CADは高価なツールで素人が手を出せるようなものではなかったのですが、今はフリーで使える基板CADが色々と出てきています。

* KiCAD
    * https://kicad-pcb.org
* Design Spark PCB
    * https://www.rs-online.com/designspark/home
* PCBE
    * https://www.vector.co.jp/soft/winnt/business/se056371.html

好みや慣れというのもあると思いますが、 **個人的には「Macで使いたい」** という事情があって、 **標準で Mac版がある KiCADを愛用** しています。

KiCADは機能的にも十分揃っていますし、情報も多いので、特に事情がなければ KiCADから初めてみると良いかと思います

## 回路図CAD と 基板CAD

最終的には基板のデータ（ガーバーデータ）が作れればいいので、いきなり画面上でパターンを引き始めることもできます。先に紹介した PCBEなどはそういったツールになります。これが **基板CAD (PCB CAD)** です

ですが、いきなりパターンを引くためには、部品のピン配置などを頭に入れ、常に確認しながら引く必要があります。「あれ、このラインは+5Vだっけ、GNDだっけ？」みたいなことがしょっちゅう起こります。

そこで、基板パターンを引く前に **回路図CAD** で回路図を書いて回路設計を先に行い、その回路データから抽出された配線情報を基板CADに渡します。この配線情報は **「ネットリスト(net list)」** と呼ばれています(どことどこが繋がっているかというネット情報をリストにしたものなのでネットリストいいます)。

基板CADにネットリストを読み込ませると、回路図(ネットリスト)と矛盾するところには線が引けないようになっていたり、接続漏れを教えてくれたり、最終的にちゃんとルール通りになっているかチェックする **デザインルールチェッカー(DRC)** などの便利な機能が使えるようになります。

こういったサポートを使うことで、設計した回路と矛盾のない基板パターンを引くことができるのです。

蛇足ですが、こういったサポートツールのことを EDAツール(Electronic Desing Automation Tool:電子デザイン自動化ツール)といいます。


# 作業開始！

前置きが長くなってしまいましたが、実際の作業手順を紹介します。今回作った基板データはこちらの GitHubリポジトリに入っていますので、参考までにどうぞ。

https://github.com/kunichiko/FPGA-X68k-ProCaseLEDBoard

# KiCAD で回路図を引く

まずは回路図を書いていきたいと思います。KiCADを起動したら、新規プロジェクトを作成します。今回はプロジェクト名を `FPGA-X68k-ProCaseLED` としました。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/41616/658831da-67c9-c9ad-3a91-809f382c2db5.png)

画面上にあるこのアイコンをクリクすると回路図エディタが起動します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/41616/3722d520-98eb-00b8-328b-1feaa286344e.png)

こんな感じです。詳細はリポジトリをチェックアウトして KiCADで開いてみてください。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/41616/c150a8c3-6663-f9fe-5ad9-97b27b48f94e.png)

## 回路図エディタの基本操作

ここでは書ききれないので、詳細は公式サイトや各種解説ページをご覧ください。

以下、最低限の操作を書いておきます。なお、キーボードが日本語入力モードになっているとうまく動かないので、英数モードになっていることを確認してください。

* "a" キー (add)
    * コンポーネントを回路図に追加します
    * よく使われる部品はすでに KiCADに入っているので、型番などから検索して回路図上に配置します
* "w" キー (wire)
    * 結線用のワイヤーを引きます
    * ワイヤーは交差しただけではつながりません。２つの線をつなぎたい時は節のところで接続して黒いドットを置く必要があります
* "ESC"キー (escape)
    * ワイヤーモードから通常の選択モードに戻る場合などに使用します
* "c" キー (copy)
    * 既に配置されている部品の上にカーソルを置いて "c" を押すと複製が簡単に作れます
* "m" キー (move)
    * 既に配置されている部品の上にカーソルを置いて "m" を押すと部品が移動できます
    * 次の "g" キーとの違いに注意してください
* "g" キー (grab?)
    * 既に配置されている部品の上にカーソルを置いて "g" を押すと部品が移動できますが、その際、接続されていたワイヤーも一緒に付いてきます
* "delete" キー (delete)
    * 既に配置されている部品の上にカーソルを置いて "Delete" を押すと部品が削除できます
* "l" キー (label)
    * ラベルを作成します(後述)
 
とりあえずこのくらい覚えておけば見よう見まねで回路図をかけると思います。

## ワイヤーに名前(ラベル)をつける

回路図上には沢山のワイヤーが引かれることになりますが、それぞれのワイヤーに名前をつけておくと非常に便利です。ワイヤーの名前は基板CADにも引き継がれるので、「あれ、この線なんだっけ？」となった時に助かります。

回路図上で "l" キーを押すとラベル作成画面が出てくるので、配線の名前をつけます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/41616/1c99c49d-f635-b912-a40c-a6a7529016e5.png)

そうしてできた「ラベル」を付けたい配線の上に置きます。ラベルの左下に丸ぽちがあると思いますが、それがワイヤーの上に乗るようにします。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/41616/0e47938d-67fc-bd2d-c853-747109b2f42c.png)

ラベルの指定は結構緩いです。同じワイヤーに違う名前を何個もつけたりできます。ラベルをドラッグして動かせば簡単に別のワイヤーに名前が移動します。

**注意点は、同じ名前のワイヤーは、たとえ見た目上繋がっていなくても、内部情報(ネットリスト)上では結線されたものとみなされる** というところです。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/41616/3ff35bc6-038f-96b7-0fa4-bb52b6ecf8b8.png)

たとえば左右に TIMER_LED_Rというラベルのついた線がありますが、これらは繋がっているものとみなされます。

極端なことを言えば、部品の足にラベルをつけるだけにして、見た目上のワイヤーを配線せずに回路図を完成させる方法もあります。

ただ、個人的には見た目につながっていない回路図は非常にみづらいと思っているのでお勧めはしません。+5V、GNDといった電源ラインのように意味のはっきりしているものは結線しないのが普通ですが、信号線でそれをしてしまうと、**一対一かと思ったら、よくみたら接続先が２つあった！** みたいなことになりかねないので、見た目上も線を追いかけていけば良いように作るのがお勧めです。

なお、配線が混雑して配線が難しい場合は "b" キーを押してバス配線を使うと良いです。先ほどの TIMER_LED_R は青くて太い線に接続していたと思いますが、その青くて太い線が **バス配線** です。

## ライブラリの追加

KiCADに欲しい部品がない場合はどうしたらいいでしょうか？世の中で出回っている電子部品は既に色々な方がライブラリ化しているのでそれを利用すると便利です(ライセンス制約がある場合があるので、商用利用される場合はご注意)。

僕は、以下の2つのライブラリを libフォルダの下に入れてます (Git管理しているので Gitのサブモジュールとして追加してます)。

* https://github.com/Digi-Key/digikey-kicad-library.git
* https://github.com/metacollin/kicad-gigalib.git


「設定」-「シンボルライブラリーを管理」から以下のようにして「プロジェクト固有のライブラリー」にごっそり追加しています。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/41616/ae6c8c3f-717d-9941-9027-e57416636210.png)


## 自作ライブラリの作成

それでも見つからない部品やがあった場合は、部品を自作することになります。今回はフルカラーLED 「LTSN-B32JEGBB-LY」がなかったので自作しました。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/41616/674b6a4f-95eb-7c82-84f7-222041251f23.png)

このアイコンをクリックして「シンボルエディター」をクリックします。これから作る部品を入れるライブラリを作るため、ファイルメニューから「新規ライブラリ」を選んで、libフォルダの下に `local` という名前でライブラリを作ります。

なお、他の回路でも使いまわせそうな部品の場合は、自分でライブラリを作って別フォルダ(別リポジトリ)で管理しても良いと思いますが、今回はこの基板だけで使う前提でローカルライブラリとしました。

ライブラリを作ったら、次は「新規シンボル（⌘N）」を押して新しい部品を作ります。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/41616/b8be9a14-a23a-e000-c8b0-8fd9791cd796.png)

他の部品も参考にしながらパワポの図形描画の要領で絵を描いていきます。重要なのは部品の名前、端子の数、端子の名前です。このLEDはコモン端子とRGBの3端子で合計 4端子あるので、4つの端子を用意し、データシートと同じピン番号を与えます。

この端子が最終的に半田付けするためのランドになるので、この数が合っていないと面倒なことになります。

作成できたら local ライブラリに部品として保存します。そして、回路図側でも localライブラリを使えるように設定したら、"a"キーでこの部品を呼び出せるようになります。

## アノテーションの実施

一通りの配線が終わったら、このアイコンを押してアノテーションを行います。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/41616/65b7e1c8-2594-99d1-c392-fb93f9f90dfb.png)

アノテーションというのは、回路図上の部品に部品番号(U1,U2, R1,R2などの番号)を与えることです。

基本的には出てきたダイアログのまま「OK」を押せば勝手に番号を割り振ってくれます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/41616/b562463c-6c7a-5259-3819-5ccc554a390c.png)

「既存のアノテーションをキープ」にしておけば、一度割り当てられた番号は変わりませんので、何度やっても問題ありません。

## DRCの実行

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/41616/3a717a6d-8094-e2e0-8fd0-d0395ff46b1b.png)

この🐞アイコンをクリックすると、回路図上のおかしなところを教えてくれます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/41616/6ebd2ff0-3abd-6ea8-b238-3ef6bf2bf649.png)

よく出てくるのがこの「ピンは他のピンに接続されていますが、駆動するピンがありません」というものです。青いところをクリックすると、回路図上の問題のポイントにジャンプしてくれるのですが、意味がわからないと思います。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/41616/a29460a1-1438-54c2-a3e9-2d8ab77f30e2.png)

実は、KiCADでは +3.3V、GNDなどの回路図シンボルはただのシンボルなので、 **「これは電源ラインですよ」** ということを示す `PWR_FLAG` というコンポーネントを接続する必要があります。

こんな感じです。これは **KiCADのお作法** ということで覚えておいてください。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/41616/d1009bbb-3a3c-0d34-889e-89e0610f2c3b.png)


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

フットプリントというのは「足跡」とか「足形」といういみですが、ここでは **基板上に部品を置くためのパターン** という意味です。

今回使用したLEDドライバの TLC59116 を例に見てみましょう。今回使ったのは 28ピンの TSSOPパッケージ(Thin Shrink Small-Outline Package)のものですので、 KiCADのライブラリにある以下のフットプリントが合いそうです。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/41616/ff788b87-ec9c-5e30-4d8b-0704a9ff09fd.png)

実際に製造されたパターンがこちらになります。

![IMG_4840.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/41616/996a38aa-a3f9-3a99-0818-56775fdc5405.jpeg)

フットプリントライブラリどおりに銅箔、レジスト、シルクが出来上がっているのがわかるかと思います。

他のEDAツールだと、回路図上の部品とフットプリントがあらかじめ紐づいていて決まっているものもあるようなのですが、 **KiCADは回路図のコンポーネントとフットプリントを好きなように組み合わせられる** という特徴があります。

極端なことを言えば、 **抵抗に対してコンデンサーのフットプリントを割り当てても構いません**。先ほど、4ピンのフルカラーLEDの回路コンポーネントを作りましたが、そのフットプリント として4ピンのコネクタのフットプリントを割り当てても良いわけです。

フットプリントの割り当てはこのアイコンから行います。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/41616/cbf8eed2-4e2d-0734-ae44-bc8963d52752.png)

出てきた画面には、この回路図で使用されているコンポーネントが全て並んでいます。この画面はもう割り当て済みの画面ですが、割り当てられていないコンポーネントは真ん中の列が空欄になっているので、それに割り当てたいフットプリントを右のペインから見つけて紐付けます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/41616/092bf2cf-569f-3298-ef38-dfe24116fdf3.png)

画面上部のアイコンがフットプリントのフィルターになっています。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/41616/59889b9f-7fdb-54e3-606d-cf32541d4f8c.png)

テキストボックスに単語を入れるとフィルタがかかるのですが、意外と普通の単語でフィルタが掛からないのでちょっとイラッとします。たとえば、「Capacitor SMD:CP Elec 5x3」というフットプリントの場合、「Capacitor」ではフィルタ条件に一致しません。「:」より右にある「CP」や「Elec」では引っかかるのですが、「CP Elec」ではひっかからないという……。

なので、左にある3つのアイコンを使ってうまく絞り込みます。

* Use schematic symbol footprint filters
    * 回路図シンボルのおすすめフットプリントで絞り込み
* ピン数でフットプリントを絞り込み
    * ピン数が一致するものだけを表示
* ライブラリーでフットプリントを絞り込み
    * 左のペインで選んだライブラリのものだけを表示



通常は「ピン数」を有効にしておけばいいと思います。

## フットプリントの自作

今回回路コンポーネントを自作したフルカラーLED 「LTSN-B32JEGBB-LY」は、フットプリントも自作する必要があります。

「フットプリントエディター」で「新規フットプリント」を作成し、同じようにローカルフットプリントライブラリに保存します。操作方法は後述する基板CADと同じです。まずは先にそちらを学んでからやってみてください。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/41616/611b443d-fc99-6212-e09d-3687bb63f2d6.png)

なお、このフットプリントはデータシートに載っていたおすすめの寸法を参考に作っています。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/41616/6f6e373c-a2e2-353d-05c8-92deefe3800b.png)

その際、別のページにあった **ボトムビューのピン配置を入れてしまい、フットプリントが左右反転** してしまっていました😭。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/41616/694f11b2-d35a-3c84-902b-d7254934b0bf.png)

こういったミスがあると基板は完全に作り直しになる場合もあるので、念には念を入れてご確認ください……。

# 基板CADで基板をデザインする

回路図CADで回路図のフットプリントの割り当てまで終わったら、このボタンを押して基板CAD (pcbnew)を起動してください。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/41616/8b05d133-c3a8-f0da-74b7-86dc5a157ec4.png)

次に、「回路図から基板を更新」を押します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/41616/072f0577-83c6-7f37-ca2c-1a816d818655.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/41616/6f125501-81b1-05f4-dcea-91fbbc6344c9.png)

出てきたダイアログでOKを押すと、こんな感じでぐちゃぐちゃな状態でフットプリントが並んだ状態になります。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/41616/d876160d-8f11-bee5-dd0d-eedb6f88ff3d.png)

これを並べ替えて配線し、最終的には以下のように整えていきます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/41616/4c256821-9a5d-bc3b-c1f1-b5727082468a.png)

なお、回路図を更新したら再度「回路図から基板を更新」を押します。その際、既に配置された部品がリセットされることはありません。

## 基本操作

### 単位系（mm系とインチ系）の切り替え

電子部品の多くはインチ系なのですが、一方で基板の寸法などはミリメートル単位で記載されていることが多いです。

画面左の「in」「mm」を押すことで単位系の切り替えが可能です。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/41616/8f191bca-150e-b6b1-7cbb-5665128ca357.png)

### グリッドの切り替え

グリッドの切り替えも頻繁に行います。単位系を変えると見た目が変わりますが、同じグリッドが相互に使えるようになっています。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/41616/7d839ad9-5797-abc3-7669-99bda3b8ad9f.png) ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/41616/8ed45d2f-235b-c7c4-f5e1-6dd0a4984374.png)

## 基板の外枠を描いてみる

おそらく、作りたい基板のサイズ感というのはあらかじめわかっていることが多いと思います。適当に並べていってサイズオーバーになった場合は配線のやり直しになってしまうので、最初に外枠を作っておくのがおすすめです。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/41616/3d7aab8f-7c8e-11ca-c07d-5d672b148ac5.png)

右のレイヤーから「Edge.Cuts」を選択し、「図形ラインを追加」で四角を描画します。たとえば、30mm x 80mm にしたければ、1mmグリッドにしてこんな感じで四角いラインを作ります。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/41616/8433bc8e-b56a-9366-6416-9feef7cc3674.png)

線のドラッグ中は、ウインドウの下に線分の長さなどが表示されていますので、それをみながら描画します。また、「寸法線を追加」というメニューを使って寸法線を入れておくとあとでわかりやすいと思います。なお、寸法線は 「Dwgs.User」というレイヤーに描画されます。このレイヤーは基板には影響のないただのガイドになりますので、他にも入れたいメモなどがあればそのレイヤに追加しておきます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/41616/913559f9-620d-bd92-dcf6-907f8dd7cb0b.png)

なお、先ほど作った「Edge.Cuts」というレイヤは基板のカットラインを入力するレイヤです。こんな感じで基板内部に別のカットラインを入れれば、そこがくり抜かれたような基板になります(どんな加工が可能かは業者にもよりますので、事前にご確認ください)。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/41616/8fa4f9f4-2cf5-c87d-f68a-bdf6bf7fc3a2.png)

この状態で「表示」-「3Dビューアー」を起動するとこんな感じになります。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/41616/e50c4e78-45c8-74c7-8408-ec00886db4d5.png)

まだ部品が宙に浮いていますね(笑。基板の完成状態が見たくなったらこの3Dビューワーでじっくり確認しましょう。2Dで見ていたときにはわからなかったミスが見えてくることもあります。

## ベタ電源とベタGNDの作成

言い忘れていましたが、今回は基板を「両面基板」で作成しています。両面基板は基板の裏面と表面に銅箔があるタイプの基板です。より高価なものとしては4層基板、6層基板などのものもありますが、ホビー用途では両面基板で十分色々なものが作れると思います。

4層基板の場合は、表面にある2層で信号を通し、内部にある2層はGNDと電源(+3.3Vなど)の層にすることが多いと思います。そうすることで、基板内部に広いコンデンサーが作られたような状態になって安定しやすいとか、スルーホールを開けるだけで簡単に電源やGNDに接続できるので配線が容易になるなどのメリットがあります。

一方で、両面基板の場合は、表と裏の2層だけを使って電源、GND、信号の全てを配線する必要があります。信号を通した後に電源やGNDを通そうと思うと色々苦しくなるので、最初に「表は電源」「裏はGND」という基準を用意しておくと便利です。

そこで、次のように最初に基板全体に「ベタ電源」「ベタGND」を作ってしまいます。

### ベタ電源の作り方

レイヤーから「F.Cu」(FはFront、Cuは銅箔の意味。Cuは銅の元素記号)を選択します。そして、「塗りつぶしゾーンを追加」を押し、基板の外形のコーナーの一箇所をクリックします。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/41616/dfa15c77-f547-ca82-ccba-d0f54548005f.png)

すると以下のようなメニューが表示されるので、「+3.3V」を割り当てます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/41616/f5b6f4f3-18cc-a5bc-0717-32ba6b482375.png)

メニューを閉じると多角形描画モードになるので、そのまま基板の四隅を時計回りか反時計回りにクリックしていって、基板全体を覆うようにします。最後の点でダブルクリックすると、塗り潰し領域が作成されます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/41616/40d259be-44c4-2857-6526-538376bc8c1f.png)

この状態ではまだ塗り潰しが行われていないので "b" キーを押すと塗り潰しが実行されます。その際、塗り潰しの結果を見るためには、ウインドウの左にあるこのボタンを押して、表示モードを切り替える必要があるのでご注意ください。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/41616/a6359de6-da02-2215-d653-812424d6137c.png)

……と思ったのですが、塗り潰しのためには基板上に +3.3Vの電源が接していないといけないので、まだ基板の外にあるコネクタの上で "m" キーを押して移動し、基板の上にもってきます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/41616/8113ddcd-7958-669c-6c50-4d2100f1f61f.png)

この状態でもう一度 "b" を押して塗り潰しを実行するとこんな感じでベタ電源の結果を見ることができます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/41616/83013d3a-a13d-d4d7-be0f-15b63fb14026.png)

これを見るとわかりますが、"b"を押しただけで以下のことが実行されているのがわかります。

* +3.3Vの1番ピンだけがベタパターンに接続されている
* 1番ピンはベタパターンと上、左、下の細いラインで接続されている
    * 完全にベタの上に端子穴を置くと、熱伝導率が良すぎて半田付けが困難になるので、こうなっていると助かる
* 2〜5番ピンとベタ電源は、事前に設定したクリアランスが開けられている
    * 基板製造会社のデザインルールで「最小で何mil以上開けること」といったルールが決まっていますので、その設定以上にクリアランスを確保できていることが保証されます。

これを普通のお絵描きツールでやろうと思うとかなり大変ですが、専用の基板CADだと難なくクリアできます。

なお、塗り潰し表示を有効にしておくとパターンの配線がしづらいので、普段は「ゾーンの塗り潰しを非表示」ボタンを押して配線だけが見えるようにしておきます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/41616/b06618fb-c955-e4fa-2cab-7dc1da8b06a0.png)

定期的に塗り潰しを表示して確認してください(確認前に"b"を押して再度塗り潰しを実行すること)。

### ベタGNDを作る

ベタ電源と同じ要領で、レイヤーから「B.Cu」(BはBack、Cuは銅箔の意味。Cuは銅の元素記号)を選択します。そして、「塗りつぶしゾーンを追加」を押し、基板の外形の一周させて塗り潰しを実行します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/41616/bd7f4155-1ec9-5565-bb03-c3c12b0572a4.png)


すると、裏面(半田面、緑のレイヤー)にベタGNDが生成され、コネクタの5番ピンに接続されます。

ところで、画像では赤い面が奥にあるように見めますが、これは基板CADは今アクティブなレイヤーを手前に表示しているからです。F.Cu層を選べば逆転します。

なお、F.Cuと B.Cuの入れ替えは "v" キーでできますので、活用してください。

## 部品の移動と配置

以下のショートカットを活用して、部品を移動して大まかな場所に配置していきます。

* "m" キー (move)
    * 部品を移動します
* "r" キー (rotate)
    * 部品を90度回転します。"m"での移動中に"r"を押すこともできます
* "f" キー (flip)
    * 部品の裏表を変更します。
    * 最初はFront側に部品が置かれていますが、チップ部品などを裏面(赤いレイヤー)の方に配置したい場合はこのキーで裏にします

## 配線

配置が終わると、このように端子間が細い白い線で結ばれたような状態になっています。これは大本の回路図から生成されたネットリストの線です。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/41616/e97d4f7f-f8fb-b015-5806-fe052533ee6e.png)

この白い線をガイドにして配線を行なっていきます。接続が終わると白い線が消えるので、最終的に基板全体のどこにも白い線が残っていない状態に持っていけば良いわけです。

配線のショートカットは以下になります。回路図CADと微妙に違うのが使いづらいですが、まあ慣れてきます(笑)

* "x" キー
    * 配線開始。Escキーで終了します
    * ある程度は自動で折り曲げてくれますが、適宜曲げたいポイントでクリックしながら配線すると思い通りのラインが引けます
    * ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/41616/3fdb1d34-a813-fd05-6ed9-0ef930b762c9.png)
* "v" キー (via)
    * 配線中でないときに "v"を押すとF.Cuと B.Cuの選択が入れ替わりますが、"x"キーで配線中に "v"を押すと、貫通ビアの作成モードになります
    * Backレイヤで配線中に "v"を押して適当な場所に貫通ビアを置くと、そのまま連続して Frontレイヤでの配線が継続されます
    * 表と裏を行ったり来たりしながら配線するのが非常に楽にできます
    * ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/41616/76db94b0-08f2-6aad-c419-b2ab46353cf4.png)
* "Delete" キー
    * 配線を削除します
* "m" キー
    * 部品や配線を移動します。配線が折れている場合、選択したラインだけが切り離されて移動するので注意してください
    * 結線を維持したまま移動するときは "g"を使います
* "g" キー
    * 配線の上で"g"を押すと、配線を切らずに移動することができます
    * ただし、ショートするような場所には置けないので、制限にかかってしまってうまく動かせない場合があります
    * ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/41616/d57ee61c-f6b9-bbbb-f221-5590d0d01412.png)
    * こういうときは配線を一部消したり折ったりして回避してください

とにかく時間がかかるのがこの配線です。KiCADには自動配線ツールなどもあるようですが、試したことはありません（"自分で引きたい派"なので😅）。

## 検査

回路図 CAD同様、🐞のアイコンを押すとデザインの検査が可能です。

未配線のものや意図せずショートしてしまっていたもの、部品間のクリアランスが保たれていないものなどがあれば警告してくれます。

部品の裏表の間違いなどは検査してくれませんので、3Dビューアーで自分のイメージ通りにできているか確認するのも忘れずに！

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/41616/96cc14ad-bc04-0188-23b7-a92884a7bf02.png)

なお、この3Dモデルをエクスポートして Fusion 360などの 3D CADに取り込むこともできます。サイズがシビアな場合は、これを 3Dプリンタで出力してサイズ確認するのも良さそうです。

https://garchiving.com/output-3d-model-with-kicad/

ちなみに、僕は今回自作のフットプリントを作るときに裏と表を間違えて痛い目に遭いました💦ほんと、何度やってもミスが無くならない……。


# 製造

問題のないことがわかったら、いよいよ基板の製造に移ります。

私は以前から深センにある Seeed社の「Fusion PCB」を利用しています。

https://www.fusionpcb.jp

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/41616/bcc718a5-fc03-6ea1-77be-575775b9a0ad.png)

お値段も海外価格で非常に安いですし、一方で日本法人もあって日本語のサポートも得られるので安心感があります。

海外からの発送なので送料がそこそこかかりますが、全体的には非常に安価に基板を製造することができます。

## ガーバーファイルの出力

基板を製造するためには以下のような情報を「ガーバーファイル」と呼ばれるファイルに出力する必要があります。

* F層の配線パターン(F.Cu)
* F層のマスクパターン(F.Mask)
    * 基板表面は緑色などのレジストによってコーティングされます
    * 前面コーティングされてしまうと半田が乗らないので、ハンダを載せるランド部分はレジストがかからないようにする必要がありますそれがこのマスクパターンです
* F層のシルクパターン(F.SilkS)
    * 白い色で文字や部品番号などがプリントされる「シルク」のパターンです
* B層の配線パターン(B.Cu)
* B層のマスクパターン(B.Mask)
* B層のシルクパターン(B.SilkS)
* 外径(Edge.Cuts)
* ドリルデータ

基板CADの「ファイル」-「プロット」メニューを開くと次のようなウィンドウが開きます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/41616/a05fa15e-c383-67ff-d2d9-45ee86538273.png)

そして、上記７つのレイヤを選択します(ドリルデータは別)。オプションが色々ありますが、Fusion PCBの場合は以下のポイントに注意してください。

* 「Protelの拡張子を使用」は **ON** に
* 「拡張X2フォーマットを使用」は **OFF** に

詳しい設定は [公式ブログ](https://www.fusionpcb.jp/blog/?p=1178) も参考にしてください。

設定を確認したら「製造ファイル出力」を押すと7層のガーバーファイルが出力されます。

### ドリルファイルの出力

あとはドリルファイルだけです。「ドリルファイルを生成...」を押すと、次のようにもう一枚のダイアログが開きます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/41616/c0a16d24-cec9-a6e7-107d-68daa293c588.png)

選択状の注意点は以下のとおりです。

* ドリルファイルフォーマットでExcellonが選択されていることを確認
* 「PTHとNPTHを１つのファイルにマージ」が **ON** になっていることを確認

### ZIPファイルにまとめる

以下のように8つのファイルができているはずですので、これを1つのZIPファイルにまとめます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/41616/5db6a9fd-497d-26b7-0697-dd82b17d8ae2.png)


## Fusion PCBにアップロード

Fusion PCBのトップページにある「今すぐ発注」ボタンを押すとこのような画面が表示されます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/41616/45a58dee-54f6-b593-3418-29028d6621a4.png)

この画面の「ガーバーファイルを追加」を押すと、ファイル選択画面になりますので、先ほど作成した ZIPファイルを選択します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/41616/035bd04a-2fce-2245-2f82-39add963627d.png)

アップロードが終わるとこのような画面に変わるので、「ガーバービューア」を押すと、アップロードされたデータをオンラインのガーバーファイルビューアで確認することができます。

なお[FAQ](https://www.fusionpcb.jp/blog/?p=1014)にもありますが、オンラインのビューアーはあくまで **参考のために** 表示しているものだそうです。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/41616/0b3d5daa-1257-6b1d-29c0-fd6a1b19cde5.png)

KiCADと見え方が違っても、基本的にはガーバーファイルの通りに出力されるので、心配ないとのことです。

ガーバービューアーは、たとえば「基板ミス直したんだけど、ちゃんと更新版が読み込まれているかな？」といった確認のために使うイメージです。

## オプションや値段の確認

アップロードがうまくいったあとは、オプション類の確認になります。選べるのは以下のようなポイントです。

* 材質
    * 通常はデフォルトの「FR-4 TH130」でいいと思います
* 層数
    * 両面基板なので「二層」を選びます
* 寸法
    * ガーバーファイルから勝手に決まります。
    * 寸法が違ったら基板CADを開いて見直してください
* 製造枚数
    * 最小5枚から製造できます
    * たくさん作るほど1枚当たりの単価はお得になります
* 異種面付の種類
    * 作りたい基板がいくつかある場合は、それらを１つのデータにまとめて1回の注文で発注し、切り分けてもらうことが可能です
    * それぞれをバラバラに発注するよりもお得に製造できます
    * 異種面付けをしない場合は「１」を選びます
* 板厚
    * 基板の厚みです。普通の基板は1.6mmです。
    * 極薄基板を作りたいとか、特殊なカードエッジコネクタが必要とかがある場合は厚みを変えることも可能です
* レジスト色
    * 出来あがった基板の印象を大きく変えるのがレジスト色です
    * [Seed Fusion PCBのブログ](https://www.fusionpcb.jp/blog/?p=150)によると、レジストの色は単なる色の違いだけでなく、特性の違いもあるようです
    * 趣味で作る基板の場合は好みで選んでもいいと思いますが、特殊ようとの基板を作る場合はご注意ください
    * なお、今回はちょっと高かったんですが「黒(つや消し)」というのを選んでみました。さらっとした肌触りて気持ちいいです
* 基板の表面処理
    * あんまりよくわかっていません
    * デフォルトの安い「HASL(有鉛半田レベラー)」でいいと思います
* 最小レジストダムの幅
    * 0.4mmでいいと思います。0.1mmにするとすごい値段が上がります
* 最小穴径
    * ビアの最小ドリル径です。0.3mmでいいとおもいます
    * 基板CADでビアの設定を変える場合は、ここの設定と矛盾の無いようにしましょう
* 最小パターン幅/パターン間隔
    * 一番荒い 6/6mil でいいと思います
    * 小さくすると精度が上がりますが、値段も上がります
    * 基板CADで配線の設定を変える場合は、ここの設定と矛盾の無いようにしましょう
* 端面スルーホール
    * 基板のエッジ部分にもスルーホールを作るかどうか、という意味のようです(秋月の基板とかでみたことありますね)
* インピーダンス制御
    * 高周波回路基板を製造する場合に、調整してくれるようです
    * 詳しくはよくわかりません

とにかく、設定を変えると値段も変わるようになっているので、よく見比べながら決めてください。

## 注文！

設定を決めたら「カートに追加」ボタンを押して、あとは決済するのみです。送料は日本までで大体 1,500円くらいだったと思います。

2週間弱くらいでとどくので、楽しみにしてましょう！

![IMG_4794-conv.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/41616/fa93592e-dc3d-b292-1cac-067dd12c14a1.jpeg)

![IMG_4796-conv-1.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/41616/f639848d-7c33-a73d-ebf7-0aa4934ce963.jpeg)

以上です。この基板が動いている様子は冒頭の埋め込みツイートを参照してください!