M5Stamp Picoを触ってみた治具作成＆リフローしてみた

##到着
スイッチサイエンスさんに注文したM5Stampが届きました。

https://twitter.com/dannymodules/status/1426431021210161158

書込みツールが付属したDIY KITが品切れだったので、モジュールのみ(mate)を3個購入しました。シールに従ってUSBシリアル変換アダプターとケーブルを接続してTeraTarmなどで119200bpsで接続すると起動メッセージが出て、そこにAPIKEYが表示されます。

```terminal
ets Jun  8 2016 00:22:57

rst:0x1 (POWERON_RESET),boot:0x13 (SPI_FAST_FLASH_BOOT)
configsip: 188777542, SPIWP:0xee
clk_drv:0x00,q_drv:0x00,d_drv:0x00,cs0_drv:0x00,hd_drv:0x00,wp_drv:0x00
mode:DIO, clock div:1
load:0x3fff0018,len:4
load:0x3fff001c,len:5280
ho 0 tail 12 room 4
load:0x40078000,len:12908
load:0x40080400,len:3512
entry 0x4008063c

       _  __ _
 _   _(_)/ _| | _____      __
| | | | | |_| |/ _ \ \ /\ / /
| |_| | |  _| | (_) \ V  V /
 \__,_|_|_| |_|\___/ \_/\_/

APIKEY: ????????
MAC: ????????????
```

https://twitter.com/dannymodules/status/1427198901480660996

##Arduinoで書込み
M5シリーズは基本的にESP32が使われており、電源投入時に特定のピン(G0)をGNDと接続することでUART Download Modeに入ります。このモードにするために３Dプリンタで治具を作りました。
![M5Tool.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/103939/5e311a1a-c72d-bdbb-9e2e-233b2a77ddef.jpeg)

[f3d/stlファイルはこちらです](https://github.com/NaohiroIIDA/M5StampJig)
https://github.com/NaohiroIIDA/M5StampJig

Fusion360を使って、プログラム中にM5Stampがグラグラ動かないように枠を作ります。セットしたM5Stampとの接続にはポゴピンを使います。内蔵されたバネの力で端子を押し付けることで、パッドとの接続を保ちます。（[amazonで購入できます](https://www.amazon.co.jp/gp/product/B01AOV9A82/）))
##結線
この様に結線しました。

| USBシリアル変換 | スイッチ | M5Stamp |
|:----------:|:----------:|:-----:|
|     DTR    | -     | -      |
|     RxD    | -     | Tx     |
|     TxD    | -     | Rx     |
|     VCC    | -     | 3v3    |
|     CTS    | -     | -      |
|     GND    | -     | GND    |
|     -      | SW1   | EN(Reset)|
|     -      | SW2   | G0    |

２個のボタンはそれぞれEN（Reset)とG0ピンに繋がっていて、押す事でGNDと接続されます。G0をGNDと接続した状態でリセットすることでUART Download Modeに入ります。
組み立てるとこんな感じに。
![IMG_8453.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/103939/bc75df76-c85d-a370-dd28-9ffedf45aec6.jpeg)![IMG_8406.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/103939/79dde68c-e84a-7157-6c6e-3b208ad135c4.jpeg)

##Arduino　IDEの設定
公式ページに従って進めます。
https://docs.m5stack.com/en/arduino/arduino_development
![ 2021-08-22 16.48.09.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/103939/0f9d49a4-ed6b-d1ed-01e2-35dd7261b1b4.png)
インストールを進めると、ボードマネージャーから『STAMP-PICO』が選べる様になります。
![2021-08-22 16.56.32.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/103939/2bbcef76-7e11-5e48-d1a1-09eedfac7c0b.png)
スケッチを描いて、治具のUSBシリアルモジュールのポートも設定します。書き込む直前にEN,G0両方のボタンを押したまま、EN(Reset)のボタンを先に外します(そのあとでG0ボタンも離してOK）。これでUARTダウンロードモード状態になるので、ArduinoIDEの書き込みボタンを押すと書き込みが出来ます。

ちなみにですが、出荷されたM5Stampには最初からUiFlowのファームが書き込まれています。Arduinoで書き込むとUiFlowのファームは消えてしまいますので、再度使う時にはM5Burnerを使って書き込む必要があります。

##基板も作ってリフローしてみた
M5Stampは耐熱プラスティックの外装やリフロープロファイルも公開されている。せっかくなので基板実装してみた。まずEagleでライブラリを作成して、赤外線リモコン信号を送信する基板をデザインしてみた。その後インクジェットプリンタを使ってフォトマスクを作成して、サンハヤトの感光基板を使って作成してみました。
[Qiita:ハッカソンなのにエッチングで基板を量産する](https://qiita.com/NaohiroIIDA/items/8dac084ea88bdb3573b9)


![m5stamp.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/103939/bcc7df3c-071a-c8b1-02d0-47be1f9754a7.png)
[作成したM5Stamp_Pico.lbrはこちらです](https://github.com/NaohiroIIDA/M5StampJig/blob/main/M5Stamp_Pico.lbr)
![IMG_8443.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/103939/0e5c0f6e-5810-a60b-31c9-081ad705217e.jpeg)
![IMG_8444.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/103939/dc4c568f-b25e-21b1-1313-8b65136ce8ba.jpeg)
![IMG_8445.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/103939/886884c3-1f95-3dfd-c690-73fb07e39d0b.jpeg)
M5Stampをこのままリフロー炉に入れても問題なく実装でき、一発で動作しました。
ちなみにこれは、『自宅のM5Atomのボタンを押すと数キロ離れた事務所のエアコンがONになる装置』です。

##感想：とても使いやすい
コンパクトで値段も安価かつSMT実装が出来るのは、試作や少量生産を行う自分にはとてもありがたい。開発はVSCode+PlatformIOでもMicroPythonでもOKだし、例えばM5Atomで試作したものをプリント基板に起こして３０セット作るとか・・・そんな案件で使ってみたいです。

##余談：バネが強すぎた
https://twitter.com/dannymodules/status/1428550590565478401