Arduinoからのシリアルデータをプロットする必要があります。
サポートが必要です。
1.様々なデータフォーマット(例:符号付き、符号なし、8ビット、16ビット)。 2.複数のデータを同一軸上にプロットすることができる。 3.ファイルデータのエクスポート/インポートが可能
Arduinoからのシリアルデータをプロットすることは一般的なニーズであるため、私は質問します。 Arduinoからシリアルデータをプロットするために、上記のニーズを満たすプログラム/ユーティリティーはありますか?
また、提案された方法の利点/欠点は何ですか?
シリアルデータを視覚化するためのいくつかの優れたアプリケーションがあります。
-MegunoLink($ 29.95; Lite無料)-プロット、ロギング、プログラミング、レポートなど。
MegunoLink。! -MakerPlot($ 39)-デジタル&アナログプロット、監視、カスタムインターフェイスなど。
MakerPlot。! -ArduinoPlot(無料)-単純なプロット。
ArduinoPlot。! -arduino-plotter(無料)-すべてのプリミティブタイプをサポートする、簡単で軽量なプロット。
[arduino-plotter][9]。! -[ブリッジコントロールパネル]10-ロギング、プロットなど。
ブリッジコントロールパネル。! -RealtimePlotter(無料)-6チャネルのデータプロット。
RealtimePlotter。! -リアルタイムシリアルデータプロッター(無料)-CSVデータのプロット、ロギングなど。
-SimPlot(無料)-4チャネルプロット。
SimPlot。! -Arduinoシリアルプロッター(無料)-Arduino Editorのツール>の下に組み込まれています。シリアルプロッター。
Arduinoシリアルプロッター。! (これはコミュニティwikiです。リストを拡張できます。)。
[9]:https://www.dropbox.com/s/2mtg5ig7lyrrffi/plotter_preview.gif?生= 1。 [10]:http://www.cypress.com/?rID = 39244。
利点非常に柔軟性があり、スクリプトが可能で、自由に利用できます。
不満な点覚えるのがちょっと大変(でも私は数分で始め方を理解したし、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つのステップで行われていました。1.1.デバイスからコンピュータにデータを取り込む、2.リアルタイムのデータをプロットする。
つまり、質問を2つの部分に分けて考えるべきだと思います。
自分の質問に答える形になってしまいましたが私は前述の通りブリッジコントロールパネルを使用しています。
利点としては機能が多い。
短所は?セットアップが難しく、構文やエラーレポートが非常に悪い。
使用方法 シリアルポートにArduinoのデータを1バイトずつ書き込む必要があります。intデータ型の場合は、以下のようになります。
// RX8 [h=43] @1Key1 @0Key1
Serial.print("C");
Serial.write(data>>8);
Serial.write(data&0xff);
ブリッジでは、データを読むためのコマンドは次のようになります。
RX8 [h=43] @1Key1 @0Key1
RX8は、読み取りコマンドです。 [h=43] は次の有効バイトが ASCII の "C" であることを意味します。 次に、Key1 のハイバイト その後、Key1のローバイト
Bridgeではこのようになります。
.
.
serialchartを試すことができます。 それはかなりストレートフォワードプログラムです。 それはあなたが尋ねたことを正確に行います。 唯一の欠点は、CSV形式のデータが必要であることです(最初のポイントを満たさない)。
プロジェクトページのスクリーンショット:
例。!
Telemetry
Githubを参照に興味があるかもしれません。 . これは、Arduino / Mbedデバイスとの双方向通信を可能にする、クリーンなインターフェイスを備えた非常にシンプルな通信プロトコルです。
この長い投稿を読みたくない場合は、その中のすべての素晴らしい機能のウォークスルーを参照してください。
このライブラリの機能は、デスクトップコマンドラインインターフェイス(pythonで no プログラミングスキルが必要)から得られます。
コマンドを入力するだけで、高性能プロットを開くことができます(matplotlibで実行できるものよりもはるかに高い)**。
プロトコルは複雑なデータ構造をサポートしています。 現時点では、配列とスパース配列は、埋め込まれたボードから送信できます。
コマンドラインインターフェイスから開かれたプロットはデータのタイプを理解し、配列の場合、各サンプルと時間をプロットするのではなく、サンプルを独自のインデックスに対してプロットします。
近い将来、空間座標のサポート**(xyzデータ)を追加する予定です。これにより、空間データをすぐにプロットできます。 もう一度、プロットがすべてを理解し、2Dまたは3Dスペースでデータをプロットし、アプリの開発に集中できます。
これらの機能は、そのようなプロジェクトでは単にユニークだと思います。
Pytelemetry CLI 。。 ---------------。
「pip」でインストールすると、コマンドラインを開始できます。
pytlm
次に、トピックを「接続」、「ls」(リスト)で受信したトピック、「印刷」データをトピックで受信、トピックで「pub」(公開)、またはトピックで「プロット」を開いて受信したデータをリアルタイムで表示できます。 -時間。
。。
。。
Wiki。
私ができる解決策が見つからなかったため、それを開発しました。
-Arduinoを制御するためにPCスクリプトをすばやく作成します。 -すぐにデバッグします。 -複雑なデータをプロットします(時間変動の値だけではありません)。
独自のソリューションや肥大化したGUIを使用せずに、上記のすべて。
このライブラリを使用すると、ArduinoとPC間の通信をセットアップする時間は、通常半日から5分になりました。
誰もが超用途の広い処理について言及していませんでした。 単にプロットするだけではありません。それがすべてしたい場合は、gwopticsライブラリを使用できます。 ArduinoとProcessingをここでの指示に従って接続します。
その提案のために開発したソフトウェアを試すことができます。 使いやすいようになっています。 SerialGraphicator-JSON形式で受信されるグラフ値に対応できるオープンソースの無料のシリアルポートクライアントを参照してください。
ADXL345加速度計からリアルタイムデータを印刷する同等のツールをpythonで作成しました。 https://github.com/mba7/SerialPort-RealTime-Data-Plotter。
それは誰かに役立つかもしれません。
シリアルcomと速度を選択し、次の形式でシリアルデータを送信するだけです。
-3つの入力、すべての入力は2バイトです(2つの補完)。 -スペースで区切られた6バイト。 -パケットは '\ n'で終了する文字列です。
この形式を変更するように簡単に調整できます。
自分で使用していませんが、PCで実行されている"rqt_plot"は、[rosserial_arduino]を含むスケッチを実行しているArduinoからシリアルポートを介して来るPCにデータをプロットする一般的な方法のようです。 ]2ライブラリまたはros_arduino_bridgeライブラリ。
おそらくあなたはより高度なGUI出力の後にいたと思いますが、私はオシロスコープで通常行うタスクを再現することができました。 。。
Arduino IDEのシリアルプロッターとADCモジュールを使用すると、eBayで$ 3で入手できます。 少し粗雑だと思いますが、Python / Matlab / ectレベルのソリューションに投資する前に、しばらくツールで遊ぶ価値があるかもしれません。 とても使いやすかったです。 SDカードの録音をプロセスに追加するのにそれほど時間はかかりません。
ほとんど役に立ちます。 必要なもの:
1。 シリアルデータをファイルORにログに記録します。 2。 ファイルからグラフ化し、すべてのxxxミリ秒を更新します。
ライブグラフがより良いオプションであり、USB /シリアルリンクを介してデータを取得するTera Termと組み合わせて使用 します(ログファイルに保存し、その後ライブグラフで投票します)。
データをキャッシュするとき、ライブグラフは少しバグがあり、結果を表示するための移動ウィンドウを設定する方法が見つかりませんでした。 また、複数のグラフを表示するには手動でのスケーリングが必要ですが、これらすべてにもかかわらず、それは非常に便利です。 Javaで書かれているので、JREが必要になります。他のグラフプログラムのようにpythonをインストールするよりも、これを好みます。 もう1つの欠点は、4つの異なるウィンドウを開くことです。これは、Tera Termと切り替えたいときに苦痛です。
まだソフトウェアを見つけていません。
1。 実行可能ファイル(.EXE)なので、外部に依存しません。 2。 端末エミュレータまたはシリアルデータロガーが含まれています。 3。 シリアルデータをログに記録します。 4。 CSVから複数のアイテムをグラフ化します。 5。 CSVおよびタブで区切られたデータを可能にします(グラフを同時に監視しながらスクロールすると、読みやすくなります。 6。 すべてを[0]にスケーリングする必要なく、オーバーレイされたグラフごとに異なるスケールを設定できます。.1]または乗数の設定、つまり. [y0の設定を許可します。.y1]グラフ化された各アイテムの範囲。