
再びM5ATOM Lite上のESP32 genericポートのMicroPythonに戻ってまいりました。今回はESP32系ならでは?のWebREPLを使用してみたいと思います。Network接続されているMicroPythonデバイスのREPLにホストのブラウザから接続する機能であります。確かに使えるのだけれどクセが強い。
デバイス作る人>>デバイス使う人>>デバイスおたく
前回はM5ATOMLiteに接続したブザーをPWMで鳴らせるようにしました。今回は、ブラウザ画面からNode-REDダッシュボードを操作して、そのブザーを鳴らしてみようと思います。鳴らしたままだとウルサイので止める機能も仕込んでありますよ。それにしてもATOMLite用のダッシュボード、項目増えすぎか。
前回 M5ATOMLiteのADCにCdSセルを接続し、値を読み取ることができました。今回は測定値をサーバ機Raspberry Pi3上のNodeREDに報告です。DHT11、BMP280と「既に通ってきた道」なので以下同文でOK、っと思ったら温度、湿度グラフのところにバグが。。。まあついでに修正。
ESP-EYE、サンプルソフトで動作確認、そしてビルド環境をセットアップと2回作業をしたのですが、未だに自分で書いたプログラムでLチカさえも動かせてません。ESP-IDFの敷居が高いです。そこで今回は極端なショートカットでLチカを動かしてみました。ご存じESP32用genericポートを使えば3分でLチカ動いてしまう。
前回、定番の圧力センサ Bosch BMP280の補償計算をなんとかやっつけてMicroPythonで気圧と温度を測れるようになりました。今回は測った結果を、例によってMQTTに載せてNode-REDへ報告し、Dashboard上にグラフ表示してみます。まずは前回プログラムのモジュール化から。
前々回、温度と湿度を測ってNode-REDに報告しました。今回は気圧も測るべしということで、定番の圧力センサBosch BMP280をMicroPythonから制御してみることに。ただし読み取りは自前のコードで実施。簡単に圧力読めるものと思っていたら、補償の計算大変なのね。自分でやってみないと身にしみませぬ。
前回、ATOMLiteで温湿度を測ってサーバーのNode-REDに報告をあげるようにいたしました。測定テストで温湿度の日変化を測るべし、とてATOMLiteを動かしたまま眠りについて発覚しました。アイキャッチ画像を御覧じろ。25時?RTCがそういうこと言う?私のバグでした、トホホ。NTPで得たUTCと、報告用のJSTの変換の間違い。
前回、内蔵のLEDとスイッチがNode-REDから使えるように復旧しました。今回はいよいよ外付けハード追加と思ったのですが、その前にスクリプトを整理することにいたしました。カッコよく言うならリファクタリングというやつ。でも作業しながら、どうするのが良いのか迷いましたです。迷える子羊(?そうは見えないが)にお導きを。
前回、uasyncioのお陰でNode-REDサーバとの通信タイミングを自由に決められるようになりました。今回からM5ATOMLiteに「手足」をつけ、前回までに整備?した「インフラ」を使ってNode-REDとの間を接続して行きたいとおもいます。外付けハードの制御の前に、最初は内蔵のLEDとスイッチだな。
前回までで「エッジ側」M5ATOM LiteとNode-REDサーバー(Raspberry Pi 3)との間でMQTTを介してJSONオブジェクトを送受できるようになりました。しかし不満なのは送受信のタイミングです。前回まで単一のmainループにお任せだったので便利とは言えない仕組みでした。今回から uasyncioを使って改良していきたいと思います。