最近では、多くの家庭の電力メーターがスマートメーターに交換されており、Wi-SUNという長距離通信方式によって電力使用料が遠隔報告されているそうです。この使用料は、対応する通信装置さえあれば、自分でデータとして受信することができます。
きっと何かに役立つでしょ!? さんが
BOOTHで販売されている、M5StickC 用Wi-SUN Hatに、ROHM 無線通信モジュール BP35A1 をつけることで、この電力使用料をM5StickCで受信することができます。受信したデータはAmbientなどにインターネット経由で送信してグラフにしたりできますが、M5StickCではESPNowという、Espressif社のチップ同士で可能な簡単な通信が使えますから、これを使えば、家庭内だけで複数の機械に電力使用量のデータを配信することができます。

そこで、最近Shigezoneさんで購入した、小型でピンク色の珍しいLED7セグメント表示器をのせたシールドに、ESP-WROOM-32をArduino互換の基板にのせたボードをつけて、ESPNowを使って使用電力量を受信して表示してみました。

スケッチ

ESP-WROOM-32のスケッチは、GitHub Gistにおきました。動かすときは、ESPNowの制限で、送信元(この場合はM5StickC)が作っているWi-Fiアクセスポイントが使っているWi-Fiチャンネルと同じチャンネルを9行目CHANNEL に設定する必要があります。また、7セグシールドを制御するGPIO番号は、11-13行目で指定していますが、使うボードに合わせて変更する必要があると思います。

感想など

ESPNowでは250バイトまでの任意のデータを送受信できますが、 M5StickC側で走らせているプログラム でMicroPythonプログラムから文字列として送信しているデータをArduinoのESPNowライブラリで受信すると、なぜか先頭10バイトに謎のデータがくっついており、11バイト目から本来のデータが入っていたので、それがわかるまでに少し苦労をしました。M5Stack UIFlowのMicroPythonのespnowライブラリ側で何かしているのだろうと思いますが、今のところそのソースを見つけられていないので、原因はわかっていません。

ESPNowは、送信元に送信先を登録しなくてもいいブロードキャスト通信で、とても手軽に使えました。ピンク7セグはやはり色が珍しく、視認しやすいので表示装置としては見栄えがいいですね。