概要
最近発売されたM5Stack社の新製品であるM5Stamp Picoを3種類共に買ってみたので紹介したいと思います。
製品
同梱物が違うものが3種類発売されました。本体はすべて同じですが、付属品のみの差になります。
M5Stamp Pico (5pcs)
- M5Stamp Pico (5pcs)(本家ストア)
5個セットの商品です。1個5ドルが5個で23.90ドルとあまり安くなりません。付属品はステッカーのみになります。
M5Stamp Pico Mate with Pin Headers
- M5Stamp Pico Mate with Pin Headers(公式ストア)
- M5Stamp Pico Mate(スイッチサイエンス)
本体、ステッカーの基本セットにヘッダピンとGroveコネクタ、本体開封用の六角レンチが入っています。一番標準的なセットになります。
M5Stamp Pico DIY Kit
- M5Stamp Pico DIY Kit(公式ストア)
- M5Stamp Pico DIY Kit(スイッチサイエンス)
Mateに箱とUSBダウンローダーがついたセットになります。15.95ドルしますが、Mateが5ドル、USBダウンローダーが4.95ドルなので、箱が6ドルすることになります。ちょっと割高なキットだと思います。
USBダウンローダー
- ESP32 Downloader Kit(本家ストア)
DIY Kitに同梱されているUSBダウンローダーは別売りもされています。もともとは単品だったのですが、Unit CAMが販売されてからUSBダウンローダーとして付属品が増えて販売しています。
上記で利用しているものが初期の本体のみのものになります。
現在は単品が販売停止になって、上記の付属品がついたものが同じ値段で販売されています。ジャンパケーブルと、UNIT Camにかんたんに書き込むことができるヘッダと基板になります。
M5Stamp Picoへの書き込み方法(純正版)
M5Stamp PicoはUSBシリアルを内蔵していないため、別途USBシリアル変換が必要になります。
こんな感じでUSBダウンローダーを挿せばそのまま書き込める形になっています。基本的には純正以外のUSBシリアルアダプタでも問題ないのですが、EN(リセット)とGPIP0(ダウンロードモード)の接続をするか、手動で制御するかしないとリセット後にダウンロードモードに設定することができません。
M5Stamp Picoへの書き込み方法(純正以外版)
純正のUSBダウンローダーを使えれば非常にかんたんですが、日本ではまだ販売されていないのでその他のUSBシリアルを使った場合の書き込み方法です。
使ったのは上記と同じようなものです。3個でプライムなのに585円と安い。。。
こんな感じの接続になります。
M5Stamp Picoへの書き込み方法(ESP-Prog)
純正以外だとESP8266用のESP-Progがおすすめです。こちらはESP32でも利用が可能で、必要なピンも提供されています。ただし、接続する端子名がちょっと違うので注意してください。
こんな見た目のボードで、本体にリセットボタンがついています。M5Stampはリセットボタンがないので結構便利です。ジャンパもメスとオスが使えるのでいいですね。ESP8266だとこの形の端子がそのまま搭載されていることが多いので直接接続して書き込むことができます。
上記みたいのです。ただし技適がないので日本では使えません。そのためESP-Progもあまり有名ではないと思います。
結構使いやすいので専用ケーブルを作成してみました。下はセロテープで固定したものです。これでも十分実用的です。
上記みたいなQIコネクタセットを利用したのが上になります。ジャンパケーブルもQIコネクタなので、爪の部分をニッパーでカットするか、小さいマイナスドライバーを使うことでコネクタから抜くことができます。1×6と2×4コネクタを使うことで市販品みたいなちゃんとした専用ケーブルを作ることができます。3V3を赤ケーブルにするなどして方向を確定させてあげてください。
QIコネクタを使うのであればジャンパ線は6本で大丈夫だと思います。セロテープだと8本あったほうが固定しやすいです。
USBシリアルの電源設定は3V3(3.3V)にする
これは重要で、ESP32は3.3Vの電圧で動作しているので、USBシリアルの信号の電圧も3.3Vにする必要があります。大抵のUSBシリアルは電圧設定が可能なので設定しましょう。今回使ったのはVCCと利用する電圧を黄色のジャンパで接続するタイプです。
上記の商品みたいに基板上に切り替えがあるものもあります。切り替えがないものは3.3Vのものが最近は多いようです。
必要な接続をする
M5Stamp | 純正USBダウンローダー | USBシリアル(今回) | USBシリアル(その他) | ESP-Prog |
3V3 | 3.3V | 3V3 | 3V3 | |
G1(Tx0) | RXD | RXD | RXD | TXD |
G3(Rx0) | TXD | TXD | TXD | RXD |
EN | EN | 未接続 | 未接続 or RTS | RST |
G0 | G0 | GND | GND or DTR | G0 |
G | GND | GND | GND | GND |
5V | 5V |
上記のような接続になります。使うUSBシリアルによって、電源が異なります。今回使ったやつはVCCの電圧選択で3V3を使ってしまっているので接続しやすい5Vから電源を入れています。3.3Vが取りやすいUSBシリアルであれば3.3Vを入力してあげたほうが純正USBダウンローダーに近い形になります。
また、通常のUSBシリアルにはEN(リセット)とGPIO0の端子がありません。
RTS信号とDTR信号が出ている上記のようなUSBシリアルの場合には、RTS信号をENに、 DTR信号をGPIO0に接続することで自動書き込みができます。
私はFT232HというESP32でJTAGを接続するときに使うUSBシリアルで試しました。(このボード信号レベルの設定がないぞ。。。オシロスコープで確認したら3.3V固定でした)
M5Stamp | FT232H |
3V3 | 3.3V |
G1(Tx0) | AD1(RXD) |
G3(Rx0) | AD0(TXD) |
EN | AD2(RTS) |
G0 | AD4(DTR) |
G | GND |
上記のような接続で自動書き込みまで可能です。FT232Hは高いので、書き込みだけであればFT232RLなどの安いUSBシリアルも使いやすいと思います。とはいえ、FT232HはJTAG接続で使えるので1つは持っていてもいいと思います。
RTS信号とDTR信号が出ていない場合の書き込み方法
ちょっと面倒です。自動書き込みが動きませんので手動で操作する必要があります。
ESP32を書き込みモードにするためには電源ONのときにGPIO0をGNDに落としている必要があります。つまり、GPIO0とGNDを直結した状態で電源を入れるとダウンロードモードになって書き込めます。
電源を入れる方法は、USBシリアルからM5Stampにつながっている電源線かGND線を抜いてから、再接続することでM5Stampの電源が入ります。もしくはUSBシリアルを抜いて、PCに入れ直すことでも電源が入ります。または、ENをGNDに落とすことでも再起動します。お好きな方法で試してください。
書き込んだあとはGPIO0がGNDのままだと起動しないので、GNDとの接続を外してから再起動します。
一般的にはブレッドボードとかにタスクスイッチを載せて、ENをGNDに押したら接続するようにしたリセットボタンと、GPIO0をGNDに押したら接続するようにしたダウンロードボタンを用意して、ダウンロードボタンを押したままリセットをちょんと押してダウンロードモードにするのが定番です。
UIFlowを一度書き込むぐらいであれば直結して電源オンでいいと思います。Arduino IDEから何度も書き込む場合には回路を組むよりはRTS信号とDTR信号が出ているUSBシリアルを入手したほうがいいと思います。
Groveコネクタの接続
まずGroveコネクタを接続しようとしたら、ケースを加工する必要があります。コネクタの部分をニッパーなどで切り離します。
- GROVE – ユニバーサル4ピンコネクタ 90°(10個入りパック)(スイッチサイエンス)
GroveコネクタはSeeedさんの90度タイプが使えるのですが、Mateの付属品を見てみるとちょっと形状が違います。左側が付属品ですが左上の部分に耳みたいなのがでています。実はこの部分がケースにひっかかることで、コネクタが抜けなくなっていると思われます。
接続するためには、MACアドレスが書かれているシールをめくり、六角レンチでネジを外します。
中身です。この状態でコネクタを入れます。
裏側です。こちら側にはなにも実装されていませんね。
付きました。
これぐらいピンが飛び出ます。気になる人はニッパーで切り落としましょう。高いニッパーだと刃こぼれするのでたぶん100円ショップとかの安いやつの方が良さそうです。ちなみに見た目ではわからないのですが、手持ちの耳無しをつけたので実は分解しなくても大丈夫でした。。。
ちなみにGroveケーブルで5Vを突っ込めば起動しますので、通信できないボードとかにGroveケーブルでUART接続して、通信対応とかがかんたんにできそうです。
UIFlowのはじめかた
実は出荷時にUIFlowが書き込まれています。ただし、初期ロットの出荷バージョンだと古いUIFlowが入っているので動きません。最新版に更新する必要があります。M5Burnerで書き込むときにWi-Fi設定が可能なので、通常は最新バージョンに更新して使うことがおすすめです。
追加で購入してみましたが、初期ロット以降は新しいUIFlowがはいっていましたのでそのままつかっても大丈夫だと思います。とはいえ、そのときに最新に入れ替えるの無難です。
正規のUIFlowのはじめかた?
出荷時に接続可能なUIFlowが入っていた場合、電源とGNDを接続すると起動させます。Wi-Fiに接続できない場合にはSoftAPモードでM5Stampが起動するようです。スマホなどでWi-Fiを検索すると「M5-??????」みたいなAPがあるので接続します。?の部分がUIFlowのAPI KEYになります。8文字である場合には古いバージョンなので接続できません。最新版はMACアドレスになるので12文字のはずです。
その後に192.168.4.1に接続することでブラウザからWi-Fi設定が可能になります。
上記のような画面でSSIDとパスワードを設定します。
成功すると上記のような画面になります。そしてUIFlowからMACアドレスをAPI KEYの代わりに入れると接続できるはず。。。
MicroPython 01c665e71-dirty on 2021-07-07; M5Stack with ESP32
MicroPython 60cdf6018-dirty on 2021-08-13; M5STACK STAMP-PICO with ESP32
また、私の出荷時のUIFlowは2021-07-07バージョンですが、M5Burnerの最新版である1.8.2だと2021-08-13バージョンでした。UIFlowはOTAで更新できないので出荷時のままでUIFlowを使うのはやっぱり難しいかも???
API KEYの調べ方
M5StampのUIFlowの場合これまでの8文字のAPI KEYではなく、MACアドレスを利用することに変わりました。ちなみに発売後1週間ぐらいは8文字のAPI KEYが発行されていました。その期間にUIFlowを最新版に更新した人は8文字のAPI KEYが払い出されており、現在接続できません。その場合にはM5BurnerのEraseを使って消してから、UIFlowを入れ直すことでAPI KEYがMACアドレスに書き換わります。
API KEYはMACアドレスなので、本体に貼ってあるシールを見るか、M5BurnerのCongigurationボタンで表示することが可能です。
まとめ
初心者には向かないボードですが、結構楽しそうです。とはいえ、ATOM Liteが7.5ドルです。スイッチサイエンスだと462円差ですね。USBダウンローダーを別途揃えるのと、電源供給をどうするのかを考えないと行けないので一個だけ使うとかであればATOMの方が楽だと思います。
コメント
いつも大変参考にさせて頂きありがとうございます。UIFlowでもう1つのやり方としてクイックスタートのやり方があります(https://docs.m5stack.com/en/quick_start/stamp_pico/quick_start_uiflow)
M5Burner.exeをダウンロード、実行して左ペインでCOREを選び、UIFlow(PICO)からDownload。続いて画面からBurnで書き込み。この時WiFi情報を入力。Burnが終わったらConfigureをクリック。ここでApiKeyが画面に出ます。 ApiKeyがわかったので一通り終わったら UIFlowが使えます。
非常に意欲的ですがビミョーに使い所に悩むデバイス、が第一印象です。
従来のM5シリーズ商品のようなモジュール+周辺モジュールとして商品に使う場合M5stampが未完成状態のため「誰がピンヘッダやgroveコネクタをハンダ付けするか」という問題があります。M5Stampを商品の基板に直接SMD実装する場合ESP-WROOMに対するメリットが小さいです(公式にuiflowが使えるというメリットはあります)。
あとLCD(M5stack)又はUSB(M5Atom)がないとWifi設定/ApiKey等のID確認が難しいというESP32共通の問題があります。softAPやsmartconfig等の解決方法がありますが、商品としては設定I/FがsoftAP/smartconfigだと厳しいです。。(結局DevKitCやM5AtomのようにUSB-UARTが無いと使いにくい)
UIFlowのM5Stamp設定を使って、非公式ではあるもののESP-WROOM32とUIFlowを組み合わせた作例が広がると面白いかもしれません。