M5StickCでオフラインで動くロガーを作る
ロガーを作る。訳合って、WiFiは使えない環境を想定。
ロガー作るのに時間のところを調べる。struct tm
のtm_wday
って何が入るのか調べる。結果は2021年3月6日で6が返ってくる。
2021-03-06 16:32:13
weekDay = 6
0 1 2 3 4 5 6
が日 月 火 水 木 金 土
に対応するっぽい。
PCとシリアル通信して、M5StickCの時刻合わせするようにしたい。
時間の設定は2021-03-06 15:26:30(土)の場合、こんな感じになる。
RTC_TimeTypeDef RTC_TimeStruct;
RTC_DateTypeDef RTC_DateStruct;
RTC_DateStruct.WeekDay = 6;
RTC_DateStruct.Month = 3;
RTC_DateStruct.Date = 6;
RTC_DateStruct.Year = 2021;
M5.Rtc.SetData(&RTC_DateStruct);
RTC_TimeStruct.Hours = 15;
RTC_TimeStruct.Minutes = 26;
RTC_TimeStruct.Seconds = 30;
M5.Rtc.SetTime(&RTC_TimeStruct);
PCとの通信はこれのとおり。
15分毎に測定してディープスリープして、連続稼働させてみました。1週間以上は動いているっぽいですね。
m5stickcは内部電源だけでなく、外部から電源供給しています。使用しているのは、単4電池3本の電池ソケットと1本600mAh(1.5V)の単4型リチウム電池になります。現在使用している単4リチウム電池は、現在取り扱われていない製品のため紹介はしません。
m5stickcの公式の電池も、使い方によると思いますが、ほぼ同等の期間動いています(少しこっちのほうが長く動く)。
3/10のデータはこんな感じ。電圧計もこれは壊れてないのかな
終わりの方のデータ。3.0V切ると落ちるので、電圧計は大丈夫っぽい
データ吸い上げるプログラム書くか。出来れば、usb接続時のイベント(Hot Plug)を拾ってバッとデータを取りたいけど、その方法はよく分からない。windowsならC#でなら、そういうイベント拾えるのかな?ポータブルに出来るのが理想だけど(なお、自分のPCはMac)。
nodeだけどusbの接続イベント拾える。
macOS版だけ接続イベント取れるようになった。windows版書く前にロガーのデータ抽出とビューアーを先に作るか。
使うか分からないけど、プログラムから電源落としたいかもなぁというので、調べたらあるみたい。
接続すると勝手にcsvファイルをダウンロードするところまで出来た。ビューアを作って、雑でも使えるようにしたいところ。
USB接続イベントでデータ取込するビューアは作れた。次はデータ取込中の画面表示を作るか。
gRPCとpub/subでusbに接続、その後の処理の経過を文字列でブラウザに送ることは成功(ローカルのwebアプリで作ってる)。表示はプログレスバーみたいなので良いか。