M5 CoreInkでDeepSleep( ˘ω˘)スヤァ
↑の続きデース☆
さあて、せっかくE-Inkで電池節約できるっていうのに、電源入りっぱなしじゃあもったいないのです。
E-ink=電子ペーパーは、その特徴として、表示の切り替わりの時にしか電気を使いません。なので、書き換えないときはコンピュータもがっつりおやすみ=DeepSleepさせて、電池を節約しましょう。というのが今回のお題。
このCoreInkさんには、BM8563というRTCのチップがはいっていて、リアルタイムクロックしてくれる。っていうのも前回書いた通りですが、このRTCには、CPUとかががっつり寝ているDeepSleep中でも指定時刻にCPUを起してくれるという素敵な機能がついています。
ただ、その情報がなかなかみつかりませんのです><
公式のGithubをあさってみて
RTC_WakeUp というサンプルを見つけましたが、こちら、まだ正式なライブラリ化されていない関数(M5.shutdown)が使われていて、普通に実行しようとするとそんなの定義されてないよーエラーになります><
以下非推奨
と、ゆーわけで、Github上から直接最新ライブラリをDLしてきて使えるようにしちゃいましょう。
※以下、公式GitHubのコードではありますが、正式なお作法にのっとった方法ではありません(まだテスト中なのかな?)ので、良い子の皆さんはこんなせっかちな方法をとらずに、正式版のリリースをおまちください><
↑通常の方法でセットアップされているCoreInkライブラリ、2020年12月22日現在、バージョンは0.0.1。
非推奨なやり方
やり方は簡単。さきほどのGitHubの[Code]というところから
Download ZIP をして、Zipファイルでまるっとダウンロードしてきます。
それから、ArduinoIDEで、スケッチー>ライブラリをインクルードー>.ZIP形式のライブラリをインストール
とやって、先ほどダウンロードしてきたZipファイル(M5-CoreInk-master.zip)を指定します。
これで、インストールはできた、のですが、このままだと前のライブラリが残っているので、コンパイルすると
こんなエラーになるはずです。
「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
を不可視にしてしまえばよいわけです。(ライブラリの場所は環境によって違いますので、自分のエラーメッセージをちゃんと見ましょうネ☆)
↑あったあった。私の環境ではここです。この M5-CoreInk というフォルダを右クリックして、送るー>圧縮(Zip)フォルダーしてしまいましょう。
すると、 M5-CoreInk.zip というzipファイルができているはずなので(念のためのバックアップ)安心して先ほどの M5-CoreInkフォルダを選択して右クリックー>削除します。(MacとかだとZip圧縮したらそのまま元フォルダ消えてくれるんですけどね)
さて、ここまでやったら改めてIDEからコンパイルしてみます。
ノーエラー!(∩´∀`)∩☆
ばっちりですね!☆
※この方法なら、古いZipファイルにもともとのライブラリが入っていますので、新しいライブラリ(M5-CoreInk-master)を使わないときはまた古い方を解凍して、同じ要領で入れ替えればOKです。
※新ライブラリは中を見ると Version 0.0.2 となっていました。わざわざこんな方法を使わなくてももうじき公式にアップデートされて「ライブラリを管理」から自動インストールされるようになるとおもいます。
じゃ、実行してみよー!
IDEの[⇒]を押して、CoreInkさんにコンパイル&転送をします。
すると、
こんな画面になりました。
PWR(パワー)ボタンを押したら5秒スリープして、その後目覚めるよ。
みたいなことを言うてますね。
パワーボタンは、
こんなかんじで本体側面についています。この部分をむぎゅっと押すかんじ。(余談ですけど、M5Stack系の裏側って情報ぎっしりでうれしくなりますね☆ こういうデザイン素敵です♡)
パワーボタンを押すと、
さっきまで光っていた上側の緑のLEDが消えて、5秒たってからまた光だし、画面もリフレッシュされました(∩´∀`)∩☆
無事、おやすみ&目覚めができているようです。ヤッタネ!☆
時計と合体!
次に、このおやすみ機能を使って1分間眠らせて、1分たったら目覚めて時刻を表示する時計なんぞを作ってみましょー。
と、以前作ったプログラム(RTC_NTP)と合体させたのがコレです。
ただ、そのままshutdownすると、次のおめざめのときにもういちど setupから立ち上がってしまうようです。
また、その際、せっかくネットから取得してきたRTCの時刻もリセットされてしまう模様…。
そうすると、またネット接続が必要になってしまって、そこで電力が使われてしまうので、あんまり意味ない気もします。
このあたり、きっともっとエレガントな(ディープではないスリープ)ができるとおもうのですけど、また調査不足><
もうちょっと調べて、作り直そうとおもいますー☆
ライブラリがアップデートされたらドキュメントとかも整備されるかなー?
↑1分毎に再起動する版。いちおう分までの数字大きくしてみました。
よろしければサポートお願いします!いただいたサポートはクリエイターとしての活動費にさせていただきます!感謝!,,Ծ‸Ծ,,