M5Stack社より「M5Stamp Pico」という製品が発売されました。
「M5Stamp Pico」は、「M5stickC」や「ATOM Lite」などと同じく「ESP32-PICO-D4」を搭載したモジュールです。
他のモジュールよりも単純な回路構成になっているのが特徴で、回路図を確認したところ、ESP32の他には電源レギュレータ、LED、アンテナ、抵抗、コンデンサなどしか使われていません。
USBシリアル変換さえ搭載されていないため、プログラムを書き込むには、別途USBシリアル変換基板を用意する必要があります。
外付けセンサなどをつなぐにも、端子の加工(はんだづけ)が必要で、他と比べると若干扱いにくそうなモジュールです。
ただ、回路構成が単純ということは、より低電力で動かすことができそうです。
ドキュメントには「0.35mA@deep sleep時」と記載されています。
私はこれまで、M5StackやM5StickC、M5Cameraなどを使って、屋外で常時稼働させるIoTデバイスをつくってきましたが、屋外で使用するには電源の確保が大きな課題になります。
ソーラーパネルを使用していますが、M5Stackなどのデバイスは、たとえdeep sleep中であっても消費電力が比較的大きいため、それなりに大きいソーラーパネルを使用する必要があります。
IoTデバイスの消費電力が小さければ、ソーラーパネルもより小さなシンプルなものでよくなるかもしれず、そういう面から「M5Stamp Pico」はとても魅力的です。
そんな訳で、「M5Stamp Pico」を購入し、Arduino IDEを使って動作確認してみることにしました。
今回購入したのは、スイッチサイエンスで販売されている「M5Stamp Pico Mate」と「M5Stamp Pico DIY Kit」です。
「M5Stamp Pico Mate」は、本体およびいくつかの端子類などがセットになっており、必要に応じて端子を本体にはんだづけして使うことになります。
「M5Stamp Pico DIY Kit」には、それに加えてダウンローダ(USBシリアル変換基板)が付属しています。つまり、「DIY Kit」をひとつ購入しておき、後は「Mate」を追加購入すれば、ダウンローダを共用することで、複数の「M5Stamp Pico」を使うことができます。
早速試してみます。
- 本体にダウンローダを差し込みます。
- Arduino IDEを起動します。
- 「Arduino」>「Preferencies…」を選択し、「設定」タブの「追加のボードマネージャのURL」に「https://m5stack.oss-cn-shenzhen.aliyuncs.com/resource/arduino/package_m5stack_index.json」を追加します。(注)
- 「ツール」>「ボード:」>「ボードマネージャ…」を選択し、「M5Stack by M5Stack official」をインストールします。(注)
- 「ツール」>「ボード:」>「M5Stack Arduino」>「STAMP-PICO」を選択します。(注)
- ダウンローダとパソコンをUSBケーブルでつなぎ、「ツール」>「シリアルポート」で、該当するポートを選択します。シリアルモニタも開いておきます。
- 「ファイル」>「スケッチ例」>「WiFi」>「WiFi Scan」を開き、「M5Stamp Pico」に書き込みます。
- シリアルモニタに、近くにあるWi-Fiアクセスポイントの一覧が表示されます。
簡単に動作させることができました。
今後、色々な活用方法を考えていこうと思います。
2021年12月1日追記 当初は、上記のとおりインストールした「STAMP-PICO」ボードを使っていたのですが、その後、これを使うと「コンパイルできない」「コンパイルはできてもその後の挙動がおかしい」などの症状が頻繁に発生するようになりました。 詳しく調べていないので原因は不明ですが、他のボードを使うと正常動作することから、現在は「ESP32 Arduino」>「M5Stack-ATOM」ボードを使っています。 「ATOM Lite」と「M5Stamp Pico」は回路構成がほとんど同じため、このボードを使っても特に問題はないようです。 「M5Stack-ATOM」ボードを使う場合、上記の手順で(注)と書いてある3つの作業は不要になります(もちろん、ESP32用ボードのインストールは必要です。手順は こちら)。 なお、「M5Stack-ATOM」ボードを使う場合、デフォルトで設定されているピン名がATOM用になってしまいます。例えば「Wire.begin();」と書いた場合、SDAは26、SCLは32にアサインされます。 このため、スケッチを書く際には、「Wire.begin(21, 22);」のようにピン名を明記する必要があります。
なお、私がM5Stack、M5StickCの使い方を習得するのにあたっては、以下の書籍を参考にさせていただきました。
ごく基本的なところから、かなり複雑なスケッチや、ネットワーク接続など、比較的高度なものまで、つまづかずに読み進めていけるような構成になっており、大変わかりやすい本です。