Ich muss serielle Daten von Arduino zeichnen.
Ich benötige Unterstützung für:
- Verschiedene Datenformate (zB vorzeichenlos, 8 Bit, 16 Bit);
- Zeichnet mehrere Daten auf denselben Achsen.
- Exportiert / Importiert Dateidaten.
Da das Plotten von seriellen Daten von Arduino eine häufige Anforderung ist, lautet meine Frage: Welche Programme / Dienstprogramme stehen zum Plotten von seriellen Daten von Arduino zur Verfügung, die die oben genannten Anforderungen erfüllen?
Was sind die Vor- / Nachteile der von Ihnen vorgeschlagenen Methode?
Antworten:
Es gibt einige gute Anwendungen zur Visualisierung der seriellen Daten, darunter:
MegunoLink (29,95 USD; Lite- frei) - Zeichnen, Protokollieren, Programmieren, Berichterstellen und mehr.
MakerPlot (39 US-Dollar) - digitales und analoges Plotten, Überwachen, benutzerdefinierte Schnittstellen und mehr.
ArduinoPlot (kostenlos) - einfaches Plotten.
Arduino-Plotter (kostenlos) - einfaches, leichtes Plotten mit Unterstützung für alle primitiven Typen
Bridge Control Panel (kostenlos) - Protokollieren, Plotten und mehr.
Echtzeit- Plotter (kostenlos) - 6-Kanal-Datenplotter.
Serieller Echtzeit-Datenplotter (kostenlos) - CSV-Datenplotten, Protokollieren und mehr.
SimPlot (kostenlos) - 4-Kanal-Plotten.
Arduino Serial Plotter (kostenlos) - im Arduino Editor unter Tools> Serial Plotter erstellt .
(Dies ist ein Community-Wiki. Sie können die Liste erweitern.)
quelle
GnuPlot
Vorteile: Es ist sehr flexibel, skriptfähig und frei verfügbar.
Nachteile: Ein bisschen komplex zu lernen (aber ich habe herausgefunden, wie man in ein paar Minuten anfängt und in ein oder zwei Stunden funktioniert), läuft in einem Terminalfenster (wenn Sie das für einen Nachteil halten).
Etwas, das ich als sehr nützlich empfand, war, es per Skript zu erstellen, um die Protokolldatei meines Terminalprogramms regelmäßig neu zu laden, sodass ich im Verlauf meines Experiments ein dynamisches Diagramm erhielt.
Bearbeiten: Hier ist das GnuPlot-Skript, das es zeichnet:
quelle
Ich benutze Matplotlib für jede Zeichnung, die ich machen muss.
Es ist in keiner Weise arduino-spezifisch, aber es ist ein ausgezeichnetes Python- Plotter-Toolkit.
Ich habe eine Reihe von Anwendungen erstellt, mit denen Daten von verschiedenen Mikrocontrollern in Echtzeit in einem Diagramm dargestellt werden. Dies war jedoch eher ein zweistufiger Prozess: 1. Daten vom Gerät in den Computer übertragen, 2. Echtzeitdaten darstellen .
Wirklich, ich denke, Sie sollten Ihre Frage in zwei Teile aufteilen:
quelle
SerialPlot (kostenlos). Es macht alles was Sie brauchen und noch viel mehr.
Andere Eigenschaften:
quelle
Hier beantworte ich meine eigene Frage. Ich verwende Bridge Control Panel wie erwähnt.
Vorteile: Viele Funktionen.
Nachteile: Schwieriges Setup und sehr schlechte Syntax- / Fehlerberichterstattung.
Verwendung: Sie müssen die Arduino-Daten byteweise über den seriellen Port schreiben. Für einen int-Datentyp würde dies wie folgt aussehen:
In Bridge lautet der Befehl zum Lesen von Daten:
RX8 ist der Lesebefehl [h = 43] bedeutet, dass das nächste gültige Byte in ASCII "C" ist, dann das High-Byte von Key1 und dann das Low-Byte von Key1
In Bridge sieht es so aus:
quelle
Sie können serialchart versuchen . Es ist ein ziemlich knappes Vorwärtsprogramm. Es macht genau das, was Sie gefragt haben. Der einzige Nachteil ist, dass Daten im CSV-Format benötigt werden (erfüllt nicht den ersten Punkt).
Screenshot von der Projektseite:
quelle
Das könnte Sie auch interessieren
Telemetry
See on Github . Es ist ein einfach zu verwendendes Kommunikationsprotokoll mit einer sauberen Schnittstelle, das eine bidirektionale Kommunikation mit Arduino / Mbed-Geräten ermöglicht.Wenn Sie diesen langen Beitrag nicht lesen möchten, lesen Sie die exemplarischen Vorgehensweisen zu allen fantastischen Funktionen
Die Leistungsfähigkeit dieser Bibliothek kommt von der Desktop-Befehlszeilenschnittstelle (für die keine Programmierkenntnisse in Python erforderlich sind ).
Es ist in der Lage, Hochleistungsdiagramme (viel höher als mit matplotlib) durch Eingabe eines Befehls zu öffnen .
Das Protokoll unterstützt komplexe Datenstrukturen . Vorerst Arrays und Sparse - Arrays können aus dem Embedded Board gesendet.
Die Diagramme, die über die Befehlszeilenschnittstelle geöffnet werden, verstehen den Datentyp. Bei Arrays wird anstelle der Darstellung der einzelnen Stichproben über der Zeit die Stichprobe anhand ihres eigenen Index dargestellt.
In naher Zukunft ist geplant, die Unterstützung für räumliche Koordinaten (xyz-Daten) hinzuzufügen , damit Sie räumliche Daten sofort zeichnen können. Auch hier werden die Zeichnungen alles herausfinden, Ihre Daten im 2D- oder 3D-Raum darstellen und Sie können sich auf die Entwicklung Ihrer App konzentrieren.
Ich glaube, dass diese Funktionen für ein solches Projekt einfach einzigartig sind .
Pytelemetrie CLI
Einmal installiert mit
pip
, kann die Kommandozeile mit gestartet werdenDann können Sie
connect
,ls
(Liste) erhielt Themen,print
empfangenen Daten zu einem Thema,pub
(veröffentlichen) zu einem Thema, oder öffnen Sie einplot
zu einem Thema in Echtzeit empfangenen Daten angezeigt werdenLoslegen
Wiki
PS: Ich bin der Autor.
Ich habe es entwickelt, weil ich keine Lösung gefunden habe, die mir Folgendes ermöglicht:
All dies ohne proprietäre Lösungen oder aufgeblähte GUIs.
Unter Verwendung dieser Bibliothek dauerte das Einrichten einer Kommunikation zwischen Arduino und PC in der Regel einen halben Tag bis zu 5 Minuten.
quelle
Niemand hatte von einer super vielseitigen Verarbeitung gesprochen. Sie können viel mehr als nur zeichnen, aber wenn das alles ist, was Sie tun möchten, können Sie die gwoptics-Bibliothek verwenden. Schließen Sie Arduino und Processing wie hier beschrieben an .
quelle
Ich habe ein äquivalentes Tool in Python erstellt, das Echtzeitdaten vom ADXL345-Beschleunigungssensor druckt. https://github.com/mba7/SerialPort-RealTime-Data-Plotter
Vielleicht ist es für jemanden hilfreich
Wählen Sie einfach die serielle Verbindung und Geschwindigkeit und senden Sie serielle Daten im folgenden Format:
Könnte leicht angepasst werden, um dieses Format zu ändern
quelle
Sie können die MATLAB Student Edition verwenden . Dies spart Zeit für weitere Analysen. Sie können einfach den COM-Port in MATLAB öffnen und das empfangene Signal zeichnen und / oder das Signal im Arbeitsbereich oder was auch immer speichern. MATLAB macht alles einfach!
quelle
Das CSV-Format ist für alle Daten am vielseitigsten (signiert / unsigniert, verschiedene Größen und Genauigkeiten).
Plattformübergreifendes (in Java / Scala geschriebenes) Tool Scsvlog kann CSV-Zeichenfolgen vom seriellen Port / Socket empfangen / analysieren, Werte anzeigen und Diagramme zeichnen (bis zu 8).
quelle
Sie können die Software ausprobieren, die ich dafür entwickelt habe. Es soll einfach zu bedienen sein. Siehe SerialGraphicator - Freier Open Source-Client für serielle Schnittstellen , der Diagrammwerte verarbeiten kann, die im JSON-Format empfangen werden.
quelle
Während ich es selbst nicht verwendet haben, „rqt_plot“ auf dem PC läuft , scheint auf einem PC ein beliebter Weg , um Plotdaten zu sein , die von einem Arduino läuft eine Skizze über eine serielle Schnittstelle kommt, die das beinhaltet rosserial_arduino Bibliothek oder die ros_arduino_bridge Bibliothek.
quelle
Ich weiß, dass dies eine sehr alte Frage ist, aber ich habe kürzlich eine Mac-Anwendung erstellt, die dieses Problem sehr gut löst. Weitere Informationen dazu finden Sie auf www.bloonapp.com. Auf der Website befinden sich einige Demovideos, die Sie sich ansehen können.
quelle
Ich weiß, dass Sie wahrscheinlich eine fortgeschrittenere GUI-Ausgabe haben, aber ich habe es geschafft, eine Aufgabe zu replizieren, die man normalerweise mit einem Oszilloskop machen würde:
Mit dem seriellen Plotter in der Arduino IDE und einem ADC-Modul können Sie für 3 US-Dollar bei eBay kaufen. Ich gebe zu, es ist etwas grob, aber es könnte sich lohnen, eine Weile mit dem Tool zu spielen, bevor Sie in Python / Matlab / ect-Level-Lösungen investieren. Es war außerordentlich einfach zu bedienen. Das Hinzufügen einer SD-Kartenaufzeichnung zum Prozess würde nicht viel kosten.
Siehe: https://edwardmallon.wordpress.com/2016/08/15/ using- the- arduino-uno-as-a-basic-data-acquisition-system/
quelle
Telemetrie-Viewer
Vorteile:
Nachteile:
quelle
Serial Plotter ist ein einfaches Programm, das ich mit Electron erstellt habe und das Daten in folgendem Format empfängt:
data1,data2,timestamp;
und in ein Echtzeitdiagramm konvertiert.quelle
Fast nützlich. Es braucht:
Live Graph ist eine bessere Option, und ich verwende es in Verbindung mit Tera Term, das die Daten über die USB- / serielle Verbindung abruft (und sie in einer Protokolldatei speichert, die dann Live Graph abruft).
Live Graph ist beim Zwischenspeichern von Daten leicht fehlerhaft, und ich habe keine Möglichkeit gefunden, ein sich bewegendes Fenster für die Anzeige von Ergebnissen festzulegen. Das Anzeigen mehrerer Diagramme erfordert auch eine manuelle Skalierung, ist aber trotzdem sehr nützlich. Es ist in Java geschrieben, daher benötigen Sie die JRE. Ich bevorzuge es, Python zu installieren, wie es einige andere Grafikprogramme tun. Ein weiterer Nachteil ist, dass es 4 verschiedene Fenster öffnet, was ein Schmerz ist, wenn ich zwischen dem Fenster und Tera Term wechseln möchte.
Ich habe noch keine Software gefunden, die das kann
quelle
?
Schaltfläche im Editor klicken.Ich verwende processing.org für das serielle Plotten von Arduino. Es war die einzige App, die ich finden konnte, die es mir ermöglichte, echte Histogramme (z. B. eine Million Ereignisse in hundert Behältern) zu erstellen und für jeden Kanal verschiedene Infonummern sowie das mittlere Sigma anzuzeigen. Zwei Hauptprobleme: A) Es stellte sich heraus, dass es auf Java ohne vorzeichenlose Bytes basiert. B) Die Synchronisierung mit der Eingabe erfordert einen Ringpuffer und Markierungen in den Daten. (hohe Geschwindigkeit, kein Handshake)
quelle
SVisuelle Überwachung und Aufzeichnung von Signalen für Arduino und nicht nur.
Videobeispiel
Gratis herunterladen)
quelle