我需要繪製來自Arduino的串行數據。
我需要支持:
- 各種數據格式(例如,有符號,無符號,8位,16位);
- 在相同的軸上繪製多個數據;
- 導出/導入文件數據。 ol>
從Arduino繪製串行數據是一種常見的需求,我的問題是:可以使用哪些程序/實用程序從Arduino繪製滿足上述需求的串行數據?
您建議的方法的優點/缺點是什麼?
我需要繪製來自Arduino的串行數據。
我需要支持:
從Arduino繪製串行數據是一種常見的需求,我的問題是:可以使用哪些程序/實用程序從Arduino繪製滿足上述需求的串行數據?
您建議的方法的優點/缺點是什麼?
有一些很好的可視化串行數據的應用程序,包括:
MegunoLink(29.95美元; Lite免費) -繪圖,記錄,編程,報告等。
MakerPlot(39美元)-數字&模擬繪圖,監視,自定義界面等。
ArduinoPlot(免費)-簡單繪圖。
arduino-plotter(免費)-簡單輕量級繪圖,支持所有原始類型
橋控制面板(免費)-記錄,繪圖等。
RealtimePlotter(免費)-6通道數據繪圖。
實時串行數據繪圖儀(免費)-CSV數據繪圖,記錄等。
SimPlot(免費)-4通道繪圖
Arduino串行繪圖儀(免費)-在 Tools> Serial下的 Arduino Editor中內置。繪圖儀。
(這是社區Wiki,您可以展開列表。)
優點:它非常靈活,可編寫腳本並且可以免費使用。
缺點:學習起來有點複雜(但是我知道如何在幾分鐘內開始使用,在一兩個小時內就可以正常運行),在終端窗口中運行(如果您認為這是一個缺點) )。
我發現非常有用的一點是,編寫腳本以定期重新加載終端程序的日誌文件,以便在實驗進行時獲得動態圖。
編輯:這是繪製它的GnuPlot腳本:
#!/ usr / local / bin / gnuplot -rv#注意此處反向視頻^^^直到我找到一種將其放入腳本的方法#gpFanCtl-繪製DiffThermo風扇控制器數據(高空,低速,Tdiff,風扇狀態)。#$ Id:gpFanCtl,v 1.8 2014-04-28 09:40:51-04 jrobert Exp jrobert $ set terminal x11 1 noraiseset xtics 3600set mxtics 4set xdata timeset ytics 1 nomirrorset mytics 2set y2range [0:3] set y2tics 1set my2tics 4set gridset ylabel'Temperature,degC'set y2label'Tdiff,degC'textcolor rgb'# cd'/ Users / jrobert / Desktop'使用“($ 0 * 4):1”繪製“ Logfile.txt”標題,並使用($ 0 * 4):2標題lc rgb“ red”,\“ Logfile.txt” “ alow”與行lc rgb“#3982FF”,\“ Logfile.txt”使用($ 0 * 4):3標題“ Tdiff”與行lc rgb“#00CD63”軸x1y2,\“日誌文件.txt”,使用($ 0 * 4):4標題“ Fan”,行lc rgb“橙色”軸x1y2;暫停4refreshreread
我需要使用 Matplotlib進行任何繪圖。
它不是arduino特有的,但是它是非常出色的 Python 繪製工具包。
我構建了許多應用程序,這些應用程序將來自各種微控制器的數據實時繪製到圖形上,但這實際上是一個兩步過程:1.獲取數據從設備到計算機,2.繪製實時數據。
真的,我認為您應該將問題分為兩個部分:
SerialPlot(免費)。
其他功能
在這裡回答我自己的問題。.如上所述,我使用Bridge Control Panel。
優點:有很多功能。
缺點:設置麻煩且語法/錯誤非常差
使用:您需要一次在串行端口上通過一個字節寫入Arduino數據。對於如下所示的int數據類型:
// RX8 [h = 43] @ 1Key1 @ 0Key1Serial.print(“ C”); Serial.write(data>>8);序列。 write(data&0xff);
在Bridge中讀取數據的命令是:
RX8 [h = 43] @ 1Key1 @ 0Key1
RX8是讀取命令[h = 43]表示下一個有效字節是ASCII中的“ C”,然後是Key1的高字節,然後是Key1的低字節
在Bridge中看起來像這樣:
沒有人提到過具有超級通用性的處理。您不僅可以進行繪圖,還可以做很多事情,但是,如果您只想這樣做,就可以使用gwoptics庫。按照此處的指示連接Arduino和Processing。
您可能對遙測
在Github上查看感興趣。這是一種易於使用的通信協議,具有乾淨的接口,可與Arduino / Mbed設備進行雙向通信。
如果您不想閱讀這篇冗長的文章,請參閱 其中所有出色功能的演練
該庫的強大功能來自桌面命令行界面(無需編程即可無需
只需輸入命令,便可以打開高性能圖(比使用matplotlib可以完成的功能高得多)。
該協議支持複雜的數據結構。目前,可以從嵌入式主板發送陣列和稀疏陣列。
從命令行界面打開的圖了解數據的類型,對於數組,不是針對每個樣本隨時間繪製圖表,而是針對其自身索引繪製樣本。
在在不久的將來,計劃增加對空間坐標的支持(xyz數據),以便您立即繪製空間數據。再次,這些圖將弄清所有內容,將數據繪製在2D或3D空間中,您可以專注於開發應用程序。
我相信這些功能對於這些功能只是唯一
一旦安裝了 pip
,就可以使用命令行啟動
pytlm
然後您可以 connect
, ls
(列出)收到的主題,打印在主題上收到的
數據,在主題上的 pub
(發布),或打開主題上的 plot
以實時顯示接收到的數據
PS:我是作者。
我之所以開發它,是因為我找不到能夠讓我做到的解決方案:
上述所有功能,而無需使用專有解決方案或膨脹的GUI。
使用該庫,在Arduino和PC之間建立通信的時間通常從半天到5分鐘。
您可以使用 MATLAB Student Edition,這也可以節省您進行進一步分析的時間。您只需在MATLAB中打開COM端口並繪製接收到的信號和/或將信號保存到工作區或其他。 MATLAB使一切變得簡單!
我用python做了一個等效的工具,可以打印來自ADXL345加速度計的實時數據。 https://github.com/mba7/SerialPort-RealTime-Data-Plotter
也許對某人會有幫助
只需選擇串行com和速度並以以下格式發送串行數據:
可以很容易地更改此格式
CSV格式對於任何數據(有符號/無符號,各種大小和精度)最通用。
跨平台(用Java / Scala編寫)工具 Scsvlog可以從串行端口/套接字接收/解析CSV字符串,顯示值和繪製圖表(最多8個)。 / p>
您可以嘗試我為此提案開發的軟件。目的是易於使用。請參見 SerialGraphicator-開源的免費串行端口客戶端,該客戶端功能能夠以JSON格式接收圖形值。
雖然我本人還沒有使用過它,但在PC上運行“ rqt_plot”似乎是一種流行的方法,可在通過運行草圖的Arduino通過串行端口在PC上繪製數據其中包括 rosserial_arduino庫或 ros_arduino_bridge庫。
我知道您可能正在追求更高級的GUI輸出,但是我設法複製了一個通常用示波器完成的任務:
使用串行您可以在eBay上以3美元的價格獲得Arduino IDE中的繪圖儀和ADC模塊。我承認這有點粗糙,但是在您投資於Python / Matlab / ect級別的解決方案之前,也許有一段時間可以使用該工具。它非常易於使用。將SD卡記錄添加到該過程不會花費太多。
請參閱: https://edwardmallon.wordpress.com/2016/08/15/using-the-arduino-uno-作為基本數據採集系統/
幾乎有用。它需要:
Live Graph是更好的選擇,我將其與 Tera Term結合使用,後者通過USB /串行鏈接獲取數據(並將其保存到日誌文件中,然後Live Graph對其進行輪詢)。
在緩存數據時,“實時圖”有時會出現錯誤,並且我還沒有找到設置移動窗口以顯示結果的方法。同樣,顯示多個圖形需要手動縮放,但是儘管如此,它仍然非常有用。它是用Java編寫的,因此您需要JRE。我更喜歡這樣做,而不是像其他一些繪圖程序一樣必須安裝python。另一個缺點是,它會打開4個不同的窗口,當我想在它和Tera Term之間切換時,這很痛苦。
我還沒有找到可以
優點:
串行繪圖儀是一個簡單的程序,我已經與電子生產,在下面的格式接收數據: DATA1,DATA2,時間戳; 代碼>並且將其轉換成一個實時圖表。
我正在使用processing.org從Arduino進行串行繪圖。這是我能找到的唯一一款使我能夠製作真實的直方圖的應用程序(例如,一百個裝箱中的一百萬個事件),並且除了顯示每個通道的平均sigma之外,還顯示各種信息編號。兩個主要問題:A)事實證明它是基於Java的,沒有無符號的字節B)與輸入所需的循環緩衝區和數據中的標記同步。 (高速,無握手)