Arduinoからシリアルデータをプロットする必要があります。
次のサポートが必要です。
- さまざまなデータ形式(たとえば、符号付き、符号なし、8ビット、16ビット)。
- 同じ軸に複数のデータをプロットします。
- ファイルデータをエクスポート/インポートします。
Arduinoからシリアルデータをプロットすることは一般的なニーズであるため、私の質問は次のとおりです。
あなたが提案した方法の利点/欠点は何ですか?
Arduinoからシリアルデータをプロットする必要があります。
次のサポートが必要です。
Arduinoからシリアルデータをプロットすることは一般的なニーズであるため、私の質問は次のとおりです。
あなたが提案した方法の利点/欠点は何ですか?
回答:
シリアルデータの視覚化には、次のような優れたアプリケーションがあります。
MegunoLink(29.95ドル、Lite無料)-プロット、ロギング、プログラミング、レポートなど。
MakerPlot($ 39)-デジタルおよびアナログのプロット、監視、カスタムインターフェイスなど。
ArduinoPlot(無料)-簡単なプロット。
arduino-plotter(無料)-すべてのプリミティブタイプをサポートする簡単で軽量なプロット
Bridge Control Panel(無料)-ロギング、プロットなど。
RealtimePlotter(無料)-6チャネルのデータプロット。
リアルタイムシリアルデータプロッター(無料)-CSVデータのプロット、ロギングなど。
SimPlot(無料)-4チャネルプロット。
Arduinoのシリアルプロッタ(無料) -に建てられたArduinoのエディタの下で[ツール]>シリアルプロッタ。
(これはコミュニティWikiです。リストを展開できます。)
利点:非常に柔軟で、スクリプト可能で、自由に利用できます。
短所:学習するのが少し複雑です(ただし、数分で開始する方法と、1〜2時間で非常に機能する方法を見つけました)。
非常に便利だと思ったのは、スクリプトを作成して端末プログラムのログファイルを定期的にリロードすることで、実験が進むにつれて動的なグラフが表示されました。
編集:これはプロットするGnuPlotスクリプトです:
#!/usr/local/bin/gnuplot -rv
# Note reverse video here ^^^ til I find a way to put it in the script
# gpFanCtl - Plots DiffThermo fan controller data (aloft, alow, Tdiff, fan-state).
# $Id: gpFanCtl,v 1.8 2014-04-28 09:40:51-04 jrobert Exp jrobert $
set terminal x11 1 noraise
set xtics 3600
set mxtics 4
set xdata time
set ytics 1 nomirror
set mytics 2
set y2range [0:3]
set y2tics 1
set my2tics 4
set grid
set ylabel 'Temperature, degC'
set y2label 'Tdiff, degC' textcolor rgb '#00CD63'
cd '/Users/jrobert/Desktop'
plot "Logfile.txt" using ($0*4):1 title "Aloft" with lines lc rgb "red",\
"Logfile.txt" using ($0*4):2 title "Alow" with lines lc rgb "#3982FF",\
"Logfile.txt" using ($0*4):3 title "Tdiff" with lines lc rgb "#00CD63" axis x1y2,\
"Logfile.txt" using ($0*4):4 title "Fan" with lines lc rgb "orange" axis x1y2;
pause 4
refresh
reread
必要なプロットにはMatplotlibを使用します。
arduino固有のものではありませんが、非常に優れたPythonプロットツールキットです。
さまざまなマイクロコントローラーのデータをリアルタイムでグラフにプロットする多くのアプリケーションを作成しましたが、それは実際には2ステップのプロセスでした。 。
本当に、あなたはあなたの質問を2つの部分に分けるべきだと思う:
SerialPlot(無料)。それはあなたが必要とするすべてとそれ以上を行います。
その他の機能:
ここで自分の質問に答える..前述のように、ブリッジコントロールパネルを使用します。
利点:多くの機能。
短所:セットアップが難しく、構文/エラーレポートが非常に貧弱です。
使用するには:シリアルポートを介してArduinoデータを1バイトずつ書き込む必要があります。次のようなintデータ型の場合:
// RX8 [h=43] @1Key1 @0Key1
Serial.print("C");
Serial.write(data>>8);
Serial.write(data&0xff);
Bridgeでは、データを読み取るコマンドは次のとおりです。
RX8 [h=43] @1Key1 @0Key1
RX8は読み取りコマンド[h = 43]で、次の有効なバイトはASCIIの「C」、Key1の上位バイト、Key1の下位バイトを意味します。
Bridgeでは次のようになります。
serialchartを試すことができます。それはかなり単純なプログラムです。それはまさにあなたが尋ねたとおりです。唯一の欠点は、CSV形式のデータが必要なことです(最初のポイントを満たしていません)。
プロジェクトページのスクリーンショット:
Telemetry
GithubのSeeに興味があるかもしれません。Arduino / Mbedデバイスとの双方向通信を可能にする、クリーンなインターフェースを備えた、非常に使いやすい通信プロトコルです。
この長い投稿を読みたくない場合は、そのすべての素晴らしい機能のチュートリアルをご覧ください
このライブラリの威力は、デスクトップコマンドラインインターフェースから得られます(Python のプログラミングスキルは不要です)。
コマンドを入力するだけで、高性能なプロット(matplotlibでできることよりもはるかに高い)を開くことができます。
プロトコルは複合データ構造をサポートします。現時点では、組み込みボードから配列と疎配列を送信できます。
コマンドラインインターフェイスから開かれたプロットは、データの種類を理解し、配列の場合、各サンプルを時間に対してプロットするのではなく、サンプルは独自のインデックスに対してプロットされます。
近い将来、空間座標(xyzデータ)のサポートを追加して、空間データをすぐにプロットできるようにする予定です。もう一度、プロットがすべてを把握し、データを2Dまたは3D空間にプロットし、アプリの開発に集中できます。
これらの機能は、そのようなプロジェクトに特有のものであると思います。
でインストールするpip
と、コマンドラインは
pytlm
その後のことができconnect
、ls
(リスト)受信トピック、print
トピックに受信したデータ、pub
(公開)トピックに関する、またはオープンA plot
リアルタイムで受信したデータを表示するためのトピックに関する
PS:私は著者です。
私ができるソリューションを見つけることができなかったため、私はそれを開発しました:
独自のソリューションや肥大化したGUIを使用しない上記のすべて。
このライブラリを使用すると、ArduinoとPC間の通信をセットアップする時間が通常半日から5分になりました。
ADXL345加速度計からリアルタイムデータを出力する同等のツールをPythonで作成しました。 https://github.com/mba7/SerialPort-RealTime-Data-Plotter
誰かに役立つかもしれない
シリアル通信と速度を選択し、次の形式でシリアルデータを送信するだけです。
この形式を簡単に変更できます
MATLAB Student Editionを使用できます。これにより、さらに分析する時間を節約できます。MATLABでCOMポートを開いて、受信した信号をプロットしたり、ワークスペースなどに信号を保存したりできます。MATLABはすべてを簡単にします!
CSV形式は、あらゆるデータ(符号付き/符号なし、さまざまなサイズと精度)で最も汎用性があります。
クロスプラットフォーム(Java / Scalaで作成)ツールScsvlogは、シリアルポート/ソケットからCSV文字列を受信/解析し、値を表示し、グラフを描画できます(最大8)。
その提案のために私が開発したソフトウェアを試すことができます。使いやすさを目指しています。SerialGraphicator -JSON形式で受信したグラフ値に対応したオープンソースの無料シリアルポートクライアントを参照してください。
私はそれを自分自身を使用していないものの、「rqt_plot」 PC上で実行しては、スケッチ実行しているのArduinoからシリアルポート経由で来てPC上のプロットデータへの一般的な方法であるように思わrosserial_arduinoのライブラリやros_arduino_bridgeのライブラリを。
おそらくより高度なGUI出力を使用した後であることは承知していますが、通常はオシロスコープで行うタスクを複製することができました。
Arduino IDEのシリアルプロッターとADCモジュールを使用すると、eBayで3ドルで入手できます。私はそれが少し粗雑であることを認めますが、Python / Matlab / ectレベルのソリューションに投資する前に、しばらくの間このツールを試してみる価値があります。それは非常に使いやすかったです。SDカードの記録をプロセスに追加するのにそれほど時間はかかりません。
参照:https : //edwardmallon.wordpress.com/2016/08/15/using-the-arduino-uno-as-a-basic-data-acquisition-system/
利点:
短所:
Serial Plotterは、Electronで作成した単純なプログラムで、次の形式でデータを受け取り、
data1,data2,timestamp;
それをリアルタイムのチャートに変換します。
ほぼ役に立ちます。が必要だ:
Live Graphは優れたオプションであり、Tera Termと組み合わせて使用します。TeraTermは、USB /シリアルリンクを介してデータを取得します(ログファイルに保存し、Live Graphがポーリングします)。
ライブグラフは、データをキャッシュするときに少しバグがあり、結果を表示するために移動ウィンドウを設定する方法を見つけていません。また、複数のグラフを表示するには、手動でスケーリングする必要がありますが、それにもかかわらず、非常に便利です。Javaで記述されているため、JREが必要になります。他のグラフ作成プログラムのいくつかが行うようにpythonをインストールするよりもこれが好きです。もう1つの欠点は、4つの異なるウィンドウが開くことです。これは、Tera Termと切り替えたいときに苦痛です。
私はまだソフトウェアを見つけていません
?
ますが、エディターのボタンを押して表示できるマークダウンガイドを使用して、回答の書式を改善してください。