『備忘録』ESP-WROOM-32を使って例のボタン的なのを作る -プリント基板編-

#はじめに
![FullSizeRender.jpg](https://qiita-image-store.s3.amazonaws.com/0/90561/7920895a-b742-8b50-36cd-03915e3b5888.jpeg)

仕事で例のボタン的なデバイスを一から作る機会があったので、最近市場に出回ってきたWifi&Bleモジュール、**[ESP32](http://akizukidenshi.com/catalog/g/gM-11647/)**(ESP-WROOM-02の上位バージョン)を使ってプリント基板を製造した話をします。
無理やりひとまとめにしたので、結構長くなってしまいました、、、



![M-11647.jpg](https://qiita-image-store.s3.amazonaws.com/0/90561/f18177c2-8dc0-5928-63d7-766c3bdd1e1a.jpeg)

ESP32は技適に通っており、**国内で電波ゆんゆんしても怒られません。**

**さらにWifiとBle、両方使用することができる**ので、

*BLEでスマホに接続→スマホからWifiのSSIDやパスワードを保存させる*

といったようなシチュエーションには最適のモジュールです。

*一応Arduino用のコンパイラもありますが、現状bleとwifiを使用するには専用の開発環境でC++をコンパイルする必要があります。

**しかも700円！**これは買わない理由がないですね。

詳しい開発環境等については@rukihena 様の[こちらの記事](http://qiita.com/rukihena/items/efdf02bd728b01fd3330)をご覧いただくのが良いかと思います。

#まずはDev Boardで色々試してみる

ESP32用のdev boardはいくつかすでに国内でも出回ってます。[たとえばこれ](http://store.shopping.yahoo.co.jp/microfan/esp32-dev-board.html?sc_e=slga_pla)。

基盤を作る前に書き込みのテスト、配線の確認、必要な電力などはdev boardで色々試して行いましょう。もちろん[データシート](http://akizukidenshi.com/download/ds/espressifsystems/esp_wroom_32_datasheet_en.pdf)も読みましょう。

#基盤のベースを考える

大体の仕様を把握した所で、どんな基盤にすればよいか考えます。
今はオープンソースの時代、すでにgithubに[BreakOut Board](https://github.com/no-wa-ke/ESP-WROOM-32-Eagle-Breakout)を公開してる方がいらっしゃいました。しかもEagle形式で。ラッキー！これをベースに考えれば特に何も考えず作れそう。

![ESP-WROOM-32-Breakout_Top.png](https://qiita-image-store.s3.amazonaws.com/0/90561/fd47c4c7-d9b9-d30c-3a74-c7ba4c50240e.png)

#電源どうするか問題
ESP32は一般的なマイコンの同様に、3.3Vで駆動します。Lipo系のバッテリーを使えば手っ取り早く3.3Vを供給できるのですが、簡単に交換が可能なアルカリ電池を使用したいとのリクエストがあったため、昇圧回路を用意する必要がありました。

ただパーツを揃えたり、設計したりする時間がなかったため、**ズボラなわたしはDIP想定のモジュールをそのままSMD的に基盤に乗っけることに決めました。**採用したのはこちら、Strawberry Linuxさんの[TPS61200 超低電圧DC-DCコンバータモジュール(3.3V/5V)](https://strawberry-linux.com/catalog/items?code=12010)です。

900円するので、大量生産する場合は**自前でTPS61200を搭載させる回路を設計したほうが当然やすいですが**、、、今回は数十個程度あればよかったので、セーフ！

最初は単４一つで駆動させるはずでしたが、設計を進めるうちに２個ハマるスペースができてしまったので、昇圧効率も考慮し、単４を２つ搭載することにしました。

![IMG_0397.JPG](https://qiita-image-store.s3.amazonaws.com/0/90561/4d9cf8fe-0f13-9d4d-6253-49d8db951703.jpeg)


#仕様を整理する

今回は特に複雑な回路は必要ありません。
パーツを仕入れる時間を稼ぐため、電源周りの逆流防止回路などは昇圧モジュールの性能を信じて省きました。

**ざっくり必要なパーツは下記の通り：**

- ESP32
- タクトスイッチ(後々の仕様変更を考慮してdipにした)
    - RST,PROG（ファームウェア書き込み用）
    - Ble設定|起動用ボタン 
- 昇圧モジュール
- フルカラーLED（ステータスインジケータ）　*こいつは空中配線
- バッテリーホールダー
- チップ抵抗（基盤製造屋さんのサービスで無料）

仕入れるパーツは最小限に抑えられたかと思います。

#回路を設計する
貧乏電子工作好きの味方、Eagleを使います。
一旦回路をブレボ等で再現して、間違えていないか何度も確認しましょう、、、（自分は電源周りをミスって基盤再発注する羽目になりました）
基本的に外部配線で必要なのはLED用のコントロールピン、GND,VCC,通信用のRXTXのみです。

<img width="1392" alt="スクリーンショット 2017-04-13 20.56.30.png" src="https://qiita-image-store.s3.amazonaws.com/0/90561/b2860ad5-7fe9-ab9b-8b28-6c8a0bd64cb4.png">

#基盤をデザインする
レイアウトを考えます。ざっとこんな感じになりました。

ちなみに筐体制作は別のチームが行っていました。仕様変更が後々起こっても良いようにレイアウトを組んでいるため、無駄なスペースがちょこちょこあります。
さらに電源もコイン電池を使えばもっと小型化は出来ます。

バッテリークリップや、昇圧モジュールのライブラリがなかったため自前でつくったのが若干めんどかった。

<img width="489" alt="スクリーンショット 2017-04-13 20.58.23.png" src="https://qiita-image-store.s3.amazonaws.com/0/90561/82379546-aef7-19f6-c6fe-057f757e6c2b.png">



#製造用の納品ファイルをまとめる
これは製造業者によって形式が違ったり、デザインチェックのやりかたも異なるので省略。
特にデザインチェックがやけに厳しいところがあるので注意！
自分はプロトタイプ用に[Elecrow](https://www.elecrow.com/),本番実装用には[P板](https://www.p-ban.com/)さんに頼みました。
ちなみに後者のほうがデザインチェックシビアなイメージ。その代わり品質は断然上がります。~~（お金も、、）~~

#まずは自分でリフロー実装してみる
いきなりコストをかけて設計失敗してたらシャレにならないので、まずは中国の業者さん、[Elecrow](https://www.elecrow.com/)に基盤の製造のみを依頼して、実装は自分でやる、というのをやってみました。（前からやってみたかった）

**ものの１０ドル程度で５枚つくってくれました。届いたのがこちら：**

<img width="1332" alt="スクリーンショット 2017-04-13 21.15.13.png" src="https://qiita-image-store.s3.amazonaws.com/0/90561/5d363df7-30c6-9ea0-09b5-d486a824f7b2.png">

まったく品質に問題なし。

**今回はホットプレートを使って実装します。[実際に記録した動画がこちら](https://www.instagram.com/p/BRdIV6DAh94/?taken-by=kido_yoji)**


あまり言いたくないですが、参考にしたのは[この動画](https://www.youtube.com/watch?v=prjB_myCwSY)です（見るたび吹いてしまう）

ホームリフローを行うに当たって必要な材料は下記の通り：



- ホットプレート(230℃まで出力できるやつ）
- クリーム半田（秋葉原の千石でゲッツ）
- 各パーツ
- 使わなくなったユニバーサル基板（４つ〜）
- テープ
- スキージ（クレカとかでも大丈夫）
- [ポリプロピレン合成紙](https://www.switch-science.com/catalog/822/)
- カッティングマシン([Silhouette Cameo] (https://www.amazon.co.jp/%E3%82%B0%E3%83%A9%E3%83%95%E3%83%86%E3%83%83%E3%82%AF-%E3%82%B7%E3%83%AB%E3%82%A8%E3%83%83%E3%83%88%E3%82%AB%E3%83%A1%E3%82%AA-%E5%B0%8F%E5%9E%8B%E3%82%AB%E3%83%83%E3%83%86%E3%82%A3%E3%83%B3%E3%82%B0%E3%83%9E%E3%82%B7%E3%83%B3-silhouette-CAMEO/dp/B007JG2STE)等)
- 精密作業用ピンセット



カッティングマシンとか高いし使わないしもってねーわ！って人は[Makers Base](http://makers-base.com/)的なところにいけば使えます（敷居はまだ高い感じですが、、）


###まずはマスクを作る

一通り準備ができたところで、まずは半田を基盤にキレイにつけるためのマスクをポリプロピレン合成紙で作ります。
クリーム半田用のマスクデータはEagleから簡単に出力できます（ここらへんは適当にググってください）

*マスクデータを作って、、*

<img width="1479" alt="スクリーンショット 2017-04-13 21.30.03.png" src="https://qiita-image-store.s3.amazonaws.com/0/90561/1bddfb64-09ee-882f-e427-56b3637526e2.png">

*カッティングマシンで出力！*
<img width="1367" alt="スクリーンショット 2017-04-13 21.31.59.png" src="https://qiita-image-store.s3.amazonaws.com/0/90561/2de4b20c-af69-2b0c-8729-0b882cd74261.png">

<img width="1457" alt="スクリーンショット 2017-04-13 21.32.19.png" src="https://qiita-image-store.s3.amazonaws.com/0/90561/09d2da03-b6eb-540d-9260-85298a38c6f9.png">

###基盤を雑に、かつしっかり固定

要らないユニバーサル基板でプリント基板を囲い、テープでしっかり固定しましょう。マスクを塗る時にずれるのを防止します。

<img width="1485" alt="スクリーンショット 2017-04-13 21.35.53.png" src="https://qiita-image-store.s3.amazonaws.com/0/90561/37267819-21bb-da8c-705f-2e53d6741582.png">

###半田を塗る！

<img width="1333" alt="スクリーンショット 2017-04-13 21.36.45.png" src="https://qiita-image-store.s3.amazonaws.com/0/90561/e2e8b127-c5e9-e241-66b1-b8741d96be6a.png">


###焼く

部品を載せたらホットプレートで調理します。
<img width="1522" alt="スクリーンショット 2017-04-13 21.37.15.png" src="https://qiita-image-store.s3.amazonaws.com/0/90561/fdf56e7f-19fc-880e-8930-db9af93baa19.png">

230度までしっかり温めてから基盤を投入しましょう。
クリーム半田がジュワ～ととけはじめるまで４，５分かかります。溶け始めたら速やかに温度をさげて冷ますのが大事。

これで実装は完了です！

#動作確認

**一番ドキドキする瞬間です。**
自分は電源系統に若干のミスがあったものの無事、RXTX経由でプログラムの書き込みができました。よかった、、、

#本番用の基盤と基盤の実装を業者さんに発注する
今回は国内でサポートを手厚くしていただけるP板さんに発注しました。
大まかな流れですが、

- 見積もり
- 製造ファイルチェック
- 製造（メタルマスク込）
- パーツ郵送
- 実装

となります。このへんの細かい話は、業者さんにもよって違いますし、どれだけの制約があるのかは前もって把握しておいたほうが良いです。