Verwendung des Serial-Monitor/Serial-Plotter
Die Arduino-IDE kann mit dem Arduino-Board über die serielle Schnittstelle (USB-Anschluss) Daten austauschen. Häufigste Anwendung ist die Übertragung von Zustandsdaten aus dem laufenden Programm, z.B. Sensorwerte.
Anzeigen von Arduino-Programmausgaben im Serial Monitor
Beispiel für die Verwendung des Serial Monitor und Serial Plotter für die Datenkommunikation vom Arduino zum PC (zum Debuggen):
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
void setup() {
// Serielle Verbindung aktivieren und Baudrate setzen
Serial.begin(115200);
}
void loop() {
// Sensorwerte simulieren
double tempSensor1 = random(10,40);
double tempSensor2 = random(5,15);
// Werte im Format: "<Beschreibung>:<Wert>, <Beschreibung>:<Wert>, ..." ausgeben
Serial.print("min:");
Serial.print(0); // untere Wertegrenze als horizontale Linie ausgeben
Serial.print(",max:");
Serial.print(50); // obere Wertegrenze als horizontale Linie ausgeben
Serial.print(",");
Serial.print("Sensor_1:");
Serial.print(tempSensor1);
Serial.print(",");
Serial.print("Sensor_2:");
Serial.println(tempSensor2);
delay(1000);
}
In der setup()-Funktion muss man die Baudrate für die serielle Kommunikation festlegen und die Übertragung starten. Dann kann man mit Serial.print() bzw. Serial.println() Text ausgeben, wobei letztere einen Zeilenumbruch an die Ausgabe anhängt.
Nach Start des Programms kann man in der Arduino IDE unter Tools den Serial Monitor auswählen. Hier muss man darauf achten, die richtige Baudrate (hier 115200) einzustellen. In meinen Programmen verwende ich überall 115200, falls ich doch mal schneller Daten schaufeln muss.
So in etwas sieht dann die Ausgabe aus.
Auf diese Art können Werte von Laufzeitvariablen oder Sensorwerte recht einfach überwacht werden.
Die Ausgabe der min/max-Werte ist nur für die nachfolgenden Auto-Skalierung des Serial Plotters notwendig.
Visualisierung von Sensorkurven mit dem Serial Plotter
Der Serial Plotter (auch auswählbar über das Startmenü) zeigt die Kurven beschriftet an. Dazu parst der Serial Plotter den übermittelten Text im Format:
1
<Beschreibung>:<Wert>, <Beschreibung>:<Wert>, ...
so wie im Beispiel oben. Aus
1
min:0,max:50,Sensor_1:16.00,Sensor_2:13.00
holt er 4 Variablenwerte welche im Serial Plotter direkt angezeigt werden.
Der Parser ist ziemlich simpel und kann mit Leerzeichen im Variablennamen nicht umgehen. Daher sollte man wie oben ein _ Zeichen verwenden.
Konfiguration des Serial Plotters
Der Serial Plotter ist ein sehr einfacher Plotter und für einen schnellen Blick auf die Daten gedacht.
Man kann ihn daher leider kaum konfigurieren. Für das professionelle Plotten von Messdaten kann und sollte man daher besser andere (externe) Visualisierungstools verwenden (siehe nächster Abschnitt).
Direkter Empfang der vom Arduino gesendeten Daten
Um Daten zu visualisieren, muss man diese erstmal in eine Datei übertragen. Das kann man machen, indem man die auf einer seriellen Schnittstelle ankommenden Daten direkt in eine Datei umleitet.
Unter Linux kann man direkt auf der seriellen Schnittstelle lauschen (es wird angenommen, dass das Arduino-Board mit /dev/ttyACM0 verbunden ist) und die Daten so abgreifen:
1
2
3
4
5
6
> cat /dev/ttyACM0
min:0,maxmax:50,Sensor_1:35.00,Sensor_2:14.00
min:0,max:50,Sensor_1:35.00,Sensor_2:5.00
n:0,max:50,Sensor_1:16.00,Sensor_2:7.00
min:0,max:50,Sensor_1:35.00,Sensor_2:14.00
...
Die Daten kann man auch in eine Logdatei schreiben:
1
cat /dev/ttyACM0 > logfile.txt
Oder natürlich mittels eigenem Programm auslesen und selbst plotten.
Es kann immer nur ein Programm auf die serielle Schnittstelle zugreifen. Wenn also der Serial Plotter in der Arduino-IDE läuft, kann man nicht gleichzeitig auf der Konsole auf
/dev/ttyACM0zugreifen.
Für die Anzeige von fortlaufend eintreffenden Mess-/Simulationsdaten verwende ich unser PostProc 2 Programm (kostenfrei, siehe Postproc 2).

