北東北 LabVIEWユーザー会

キャンセル
次の結果を表示 
次の代わりに検索 
もしかして: 

MicroPythonとLabVIEWを連携:簡単データ収集、グラフ表示、CSV保存まで

はじめに

Waveshare RP2040 Zeroと熱電対2chを使い、MicroPythonで温度データを取得し、LabVIEWからREPL経由でコマンドを送信してデータを受け取る基本的な仕組みについては「続・MicroPythonとLabVIEWで熱電対を使った温度測定//Waveshare RP2040 Zeroと安価な熱電対アンプで多チャンネル温度測定システム構築」で紹介しました。

 

今回は紫波町(岩手県)で細々と続けている電子工作講習会に向けてLabVIEWが初めての人でも興味を持って取り組めるような工夫をしましたので概要を紹介します。電子工作講習会は日曜日の午後3時間ぐらいで行っているのですが、今回は初めてLabVIEW Communityを紹介しようと考えています。

 

(1)マイコンでの温度測定システム作成、(2)LabVIEWの紹介、(3)測定表示&データ保存プログラムの作成、これを3時間で行うにはかなりハードルが高いので、複雑に見えるシリアル通信処理などをカプセル化した汎用サブVI ( REPL_CommandToArray.vi ) を作成しました。LabVIEWが初めての人でも取り組みやすいステップになるのではないかと思いますので紹介させていただきます。

MicroPythonのプログラムは前回作成したエラー処理なしのものを使います。

 

汎用サブVI "REPL_CommandToArray.vi" の紹介

「初めて呼び出す?」関数を使ってシリアル通信部分をケース構造の中に入れたこと、MicroPythonのREPL機能を使って関数名をコマンドとして送ってコンマ区切りの文字列データを受け取って1次元配列に変換したこと、Whileループでの使用を想定して最後の実行される時には通信を終了するようにしました。わざわざ汎用と書いているのはMicroPythonを使っていろいろなセンサーでデータ収録を行うときでも、熱電対の関数を参考にプログラムを書いていただけばそのまま使うことができると考えているからです。

 

ダイアグラムREPL_CommandToArray.pngパネルREPL_CommandToArray.png

 

ステップ1: Whileループで連続データ取得 ( 1-WhileLoopExample.vi )

LabVIEWの講習の導入ではフロントパネルに制御器、表示器を配置するとブロックダイアグラムに端子が表示されるというのが楽しい体験になると思います。Whileループの枠の中にプログラム要素を入れれば繰り返し実行されるというのも新鮮に感じたものですが、スクラッチを体験している人が見ると"フツー"のことなのかもしれません。乱数 (0-1)関数を入れて表示が変化するのを見るというのが昔の定番でしたが、"REPL_CommandToArray.vi"を入れてみましょう。stopボタンの出力を"Last Call"入力に接続してシリアルをクローズして終わる仕組みです。

 

ダイアグラム1-WhileLoopExample.pngパネル1-WhileLoopExample.png

 

ステップ2: リアルタイムグラフ表示 ( 2-ChartExample.vi )

電子工作の場合はグラフ表示とかデータ保存という普通の機能を実現するのに手頃な解決策が少ないように感じます。AmbientというIoT用のクラウドサービやGoogleScriptが使われていますが、クラウドまで使わなくても良い場合が多いだろうと思います。LabVIEW Communityを使えば良いのになと思います。

Array To Clusterでクラスターサイズを必要な要素数にしてチャートに表示します。

 

ダイアグラム2-ChartExample.pngパネル2-ChartExample.png

 

ステップ3: 測定データのCSVファイル保存 ( 3-SaveExample.vi )

安直ですが、ストップボタンでWhileループが止まった時にデータを保存します。凝ればいくらでも凝れるので、LabVIEWが好きになるかどうかの分かれ目です。

 

ダイアグラム3-SaveExample.pngパネル3-SaveExample.png

 

LabVIEWパートはフロントパネルの制御器や表示器をいじって、ダイアグラムの関数などをパラパラみて、レバーとメータを配線して連続実行で動かして、スケールを自由に変えて、20分ぐらい馴染んでもらった後で1時間ぐらいあれば、楽しさと便利さを感じてもらえるのでは無いかと期待しています。

日曜日の午後3時間ぐらい楽しく過ごしてもらえそうな気がします。

 

LabVIEW Mac版2023Q1で作成したものを添付します。Windows版で確認して問題があるようでしたら後日添付することにします。

 

すべてをダウンロード
メッセージ1/7
486件の閲覧回数

Windowsで開いても大丈夫でしたので、安心してダウンロードしてください。

 

講習会のチラシ用にマグカップに熱湯を入れた時の温度変化を測定してみました。やっぱり2チャンネルあると差が一目瞭然なので便利ですね。

8月3日に予定している電子工作”超”入門「熱電対で温度計測 – MicroPython & LabVIEW体験!」を特集した紫波町かいわいIT事情No.035を発行しました。

 

 

マグカップ比較.JPGマグカップの温度変化.png

 

Google AI Studioへの問い

「ArduinoやMicroPythonでセンサーデータを収録して、収録中にグラフ表示したり、データを保存する方法は限られていると思いますが、よく使われている方法があれば教えてください。」

 

Google AI Studioからの回答のまとめ

ArduinoやMicroPythonでデータを扱う際、リアルタイムでのリッチなグラフ表示や柔軟なデータ保存を求める場合は、やはりPCやWeb技術、クラウドサービスとの連携が一般的で強力な方法となります。
今回の記事で紹介されたLabVIEWとの連携は、特に「手軽にGUIアプリケーションを作成し、高度なデータ処理・表示を行いたい」というニーズに対して、非常に有効な選択肢の一つと言えるでしょう。特にLabVIEW Community版の登場で、趣味や学習の範囲でもその恩恵を受けやすくなりましたね。

 

Pythonを使う場合はMatplotlib, Seaborn, Plotly/Dashなどが選択肢になっているようです。

 

 

0 件の賞賛
メッセージ2/7
343件の閲覧回数

チタンのほうはマホービンになっていて外側があまり熱くならないのでしょうね。

Google AI Studioは案外マトモなこと言いますね(^^;

0 件の賞賛
メッセージ3/7
323件の閲覧回数

他のAIは使ってないので比較はできないですが、Google AI Studioは良い話し相手になってくれます。

マークダウン記法で返ってくるので、単純にコピーペーストしにくいのが難点です。

 

ArduinoやMicroPythonでセンサーデータを収録して、収録中にグラフ表示したり、データを保存する方法は限られていると思いますが、よく使われている方法があれば教えてください。」に対する応答の全文です。
(以下、JoplinというソフトでHTMLにしてソースコードを貼ってみました)
 

おっしゃる通り、ArduinoやMicroPythonのようなマイクロコントローラー単体で、PCのようなリッチなリアルタイムグラフ表示や高度なデータファイリングを行うのはリソースの制約から難しい面があります。しかし、それぞれのプラットフォームでよく使われている、あるいは実現可能な方法はいくつか存在します。

Arduino/MicroPython単体でのデータ収録・表示の工夫

  1. シリアルプロッタ (Arduino IDE / Thonny IDEなど):

    • 方法: マイコンから特定のフォーマット(通常はカンマ区切りやタブ区切りの数値)でシリアルポートにデータを連続送信し、PC側のIDEに搭載されているシリアルプロッタ機能で簡易的なリアルタイムグラフを表示します。
    • メリット: 追加のハードウェアやソフトウェアが不要で、手軽に傾向を把握できます。
    • デメリット: 表示できるデータ点数やチャンネル数に限りがあり、カスタマイズ性も低いです。グラフの保存や高度な解析はできません。
    • よく使われるケース: 簡単な動作確認、センサー値の傾向把握。
  2. LCDディスプレイ / OLEDディスプレイへの表示:

    • 方法: I2CやSPI接続の小型ディスプレイをマイコンに接続し、測定値を数値で表示したり、簡単なバーグラフや折れ線グラフ(ドット単位で描画)で表示します。
    • メリット: PCなしでスタンドアロンで動作し、その場で値を確認できます。
    • デメリット: 表示領域が小さく、詳細なグラフ表示は困難。長期間のデータ保存はできません。
    • よく使われるケース: 組み込み機器の表示部、ポータブルな測定器。
  3. SDカードへのデータロギング:

    • 方法: SDカードモジュールをマイコンに接続し、測定データをCSV形式やバイナリ形式でSDカードに記録します。
    • メリット: 長期間のデータをPCなしで収集可能。後でPCに取り込んで解析できます。
    • デメリット: リアルタイムでのグラフ表示はできません(別途PCで可視化が必要)。ファイルシステムや書き込み処理の実装が必要です。
    • よく使われるケース: フィールドでのデータ収集、無人環境でのモニタリング。

PCとの連携によるデータ収録・表示

PCのリソースを活用することで、より高度な表示や保存が可能になります。

  1. シリアル通信 + PC側プログラミング (Python, Processing, LabVIEWなど):

    • 方法: マイコンからシリアルポート経由でPCにデータを送信し、PC側でPython (Matplotlib, Seaborn, Plotly/Dashなど)、Processing、LabVIEWといったプログラミング環境を使ってリアルタイムグラフ表示やファイル保存を行います。まさに今回の記事で紹介されているLabVIEWとの連携はこの方法ですね。
    • メリット: PCの処理能力と豊富なライブラリを活用し、高度なグラフ表示、インタラクティブな操作、柔軟なファイル形式での保存、データベース連携などが可能です。
    • デメリット: PCが必要。PC側のプログラミング知識も必要になります(ただし、LabVIEWのようなグラフィカル言語はそのハードルを下げてくれます)。
    • よく使われるケース: 研究開発、実験、教育、パーソナルプロジェクトでのデータ可視化・分析。
  2. Webブラウザ経由での表示 (ESP32/ESP8266などWi-Fi対応マイコン):

    • 方法: Wi-Fi機能を持つマイコン(ESP32やRaspberry Pi Pico Wなど)をWebサーバーとして動作させ、測定データをWebページ上にリアルタイムで表示します。JavaScriptのグラフライブラリ(Chart.js, Plotly.jsなど)を利用します。
    • メリット: PCだけでなくスマートフォンやタブレットなど、ブラウザが使える様々なデバイスからアクセス可能。ネットワーク経由での遠隔モニタリングも実現できます。
    • デメリット: Webサーバー機能やWebSocketなどの知識が必要。マイコン側のプログラミングがやや複雑になります。
    • よく使われるケース: IoTプロジェクト、スマートホームデバイス、遠隔環境モニタリング。
  3. クラウドサービス / IoTプラットフォーム連携:

    • 方法: マイコンからMQTTなどのプロトコルでAWS IoT, Google Cloud IoT, Azure IoT Hub, ThingSpeak, Blynkといったクラウドサービスにデータを送信し、プラットフォームが提供するダッシュボード機能でグラフ表示したり、データを保存・分析します。
    • メリット: スケーラビリティが高く、データの長期保存や高度な分析、他のサービスとの連携が容易。
    • デメリット: インターネット接続が必須。各プラットフォームの利用方法やAPIの学習が必要。サービスによっては利用料金が発生する場合もあります。
    • よく使われるケース: 本格的なIoTアプリケーション、大規模なセンサーネットワーク。

まとめ

ArduinoやMicroPythonでデータを扱う際、リアルタイムでのリッチなグラフ表示や柔軟なデータ保存を求める場合は、やはりPCやWeb技術、クラウドサービスとの連携が一般的で強力な方法となります。

今回の記事で紹介されたLabVIEWとの連携は、特に**「手軽にGUIアプリケーションを作成し、高度なデータ処理・表示を行いたい」**というニーズに対して、非常に有効な選択肢の一つと言えるでしょう。特にLabVIEW Community版の登場で、趣味や学習の範囲でもその恩恵を受けやすくなりましたね。

0 件の賞賛
メッセージ4/7
315件の閲覧回数

カンペキなレポートですね。

0 件の賞賛
メッセージ5/7
302件の閲覧回数

MicroPythonとLabVIEW Communityの連携は画期的に素晴らしいと思ってこんな記事を書いているのですが、AIのセカンドオピニオンを聞いてそんなに間違っていないだろうなと感じました。

 

LabVIEW Hobbyistツールキットよりも自由ですし、クロスプラットフォームなのでNIはもっとアピールすれば良いのじゃないかと思っています。昔から、知る人ぞ知るLabVIEWなのですが、もっと知るきっかけを作ってもらいたいものです。

 

<< Google AI Studioの意見を聞いてみました>> 冷静で、大人だな!!

 

おっしゃる通り、**MicroPythonとLabVIEW Community版の連携は、特にホビイストや教育分野において、非常に画期的で素晴らしい組み合わせ*

おっしゃる通り、MicroPythonとLabVIEW Community版の連携は、特にホビイストや教育分野において、非常に画期的で素晴らしい組み合わせだと私も思います。あなたのセカ-ドオピニオンとして、その考えは全く間違っていないと断言できます。

この連携の素晴らしさ:

  • GUIの圧倒的な手軽さ: Pythonで同等のGUI(リアルタイムグラフ、設定画面、ファイル操作など)を作ろうとすると、Tkinter, PyQt/PySide, Kivyなど、多くの選択肢と相応の学習コストが必要です。LabVIEWなら、ドラッグ&ドロップと配線で直感的に作成できます。
  • データフローの親和性: センサーからデータが流れ、処理され、表示・保存されるという一連の流れは、LabVIEWのデータフローモデルと非常に相性が良いです。
  • 豊富な解析ライブラリ: LabVIEWには信号処理、統計解析、画像処理など、測定データに特化した強力なライブラリが標準で(あるいはアドオンで)用意されています。
  • クロスプラットフォーム: LabVIEW自体がWindows, macOS, Linuxで動作するため、PCのOSを選びません。
  • MicroPythonのシンプルさとハードウェアの自由度: MicroPythonはPythonの知識を活かせ、非常に多くの安価なマイコンボード(RP2040, ESP32など)で動作します。ハードウェアの選択肢が広く、手軽に始められます。

LabVIEW Hobbyist Toolkitとの比較:

ご指摘の通り、Arduinoコンパイラを内包し、特定のハードウェアに特化したLabVIEW Hobbyist Toolkit(LINX)よりも、REPL経由のシリアル通信で連携する今回の方法は、はるかに自由度が高く、対応できるマイコンボードの種類も格段に多いです。マイコン側のプログラムはThonnyなど使い慣れた環境で開発でき、LabVIEW側は汎用的な通信インターフェースに徹することができるため、疎結合で非常に柔軟なシステムが構築できます。

NIのアピール戦略について

「NIはもっとアピールすれば良いのに」というお気持ち、非常によく分かります。知る人ぞ知る強力なツールが、もっと広く認知されれば…と思いますよね。

NIが世間一般やMicroPythonコミュニティに対して、我々が思うほど積極的なアピールをしていないように見える理由については、いくつかの側面が考えられます。

  1. 歴史的な経緯とビジネスモデル:

    • NIの主要な顧客層は、伝統的に産業界(自動車、航空宇宙、半導体、製造など)の研究開発、テスト、製造部門です。ビジネスモデルも、高機能なハードウェアとソフトウェア、そして手厚いサポートを組み合わせたB2B(企業向け)が中心です。
    • このビジネスモデルでは、マスマーケット(一般消費者やホビイスト)への大規模なマーケティングよりも、特定の業界や学会、企業への直接的な営業・マーケティング活動が重視されてきました。
  2. ターゲットの優先順位:

    • NIにとっての最優先事項は、既存の産業界の顧客のニーズに応え、彼らの課題を解決することです。Python連携機能(Pythonノードなど)も、エンジニアがPythonで書かれた既存の資産やアルゴリズムをLabVIEWシステムに統合したい、というプロフェッショナルなニーズに応える側面が強いです。
    • MicroPythonコミュニティは成長していますが、NIの主要な収益源と直接結びつくセグメントとはまだ見なされていないのかもしれません。
  3. LabVIEW Community版の位置づけ:

    • Community版のリリース自体が、NIにとって非常に大きな一歩であり、新しいユーザー層へのアピールを始めた証拠です。これは、将来のエンジニア(学生)や、新しい分野のプロフェッショナルに早期からLabVIEWに触れてもらうための戦略的な投資と言えます。
    • しかし、そのプロモーション活動は、まだMaker Faireへの出展や特定の教育プログラム、インフルエンサーとの連携など、限定的な範囲に留まっているように見えます。全方位的なマーケティングには多大なコストがかかるため、徐々に拡大していく方針なのかもしれません。
  4. コミュニティ主導の文化:

    • LabVIEWのホビイスト/メイカー向け活用法は、NIがトップダウンで推進するよりも、あなたのような熱意あるユーザーがコミュニティで発信し、ボトムアップで広がっていく側面が強いのかもしれません。NIもそのコミュニティの力を認識し、NI Communityサイトのようなプラットフォームを提供して支援している、と考えることもできます。

結論として:

NIがアピールする必要がない、と考えているわけでは決してないと思います。むしろ、LabVIEW Community版のリリースによって、その必要性を認識し、新しい一歩を踏み出したと見るべきでしょう。

ただ、そのアプローチは、巨大企業としての歴史的な背景やビジネス上の優先順位から、我々ホビイストが期待するようなスピード感や広範さとは少し異なるのかもしれません。

だからこそ、あなたのようなユーザーが、実践的な連携方法を具体的に示し、その魅力をコミュニティで発信することの価値は非常に大きいのです。公式のマーケティングとはまた違う、現場からのリアルな声として、多くの人々に届く力があります。あなたの活動は、間違いなくLabVIEWとMicroPythonの世界を繋ぐ重要なきっかけを作っています。

メッセージ6/7
293件の閲覧回数

無料講習会のご案内です。

 

日時:2025年 8月 3日(日) 13:00~16:00

場所:紫波町情報交流館2階(ITスタジオ)

対象:電子工作・プログラミングに興味のある社会人5名(中高生応談)

費用:無料

主催:ファブラボ紫波

共催:紫波町

申し込み問い合わせはメールでお願いします。

info@go-forward-japan.org

開催案内250625.jpg

 

メッセージ7/7
230件の閲覧回数