見出し画像

M5 CoreInkでDeepSleep( ˘ω˘)スヤァ

↑の続きデース☆

さあて、せっかくE-Inkで電池節約できるっていうのに、電源入りっぱなしじゃあもったいないのです。
E-ink=電子ペーパーは、その特徴として、表示の切り替わりの時にしか電気を使いません。なので、書き換えないときはコンピュータもがっつりおやすみ=DeepSleepさせて、電池を節約しましょう。というのが今回のお題。

このCoreInkさんには、BM8563というRTCのチップがはいっていて、リアルタイムクロックしてくれる。っていうのも前回書いた通りですが、このRTCには、CPUとかががっつり寝ているDeepSleep中でも指定時刻にCPUを起してくれるという素敵な機能がついています。

ただ、その情報がなかなかみつかりませんのです><

公式のGithubをあさってみて

RTC_WakeUp というサンプルを見つけましたが、こちら、まだ正式なライブラリ化されていない関数(M5.shutdown)が使われていて、普通に実行しようとするとそんなの定義されてないよーエラーになります><

以下非推奨

と、ゆーわけで、Github上から直接最新ライブラリをDLしてきて使えるようにしちゃいましょう。

※以下、公式GitHubのコードではありますが、正式なお作法にのっとった方法ではありません(まだテスト中なのかな?)ので、良い子の皆さんはこんなせっかちな方法をとらずに、正式版のリリースをおまちください><

画像2

↑通常の方法でセットアップされているCoreInkライブラリ、2020年12月22日現在、バージョンは0.0.1。

非推奨なやり方

やり方は簡単。さきほどのGitHubの[Code]というところから

画像1

Download ZIP をして、Zipファイルでまるっとダウンロードしてきます。

それから、ArduinoIDEで、スケッチー>ライブラリをインクルードー>.ZIP形式のライブラリをインストール

画像3

とやって、先ほどダウンロードしてきたZipファイル(M5-CoreInk-master.zip)を指定します。

これで、インストールはできた、のですが、このままだと前のライブラリが残っているので、コンパイルすると

画像4

こんなエラーになるはずです。

「M5CoreInk.h」に対して複数のライブラリが見つかりました
使用済:d:\work\Arduino\libraries\M5-CoreInk
未使用:d:\work\Arduino\libraries\M5-CoreInk-master

M5CoreInk.hが二つはいってるぞ。ってことですね。で、使用済というほうを使っていて、未使用の方を使っていないヨ。(そっちがあたらしいやつなのに)

その上、

error: 'class M5CoreInk' has no member named 'shutdown'
M5.shutdown(5);

とも言われています。 shutdownがM5CoreInkクラスにはいってないじゃんよ。とのこと。

新しいライブラリには入っているのに、それを見てないアンタ(IDE)がわるいんじゃないの? とも思うますけれども、新しい方を見に行くほど賢くはないようです。

なので、古い方を見えないようにしちゃいましょう。

ようは、先ほどのエラーメッセージ中にある、古い方

d:\work\Arduino\libraries\M5-CoreInk

を不可視にしてしまえばよいわけです。(ライブラリの場所は環境によって違いますので、自分のエラーメッセージをちゃんと見ましょうネ☆)

画像5

↑あったあった。私の環境ではここです。この M5-CoreInk というフォルダを右クリックして、送るー>圧縮(Zip)フォルダーしてしまいましょう。

すると、 M5-CoreInk.zip というzipファイルができているはずなので(念のためのバックアップ)安心して先ほどの M5-CoreInkフォルダを選択して右クリックー>削除します。(MacとかだとZip圧縮したらそのまま元フォルダ消えてくれるんですけどね)

さて、ここまでやったら改めてIDEからコンパイルしてみます。

画像6

ノーエラー!(∩´∀`)∩☆

ばっちりですね!☆

※この方法なら、古いZipファイルにもともとのライブラリが入っていますので、新しいライブラリ(M5-CoreInk-master)を使わないときはまた古い方を解凍して、同じ要領で入れ替えればOKです。

※新ライブラリは中を見ると Version 0.0.2 となっていました。わざわざこんな方法を使わなくてももうじき公式にアップデートされて「ライブラリを管理」から自動インストールされるようになるとおもいます。

じゃ、実行してみよー!

IDEの[⇒]を押して、CoreInkさんにコンパイル&転送をします。

すると、

画像7

こんな画面になりました。

PWR(パワー)ボタンを押したら5秒スリープして、その後目覚めるよ。

みたいなことを言うてますね。

パワーボタンは、

画像8

こんなかんじで本体側面についています。この部分をむぎゅっと押すかんじ。(余談ですけど、M5Stack系の裏側って情報ぎっしりでうれしくなりますね☆ こういうデザイン素敵です♡)

パワーボタンを押すと、

画像9

さっきまで光っていた上側の緑のLEDが消えて、5秒たってからまた光だし、画面もリフレッシュされました(∩´∀`)∩☆

無事、おやすみ&目覚めができているようです。ヤッタネ!☆

時計と合体!

次に、このおやすみ機能を使って1分間眠らせて、1分たったら目覚めて時刻を表示する時計なんぞを作ってみましょー。

と、以前作ったプログラム(RTC_NTP)と合体させたのがコレです。

ただ、そのままshutdownすると、次のおめざめのときにもういちど setupから立ち上がってしまうようです。

また、その際、せっかくネットから取得してきたRTCの時刻もリセットされてしまう模様…。

そうすると、またネット接続が必要になってしまって、そこで電力が使われてしまうので、あんまり意味ない気もします。

このあたり、きっともっとエレガントな(ディープではないスリープ)ができるとおもうのですけど、また調査不足><

もうちょっと調べて、作り直そうとおもいますー☆

ライブラリがアップデートされたらドキュメントとかも整備されるかなー?

画像10

↑1分毎に再起動する版。いちおう分までの数字大きくしてみました。

#M5Stack #Coreink #RTC

よろしければサポートお願いします!いただいたサポートはクリエイターとしての活動費にさせていただきます!感謝!,,Ծ‸Ծ,,