Introduction: Adruino Serial Plotter

The Arduino Serial Plotter function has been added to the Arduino IDE, allowing you to natively graph serial data from your Arduino to your computer in real time. If you’re tired of seeing your Arduino’s analog sensor input data pour onto your screen like The Matrix, this looks like a prettier way to visualize what’s going on. The Serial plotter is an offline tool allowing you too Visualize data and troubleshoot your code offline without having to use third parts services like Processing or Plotly. Since there is no official documentation on the Arduino website regarding the use & functionality of the Serial Plotter, I decided to documents its uses and features.

Features

  • Plotting of Multiple Graph
  • Offline
  • Auto-Resize Graph
  • Supports Negative Value graphs
  • Auto-scroll along X-axis
  • Different colours for each variable

Applications

  • Offline Data Visualization
  • Code Troubleshooting
  • Waveform Analysis

Step 1: Plotting a Graph

Now that you have installed the latest version of the Arduino IDE(1.6.7 or above) its time to understand how the Serial Plotter actually works. The Arduino Serial Plotter takes incoming serial data values over the USB connection and is able to graph the data along the X/Y axis, beyond just seeing numbers being spit out on to the Serial Monitor. The vertical Y-axis auto adjusts itself as the value of the output increases or decreases, and the X-axis is a fixed 500 point axis with each tick of the axis equal to an executed Serial.println() command. In other words the plot is updated along the X-axis every time the Serial.println() is updated with a new value.

Remember to set the Baud Rate of the Serial Plotter so that it matches that of the code.

Multiple Plots

When displaying multiple waveforms, every separate variable/value/parameter is displayed using a different colour like shown below.

Inorder to plot multiple variables or waveforms simultaneously a 'space' is printed between the two print statements.

Serial.print(temperature);
Serial.print(" ");
Serial.println(humidity);

OR

Serial.print(temperature);
Serial.print("\t");
Serial.println(humidity); 

In this case the values of the variables 'temperature & humidity will have separate waveforms plotted on the same graph simultaneously.

Step 2: Offline Data Visulization

The main purpose of having the Serial plotter is that you do not need to be connected to the Internet in-order to visualize the data from a sensor or your project. And hence for the purpose of Data Visualization the Serial plotter excels at its job.

Whether its a singular wave or a multiple plot graph the Serial Plotter auto-resizes itself and color codes each wave. In-order to test the Data Visualization function you can follow the following steps:

  1. Connect a couple of sensors to your Arduino
  2. Print the values of the sensors & Upload the code.
  3. Open the Serial Plotter.

I have used the Serial Plotter in my Tweeting Weather Station to visualize the reading of the various sensors on the Weather Station. The above waveforms show the plot of the Temperature(26°C) & Humidity(65%RH) readings of the SL-HS-220 sensor.

Step 3: Troubleshooting

One of the best uses of the Serial Plotter is to troubleshoot the code & circuit. Faulty connections or incorrect coding logic can sometimes return an undesired output. In such cases where there too many lines of code or too many wires to debug the Serial Plotter can show the exact point of error.

With the help of the Serial Plotter you can check if a sensors reading is incorrect or even if the sensor is not connected properly to the Arduino. The Serial Plotter will also help debugging code by displaying the values various conditional statements and variables or even the states of the pins of the Arduino.

A good example of would be troubleshooting a Obstacle Avoidance Robot. In this example the Blue waveform represents the Ultrasonic sensor and the Yellow and Red waveforms represent the left and right motors. As the distance between the obstacle & the robot decreases, the Blue waveform decreases. At a threshold value(minimum distance) of 10, the robot turns right hence the two motors have different value's;Right=50,Left=100. You can see the Red waveform decreasing and the Yellow waveform remaining constant speed which represents the right turn.

Troubleshooting whether a wire was not connected properly or a component was malfunctioning or your coding logic was incorrect would have cost you a lot of time. But with the help of the Serial Plotter the amount of time it takes to troubleshoot the problem can be significantly reduced by analyzing the waveforms.

Step 4: Function Generation & Analysis

With a basic programming sense and a couple of lines of code, the Arduino is able to act as a Function Generator. The Arduino is capable of producing Square,Triangular, Sine & Sawtooth waveforms. In previous versions of the Arduino IDE one could only observe the values of the type of waveform being produced in the Serial Monitor without any visualization. It would be time consuming to analyze the output solely on the basis of numerical value's; and this is the place where the Serial Plotter comes handy; in visualizing the waveforms being produced.

Function Generator.inoFunction Generator.ino

Step 5: Future Improvement & Additions

The Arduino IDE has for long needed the addition of the Serial Plotter. It has increased the functionality of the Arduino IDE but still lacks some features:

  • Autoscroll Toggle
  • Simultaneous use of Serial Plotter & Serial Monitor.
  • X-axis Scale/Time scale required.

As these features are added to the Arduino IDE, I will continue to make changes and add new steps to this Instructable.

Comments

author
Vabrinnta made it! (author)2017-03-07

First of all thank you for showing how to use the plotter function.

I have one question:

Is it somehow possible to plot the data and simultaneously save the data with i.g. CoolTerm? If I try to do it, the Arduino sketch will give me an error telling me that the monitor can´t be opened while the plotter is open.

Thanks in advance.

Best regards

Florian

author
Jonathanrjpereira made it! (author)Jonathanrjpereira2017-03-07

I am not familiar with CoolTerm. But in my experience if something is sharing the same serial port as the serial monitor/plotter while they are open could result in a similar error.
It could also be that your serial monitor is already opened & hence the plotter cannot be opened simultaneously.

author
Jonathanrjpereira made it! (author)2016-03-16

Have you come across any other special features in the Serial Plotter? I want to see it!

Share a picture of you using that special feature in the comments below and be awarded a 3-month Pro Membership on Instructables.com and a digital patch.

3-month Pro Memberships remaining: 10 / 10

author
stevew17 made it! (author)2017-03-26

does anyone know where in the IDE does one adjust the Baud rate (I know how to set the baud rate in the code but I am referring to the serial plotter) ?? It shows a picture on one of the steps where it says your code and the serial plotter must be set at equal baud rates (and it shows a pic of the baud rate of 9600 and a scroll down) but it doesn't show how to actually adjust the baud rate on the serial plotter. I ASK this question because on several projects now I have been able to build and test many of these projects but could never get results plotted on the plotter.

author
paraklet made it! (author)2017-01-03

are these graphs vs time?

can I get a table with the variables value?

author
Baybren made it! (author)2016-10-11

Very helpful - thanks! This is so much easier than trying to read long columns of numbers. One little detail I found: if you plot more than 4 lines, the plotter will reuse the same colors, so it can get a bit confusing unless you know which line is which.

Dual PID Output.PNG
author
RobertoM56 made it! (author)RobertoM562016-11-25

I created this plotter for multiple values. It has a legend, based off of name:value pairs that the Arduino sends via Serial.println();

http://www.onebeartoe.com/development-tools/serial-plotter/

author
acboother made it! (author)2016-07-03

I agree about the lack of plotting facilities. I made this https://www.instructables.com/id/Arduino-Developmen...

over three years ago to address that issue plus add in a lot of other visualisers which can all be used simultaneously. Still freely available to those who contact me for the link.

author
panther3001 made it! (author)2016-06-11

Awesome, thanks! Got it working.

Capture.PNG
author
Jonathanrjpereira made it! (author)Jonathanrjpereira2016-06-12

Hey I have sent you the 3-month Pro/Premium Membership. All the best & Follow.

author
Anuj FALCON made it! (author)2016-03-31

Very good explanation! thank you so much...

author
Jonathanrjpereira made it! (author)Jonathanrjpereira2016-03-31

Thanks.

author
zencuke made it! (author)2016-02-15

Thanks for this. Nice clear explanation of a great tool. I have just one question. You say "The main purpose of having the Serial plotter is that you do not need to be connected to the Internet in-order to visualize the data from a sensor or your project." It would never occur to me to connect to the internet for data visualization. For visualization I think Excel, Processing, writing my own plot code in Python, whatever. IDE plotting is mostly a better choice than those but none of them need the Internet. What Internet data visualization tool am I missing that is so popular that you just assume it?

author
Jonathanrjpereira made it! (author)Jonathanrjpereira2016-02-26

Assume a person(someone like me) who is not familiar with Processing or Interfacing an Arduino with Excel or has no experience with languages such as Python needs to visualize the data from his/her Arduino. The Serial Plotter is a useful tool too such a person. Since I had no knowledge regarding Processing,Python,etc I took too online(Internet based) open source data visualization platforms(Plotly, Sparkfun Data,etc) too visualize my data. These platforms are very easy to use if you have a wifi shield as you only need to copy & paste a few lines of code available in their documentation & user guides. Now considering the fact that this tutorial is made for newbies who do not possess a wifi shield and have basic coding skills; this Instructable is made to cater to their data visualization needs.

author
zencuke made it! (author)zencuke2016-02-26

I totally agree and I will be using this mode a lot even though I am not a newbie. Your tutorial will be a great help and thanks for writing it. I just don't understand what any of this this has to do with being connected to the Internet. Most of the other visualization tools don't need an Internet connection either. I use this mode mostly because it is the simplest visualization method for looking at Arduino generated data because it is built in to the IDE.

author
KickolasNage made it! (author)2016-02-12

Have you found a way to plot more than two channels using Serial Plotter?

author
Jonathanrjpereira made it! (author)Jonathanrjpereira2016-02-26

I have included the instructions to plot more than two channels/waveforms. Its highlighted as 'Multiple Plots'

author
dmhoke made it! (author)2016-02-10

you are right about time this feature was added. Besides running the plotter with a time stamp, how about simultaneous recording :)) Or perhaps some of this is possible by adding a real time clock? ? ? ?

any ideas???

author
Jonathanrjpereira made it! (author)Jonathanrjpereira2016-02-11

I guess they could also Integrate and arduino Graphics, which would create a graphical output; kind of like integrating some processing like functions within the Arduino IDE.

author
Starlyte made it! (author)2016-02-10

Thankyou

author
Jonathanrjpereira made it! (author)Jonathanrjpereira2016-02-11

Glad you like it.

author
KickolasNage made it! (author)2016-02-11

Thanks! This was very helpful in a project I am working on.

author
Jonathanrjpereira made it! (author)Jonathanrjpereira2016-02-11

Glad you like it.

author
ThomasK19 made it! (author)2016-02-11

Ah, thanks for sharing. I already wondered what the new plotter option was good for / how to use it.

author
Jonathanrjpereira made it! (author)Jonathanrjpereira2016-02-11

Glad you like it.

About This Instructable

62,725views

126favorites

License:

Bio: I'm Jonathan Pereira, a novice Electronics Engineer. I like to make Lumen Powered Thingamajigs, Almighty Brainy Buttons, Tweeting Fart Detectors, Electronic Doohickey's and ... More »
More by Jonathanrjpereira:LUMOS: Smart Lamp for Better SleepAdruino Serial Plotter8 Twittering Thingamajigs
Add instructable to: