1. はじめに
そろそろヤメたほうが良い。
Excel VBAにWindows95からのレガシーライブラリー(DLL)を組み込んで、シリアル通信をする方法です。
2022年9月頃に、Excelが大きくアップデートしました。
それ以降、以前からメンテナンスしていた、Excel VBAからシリアル通信をしてデータを取り込むマクロが、うまく動作しなくなってしまいました。
一方、オープンソースのアプリでは、簡単にシリアル通信が確立でき、USBで接続したデバイスと通信できるようになっています。
当然、ExcelにAdd-ONしたりはできませんが、CSV形式やJSON形式で保存されたデータでのやり取りは可能になっています。
2023年にもなって、約30年も前に作られた1995年のWindowsライブラリーに固執する理由もありません。
それに、30年も経過しています。
IoTなどのDXを推進している立場から考えると、周りのツールとの兼ね合いから、使い道がなくなってきています。
その一方で、オープンソースなどのツールを試しながら探っていたら、Node-REDにシリアル通信用のブロックを組み込むことでシリアル通信ができることがわかりました。
その時の様子が以下の写真になります。
2. 実験内容の説明
これは、Arduino OPTA(TM)の事例研究で試していた実験の様子です。
M5Stick-CをUSB接続モードで起動すると、電源供給端子からDC 5 V と、DC 3.3 Vの電源電圧が供給されます。
上図の写真では、緑の配線が DC 5.0 V。
黒の配線には DC 3.3 Vが供給されています。
Arduino OPTA(TM)の入力端子に、M5Stick-Cから供給される電源電圧を入力信号として入力しています。
OPTA(TM)の入力端子は、デジタル入力端子としても、アナログ入力端子(10V DC)としても利用できます。
スケッチ(制御プログラム)上で、デジタル/アナログの入力特性を決める必要があります。
この場合、アナログ入力で設定し、入力した電圧をシリアルポート(USB)に出力するようにしています。
Arduino IDE(Ver. 2.1.0)のシリアルモニターを使えば、シリアルポートに出力されている信号を確認することができます。
この実験の最中、ふと考えました。
Node-Redでシリアルポートに出力されるデータを読み取れるのではないか?
ということで、早速、Windows PCに Node-Red をインストールし、シリアル通信用のブロックを組み込んでみました。
そのNode-Redの画面が以下のようになります。
OPTA(TM)から送信されたデータがデバッグ・ウィンドウに表示されています。
表示されている内容は、Arduino IDE シリアルモニターに表示された内容と同じものでした。
今回はWindows PCですが、Raspberry PIでも、センサーをUSBで接続しシリアル通信できるのであれば、データをダイレクトに取り込めることになります。
また、MQTTでWi-Fiなどを通じ送信されたデータも一緒にして、CSV形式に保存することも可能なので、EXCELよりも汎用的です。
Dashbord機能を使えば、収集したデータをリアルタイムで、社内の関連部署で共有できます。
3. おわりに
実験的な事例で、まだまだ、実践的ではありませんが、Excelを使ってデータ収集はしなくてもよくなりそうです。
どちらかといえば、収集したデータに対し、より詳細な分析を行うために使うのがEXCELだと思います。
リアルタイムでのデータの可視化はNode-Redのグラフ機能を利用すればよく、しかもExcelのようにコードを組む必要もありません。
ノーコードで、データ収集が可能です。
詳細については、ホームページのお問い合わせよりご連絡ください。