ジャパリオルゴールを作ってみた（ハードウェア編）

![parts.jpg](https://qiita-image-store.s3.amazonaws.com/0/30370/dff429fe-c3d8-b8e5-6798-d2dc72b97001.jpeg)

🎄**この記事は [けものフレンズ Advent Calendar 2018](https://adventar.org/calendars/3071) 8日目の記事です**🎄

**前の記事: [ジャパリオルゴールを作ってみた（紹介編）](https://qiita.com/nanase/items/2969993ba93499d03d8d)**

今回はジャパリオルゴールのハードウェアについて紹介していきます。回路図、PCB、部品表などは GitHub にて詳しく公開しています。
https://github.com/nanase/YMF825-musicBOX/tree/master/1.1_2018.10

# モジュール検討

![modules](https://qiita-image-store.s3.amazonaws.com/0/30370/68278acb-713b-12fe-c282-3e799d963773.jpeg)

[前記事のルール](https://qiita.com/nanase/items/2969993ba93499d03d8d#%E3%83%AB%E3%83%BC%E3%83%AB) を満たすために、部品を実装しやすく、かつ入手しやすいものを中心に選んでいきます。ある程度大きな機能は既存のモジュールを使用し、細かい部品もリード部品を選んでいきます。今回は実装密度は高くないため、モジュールを除いて表面実装部品は使いません。

今回は上画像にある以下3つのモジュールを使用します（ジャパリコインは比較用; いただきものです）。

- **Arduino Nano**
  - [秋月電子](http://akizukidenshi.com/catalog/g/gM-09059/)、[千石電商](https://www.sengoku.co.jp/mod/sgk_cart/detail.php?code=EEHD-4UWW)など どこでも入手可能
- **YMF825Board** (2個)
  - [秋月電子](http://akizukidenshi.com/catalog/g/gM-12414/) などで入手可能
- [**Adafruit MicroSD card breakout board+**](https://www.adafruit.com/product/254)
  - [千石電商](https://www.sengoku.co.jp/mod/sgk_cart/detail.php?code=EEHD-4WXB) などで入手可能

MicroSD に演奏データを保存しておき、Arduino Nano がデータを読み取ってデコードし、YMF825Board に命令を送ります。
これら 3 つのモジュールを SPI で接続します。

## YMF825 と YMF825Board

![ymf825board](https://qiita-image-store.s3.amazonaws.com/0/30370/999d9469-c4dc-3c5c-4610-5b67ff565886.jpeg)

同時発音数は16ボイス、1ボイスにつき4オペレータが使用可能な FM音源 LSI です。

FM音源 LSI といえば主に1980年代に生産された YAMAHA 製 **YM2203** (OPN)、**YM2151** (OPM)、**YM3812** (OPL2) などが著名です。YMF825 も同じく YAMAHA 製ですが前者3つの LSI と比べれば、比較的モダンな使い方ができる音源です。

|              | YMF825<br/>(SD-1) | YM2203<br/>(OPN) | YM2151<br/>(OPM) | YM3812<br/>(OPL2) |
|--------------|-------:|-------:|-------:|-------:|
| **FM部チャネル数** | 16     | 3      | 8      | 9      |
| **オペレータ数**   | 4      | 4      | 4      | 2      |
| **原波形数**        | 29   | 正弦波のみ | 正弦波のみ | 4 |
| **出力チャネル**  | モノラル | モノラル | ステレオ | モノラル |
| **DAC**          | 内蔵   | 外付け | 外付け  | 外付け |
| **クロック周波数** | 12.0 MHz | 0.7〜4.0 MHz | 3.58 MHz |  3.58 MHz | 

オペレータの数は OPN や OPM と同じ 4 であるものの、原波形数は **29種類** と、従前のFM音源LSIよりも遥かに多く、音作りの幅が格段に上がっています。ところで、OPL2 の原波形4つは YMF825 の原波形の最初4つと全く同じため、YMF825 は OPL系の子孫である ともいえます。

DAC を内蔵しているため、Audio出力ピンにはイヤホンなどがそのまま接続できます。

### 補足: SPI

従前の音源LSIについて、レジスタの読み書きは対応のピンにパラレルで書き込みを行っていました。そのため8本のデータ線、読み書きのフラグ線などが必要となり、例えば OPN に書き込む際は最低でも **10 本** [^1] の信号線が必要でした。

YMF825 は **[SPI](https://ja.wikipedia.org/wiki/%E3%82%B7%E3%83%AA%E3%82%A2%E3%83%AB%E3%83%BB%E3%83%9A%E3%83%AA%E3%83%95%E3%82%A7%E3%83%A9%E3%83%AB%E3%83%BB%E3%82%A4%E3%83%B3%E3%82%BF%E3%83%95%E3%82%A7%E3%83%BC%E3%82%B9)** (Serial Peripheral Interface) によってレジスタの読み書きを行うため、**3本** [^2] の信号線があれば演奏できます。

また、YMF825 のセットアップ時のウェイトを除けば、演奏時にレジスタ書き込み後のウェイトを入れる必要はありません。SPI のクロック周波数は最大 10MHz に対応しており、演奏に必要な大量かつ高速なレジスタ書き込みが可能です。

[^1]: データ線 8 本、チップ選択線、アドレス・データ選択線 の計 10 本。読み込みに対応する場合はさらに WRフラグ線、RDフラグ線が加わって計 12 本が必要。

[^2]: SS線、MOSI線、CLK線の計 3 本。読み込みに対応する場合はさらに MISO線が加わって計 4 本が必要。

## Arduino Nano

![arduino nano](https://qiita-image-store.s3.amazonaws.com/0/30370/b63be93e-603d-34c1-aebf-5b672c987d43.jpeg)

ブレッドボードにそのまま挿せるタイプの Arduino です。USB でパソコンと接続して、スケッチを書き込むだけで動作可能です。スケッチを書き込み、電源を確保すればパソコンに接続せずとも単体動作可能です。
microUSB ではなく **miniUSB** という点を除けば非常に使いやすい Arduino だと思います。

クロック周波数は 16MHz ですが、FM音源の演奏用途では十分な速度が出ます。

電源は 5V が必要で、内蔵されているレギュレータで 7～12V が入力できます。3.3V のレギュレータも内蔵されており、3.3V が必要なモジュールも動かせるようになっています。なお、デジタル出力ピンのロジックレベルは 5V です。

## MicroSD カードモジュール

Adafruit のモジュールを使用します。ロジックレベル変換がついています。

Arduino Nano のデジタル出力ピンのロジックレベルは 5V ですが、MicroSD カードはロジックレベルが 3.3V のため、直接 5V を接続することはできません。そのため、5V ←→ 3.3V の双方向ロジックレベル変換が必要です。このモジュールは電源が 5V のまま使用でき、モジュール内部で適切にロジックレベル変換を行ってくれます。


# 回路設計

|![schematic.png](https://qiita-image-store.s3.amazonaws.com/0/30370/64be7c18-dd47-6d28-8ecf-8ed8c3452322.png)|![breadboard](https://qiita-image-store.s3.amazonaws.com/0/30370/6524baa7-2cac-5302-a440-d9c8bae8e55b.jpeg)|
|:---:|:---:|
|回路図|ブレッドボード上で試作|

CAD は [Quadcept](https://www.quadcept.com/ja/) で作りました。非営利目的かつ個人的に使うため無償です。回路図からPCB設計まで行えます。

今回はモジュール単位で試作し、それを結合していく方法をとりました。試作風景画像を見ていただければわかりますが、すべて SPI で接続すればよいのでモジュール間のジャンパもかなりシンプルにできています。

なお、回路上で最も電流消費が激しく、なおかつノイズ源になりやすいのは MicroSD カードモジュールです。かなり瞬間的ですが、書き込み/読み込み時に最大 100mA ほど消費するため、バイパスコンデンサは大きめの 10μF を使っています。

# 基板設計

![pcb](https://qiita-image-store.s3.amazonaws.com/0/30370/be431e7e-5035-179f-4b80-62f3cbbe780f.png)

回路ができたら、引き続き Quadcept で PCB 設計に入っていきます。
秋月電子で販売している [B基板用アクリルパネル](http://akizukidenshi.com/catalog/g/gP-10243/) を使用したいため、基板のサイズは **100 x 77mm** と決めました[^b_board]。

[^b_board]: [サンハヤト 基板保護用アクリル板 ACB-93](https://www.sunhayato.co.jp/material2/index.php/item?id=601) はサイズとネジ穴位置が異なるため使えません。

基板設計では回路設計では考慮が（され）なかった要素に注意していく必要があります。

## 部品配置

基本的には基板の Top 面（表面）に部品が載る形で配置していきますが、物理的余裕がない場合は Bottom 面（裏面）に配置します。

ただし、全ての部品が Bottom 面に配置できるわけではなく、部品の高さが低いものが主に Bottom 面に配置できます。
今回の場合、microSD カードモジュールを配置できる空間が Top 面にないため、Bottom 面に配置しました。

## 配線（パターン）

![pattern](https://qiita-image-store.s3.amazonaws.com/0/30370/f3effdd9-e5f6-35d5-b621-91271a02293b.png)

まず電源 12V の配線を行い、その後は 5V 電源線、クロック、オーディオ線、データ線、その他の線の順に配線していきます。今回はカーブでも角部分ができない、円弧配線を使っています。

|![radius](https://qiita-image-store.s3.amazonaws.com/0/30370/ca706716-3899-5ab3-e131-1f12431b04a3.png)|![curve](https://qiita-image-store.s3.amazonaws.com/0/30370/01f3f085-fee7-8820-00aa-734c65ac1676.png)|
|:---:|:---:|
|円弧配線|角配線|

12V の電源線は他の線よりも太くしたいために優先的に配線しています。ジャパリオルゴールは最大でも 200mA くらいの消費電流しかないためそこまで配線幅を取る必要はありませんが、太いことにデメリットはないので今回は 12V 電源線 1mm、その他は 0.5mm で配線しました。 

高周波の信号やノイズの影響を受けやすいクロックやオーディオ線は迂回を最小限にし、基板の Top と Bottom 面の交差も少なくします。また、他の線と交差している面積も少なくします。

## ベタ

![plane.PNG](https://qiita-image-store.s3.amazonaws.com/0/30370/07caab72-35aa-ba84-2eb4-a9edff551a9d.png)


基板の余った領域を埋める ベタ で GND を作ります。Quadcept はデフォルトで浮島ベタ（どこにもつながっていないベタ）を削除してくれますが、鋭角のベタは削除しません。鋭角のベタはアンテナとなってノイズを拾ったり、ノイズを放射したりするので丸く加工しておきます。

# 基板発注

<blockquote class="twitter-tweet" data-lang="ja"><p lang="ja" dir="ltr">ジャパリオルゴール Ver.1.1 基板が届きました！<br><br>1.0と機能は変わりませんが、いくつかバグ修正と、イヤホンとDCジャックの方向を統一しました。また、microSDカードを抜き差ししやすい位置に移動し、表面のロゴを拡大、裏面にフェネックを置きました。<a href="https://twitter.com/hashtag/%E3%81%91%E3%82%82%E3%81%AE%E3%83%95%E3%83%AC%E3%83%B3%E3%82%BA?src=hash&amp;ref_src=twsrc%5Etfw">#けものフレンズ</a><a href="https://twitter.com/hashtag/%E3%82%B8%E3%83%A3%E3%83%91%E3%83%AA%E3%82%AA%E3%83%AB%E3%82%B4%E3%83%BC%E3%83%AB?src=hash&amp;ref_src=twsrc%5Etfw">#ジャパリオルゴール</a> <a href="https://t.co/9OAbOMNnwG">pic.twitter.com/9OAbOMNnwG</a></p>&mdash; 七瀬 (@nanase_coder) <a href="https://twitter.com/nanase_coder/status/1044525292113485829?ref_src=twsrc%5Etfw">2018年9月25日</a></blockquote>

お安く作りたいので PCBGOGO に発注をかけました。表面処理を無電解金フラッシュにしたため、リードタイムは3～4日かかります。運が良ければ製造は2日程度て作ってくれます。基板製作の最小枚数は 5 枚ですが、10 枚でも基板費が変わらないことが多いです。

シルクに関してはかなり綺麗に作ってくれるときと、やや粗くなってしまうときがあります。祈りましょう。

過去一度だけベタとパターンがショートしている基板を入稿してしまったことがありましたが、問題箇所の画像も添付していただきながら丁寧に対応していただきました。個人で基板を設計しているため、その道のエンジニアから（しかも日本語で）レビューをもらうのは非常にありがたい点です。

中国の深圳に工場があるため、発送から着荷まで1～2日程度かかります。製造はかなり速くやってくれますが、配送所要日数は配送業者によりけりなので、必要があれば中国の祝日、特に春節の前後は避けねばなりません。

# 実装

<blockquote class="twitter-tweet" data-lang="ja"><p lang="ja" dir="ltr">実装前に、ジャパリオルゴールの動作に必要な部品の集合写真を撮ってみました。スペーサ、アクリル板などの装飾品も入ってます。<a href="https://twitter.com/hashtag/%E3%81%91%E3%82%82%E3%81%AE%E3%83%95%E3%83%AC%E3%83%B3%E3%82%BA?src=hash&amp;ref_src=twsrc%5Etfw">#けものフレンズ</a><a href="https://twitter.com/hashtag/%E3%82%B8%E3%83%A3%E3%83%91%E3%83%AA%E3%82%AA%E3%83%AB%E3%82%B4%E3%83%BC%E3%83%AB?src=hash&amp;ref_src=twsrc%5Etfw">#ジャパリオルゴール</a> <a href="https://t.co/LDdrYuap3Q">pic.twitter.com/LDdrYuap3Q</a></p>&mdash; 七瀬 (@nanase_coder) <a href="https://twitter.com/nanase_coder/status/1044530374024474624?ref_src=twsrc%5Etfw">2018年9月25日</a></blockquote>

基板を受け取ったらレジストの汚れやミスがないかを自分の目で確かめ、最低限 5V と GND の短絡がないかだけ確認します。

高さが低い部品から順に、はんだ付けしていきます。
microSD カードモジュールと YMF825Board のソケットのみ特殊なはんだ付けが必要ですが、手順通りに作業すれば特に難しくはないので難易度は低めです。

今回は [DCジャック](http://akizukidenshi.com/catalog/g/gC-01604) を入れたので、たとえば [バッテリースナップ](http://akizukidenshi.com/catalog/g/gP-07356/) を使えばコンビニに売っている 9V電池 で動作させることができます。


以上がジャパリオルゴールのハードウェア紹介になります。
次回の [**ソフトウェア編**](https://qiita.com/nanase/items/810ffc31de1380e321e1) では Arduino Nano に書き込むスケッチと、演奏データの制作方法について紹介していきます。

---

[ジャパリオルゴールを作ってみた（紹介編）](https://qiita.com/nanase/items/2969993ba93499d03d8d) : 前の記事

[ジャパリオルゴールを作ってみた（ソフトウェア編）](https://qiita.com/nanase/items/4e9c46f154fed15ac1bd) : **次の記事**

[ジャパリオルゴールを作ってみた（未来編）](https://qiita.com/nanase/items/810ffc31de1380e321e1)