ExcelのData Streamerって?
そんな機能あったっけ?
シリアル通信で値を吐くとリアルタイムで表示してくれるExcelのアドインです。あんまり情報出回って無いような気がします。
これを使えばリアルタイムにピコピコ動くグラフを堪能できます。
CSVで吐く形ですが、ログも取れるみたいですね。
センサとか扱ってると値の変化をグラフで見たい時、多々あるんですよね。ついでにログも取りたい。わざわざラズパイ起動してスプレッドシートのAPI叩いてログ取ってみたけどちょっと大変。
グラフぐらい気軽にサクッと見たいんや。
そんな私は
革命的なエクセルのアドインData Streamerをやってみた
という記事を拝見し、衝撃走る。
早速試してみるべきではないか。
いざ実践
今回はArduino Nanoで作った気圧・温度チェッカを繋ぎます。
材料
※紹介しといてなんですが、この材料で作る方はロジック変換モジュールを追加するかこっちのバージョンの気圧センサ を使ってください。
詳細は割愛しますが、上記の私の工作は、一応動きますが回路的に正しくは無いです。今回は手元の部品で作ったガジェットという事でご容赦ください・・・
シリアルで値吐きだせればハードは何でも良しです。
とはいえ、こうした用途にはArduino
がやっぱり便利ですね。
void print_data(void)
{
Serial.print(hpa); //気圧データの値(float)をシリアル出力
Serial.print(", "); //カンマで区切る
Serial.println(tp); //気温データの値(float)をシリアル出力
}
今回使用したガジェットのコードの一部抜粋です。
改行無しでセンサから取得した値を出力し、間にカンマを挟むことでCSV
として出力すれば難なくエクセルに出力できます。(最終列で改行する)
とりあえずグラフが動いてるのが見たいので1秒ごとに出力します。
早速公式のドキュメントを参考に導入してみましょう。
導入が難しい方は先程ご紹介した記事で分かりやすく方法を解説頂いています。
COMポートとボーレートの設定は見落としがちなので要チェックです。
接続が完了したらデータの開始をクリックすると・・・
ちゃんとプログラムで指定した通り、1秒ごとにデータが入ってます。
ちゃっかりタイムスタンプ付いてくるのも嬉しいですね。
簡単に起動できてめちゃくちゃ便利ですね!
これ、スマホで見れへんかな
GoogleDriveにファイルを保存して定期的に上書き保存すればスマホでも見れるやん!
スマホ上でリアルタイムにグラフ動かすのは多分難しいので、定期的にファイルが更新されることでリアルタイムのログを確認できる、という所をゴールとします。
PC版 GoogleDriveをインストール
下記の記事を参考に。
ブラウザで直接やってもいいのですがエクスプローラで操作できるので何かと捗ります。
定期的に上書き保存する
人生で1年分ぐらいしかExcel使ったことのない私ですが、VBAでマクロ組む事で実現してみます。
マジでノー知識スタートなので、2時間ほどYouTubeでVBA導入方法等の初期学習を行います。
・・・2時間後
Sub Uwagaki()
ActiveWorkbook.Save
Application.OnTime Now + TimeValue("00:05:00"), "Uwagaki"
End Sub
YouTube偉大です。なんとか導入、マクロ有効化、コーディングまでたどり着きました。
上記は現在作業中のWorkBook
を5分おきに上書き保存するプログラムです。
簡単記述でいい感じ。
マクロの導入方法については今回は割愛致します。
では今回作ったlog_test.xlsm
(マクロ有効Excelファイル)をPC版GoogleDriveに保存します。
リボンの開発→マクロ→実行で先ほど組んだマクロを起動すれば、勝手に5分毎に上書き保存してくれます。
GoogleDrive上で上書き保存されているので、5分毎にシートが更新されているはず!
スマホで見た
みえそうですね・・・!
では開いてみよう!
・・・あ、あれ??
どうやらスプレッドシートで開くと**グラフがうまく表示できないようです。**スプレッドシートでそのまま見れたらより便利だったんだけどなぁ。現状原因が分からないので別の方法を模索します。
スマホ用Excelで開いてみましょう。
今度は大成功!!きっちりグラフも再現されていますね。
では最後に、5分おきに上書き保存するマクロが効いているか確認しましょう。
ちゃんと更新されています!うまく行ったようです。
今回のガジェットとデータストリーマーがあればいつでも温度や気圧の変化が見えるので安心ですね!(何がだよ)
終わりに
今回はExcelのデータストリーマーを使ってリアルタイムグラフを表示しつつスマホでもログやグラフを確認出来るようになりました。
以前はExcelの緑色を見るだけで卒倒していた私ですが、すこしExcelと仲良しになれたような気がしています(多分気のせい)
最近ラズパイ使うためにPythonの勉強も進めているので、プログラムでのデータ処理なんかも追々やってみたいですね。
今回は思い付きでやってみた企画なので内容の誤りや、各ツールのよりスマートな使い方、方法論があるかと存じます。
もしこの記事をお読みになった先輩エンジニアの皆様、よろしければアドバイスを頂ければ幸いです。