M5Stack CoreInkでできること 〜M5Stack CoreInkの使い方

以前、「Timer Camera F」を、超低電力のIoTデバイスとして活用したことがあります(記事は こちら)。

1時間に1回、温度データを測定してWebサーバに送信させたところ、270mAhの内蔵バッテリーだけで、なんと「70日と17時間」も連続稼働させることができました。
外付け電源もつながず、この小さなデバイスをポンと置いておくだけで、2ヶ月以上もデータを測定し続けることができるという驚きの結果です。

さて、「Timer Camera」と同じような超低電力のデバイスに「M5Stack CoreInk開発キット」という製品があります。

「Timer Camera」と同様に、スタンバイ時には電源供給そのものを停止することにより、超低電力を実現しているようです。

「Timer Camera」はカメラデバイスですが、「M5Stack CoreInk」は普通のIoTデバイスで、電子ペーパーディスプレイが搭載されています。
電子ペーパーは電源を落としても表示が残る低電力の表示デバイスです。
「Timer Camera」で温度データを測定した時には、測定した温度をWebサーバに送信するだけでしたが、ディスプレイがあれば、その場で温度を確認することもでき、いろいろと用途が広がりそうです。

また、「Timer Camera F」の内蔵バッテリー容量が270mAhなのに対し、「M5Stack CoreInk」のバッテリー容量は390mAhです。
もしも「M5Stack CoreInk」の消費電力が「Timer Camera F」と同等であれば、単純計算で「390mAh / 270mAh = 1.44倍」となり、前述のアプリケーションであれば「70日 × 1.44倍 = 100.8日」と、3ヶ月以上連続稼働できる計算になります。

その他にも、「Timer Camera」の外部端子はGROVEポートだけなのに対し、「M5Stack CoreInk」では多数のGPIOが出ており、いろいろな使い方ができそうです。ボタンもたくさんついています。

もう一点、実は「Timer Camera」には、内蔵バッテリーで動かした際に、デバイスによって挙動が不安定になるという問題があります(記事は こちら)。
バッテリー電圧が3.7V〜4Vぐらいの時、正常に動作しないという現象で、私が持っている10台ほどのデバイスのうち、およそ半数は条件によっては正常動作しません。
原因は不明ですが、電源周りの回路構成の問題ではないかと疑っています。

これに対し「M5Stack CoreInk」ですが、スタンバイ時に電源供給そのものを停止するという、低電力化の仕組み自体は「Timer Camera」と同じですが、回路図を確認したところ、実際の電源周りの回路構成は「Timer Camera」とは大きく異なっていました。
回路構成が違うということは、「Timer Camera」の問題は「M5Stack CoreInk」では起こらない可能性もあり、その点でも期待が持てます。

「M5Stack CoreInk」の価格が「Timer Camera」より高いこともあり、これまでは使用するのを躊躇していましたが、このようにメリットがたくさんあるため、一度使ってみることにしました。

このようなデバイスです。

底面に、USB-CポートとGROVEポートがあります。

右下に電源ボタンがあります。またその上の黒い部分は「up」「down」「push」の3つのアクションを受け付ける多機能のボタンです。

上面には「M5StickC」のHATと同様のポートがあります。

裏面には、16本のピンとリセットボタンがあります。

それでは「Arduino IDE」で動かしてみます。

Arduino IDE、USBドライバのインストール

PCに、Arduino IDEとUSBドライバをインストールします。「M5Stack CoreInk」には、ドライバチップがCP2104とCH9102の2種類のバージョンがあるようです。こちら のページから、所望のドライバをダウンロード・インストールします。

ボードマネージャのインストール・ボード設定

ボードマネージャをインストールし、ボード設定を行います。
実は私は、開発環境がバージョンアップすることによりコンパイル時の挙動が変わってしまうのを避けるため、古い開発環境と最新環境の2種類を準備し、それらを使い分けています。
以下のとおり2種類の環境で設定を行い、両方で「M5Stack CoreInk」が正常動作することを確認しました。

  • 「Arduino」>「Preferences…」で環境設定ウィンドウを開き、「追加のボードマネージャのURL」に以下を追記し、「OK」をクリックします。
    • [旧環境] https://dl.espressif.com/dl/package_esp32_index.json
    • [最新環境] https://m5stack.oss-cn-shenzhen.aliyuncs.com/resource/arduino/package_m5stack_index.json
  • 「ツール」>「ボード」>「ボードマネージャ」でボードマネージャを開き、以下をインストールします。
    • [旧環境] esp32 by Espressif Systems(1.0.6)
    • [最新環境] M5Stack by M5Stack official(2.0.2)
  • 「ツール」>「ボード」で以下を選択します。
    • [旧環境] 「ESP32 Arduino」>「M5Stack-CoreInk」
    • [最新環境] 「M5Stack Arduino」>「M5Stack-CoreInk」

ライブラリのインストール

「ツール」>「ライブラリを管理…」でライブラリマネージャを開き、「M5-CoreInk by Hades」ライブラリをインストールします。

動作確認

サンプルスケッチを使って動作確認します。

  • 「ファイル」>「スケッチ例」>「M5-CoreInk」>「HelloWorld」を開きます。
  • 「→(マイコンボードに書き込む)」をクリックします。
  • ディスプレイに、小さく「Hello World!」と表示されたら正常に動作しています。

裏面のリセットボタンを押すと電源がOFFになりますが、ディスプレイの表示は残ります。

とても簡単に使うことができました。
これからいろいろと試していきたいと思います。

なお、私がM5Stack、M5StickCの使い方を習得するのにあたっては、以下の書籍を参考にさせていただきました。


ごく基本的なところから、かなり複雑なスケッチや、ネットワーク接続など、比較的高度なものまで、つまづかずに読み進めていけるような構成になっており、大変わかりやすい本です。


このサイトで書いている、M5Stackシリーズ(M5Stack、M5StickCなど)に関するブログ記事を、「さとやまノート」という別のブログページに、あらためて整理してまとめました。

他のM5Stackシリーズの記事にも興味のある方は「さとやまノート」をご覧ください。