Alternatives to Arduino IDE Serial plotter
For years I’ve used a built-in Arduino IDE Serial Plotter to graph received data from various microcontrollers but recently I needed to do more specific data analysis and finally had an excuse to ditch the basic plotter and go out into the world to find a better serial grapher.
My conditions were few. It had to be open source, log data to file, and show multiple streams/graphs at once.
But, what are serial graphers or plotters? They are a tool for data visualization and analysis that allows users to quickly and easily plot data received from a serial port. They are usually used to monitor sensor data, debug microcontroller projects, and send data and commands to the microcontroller for processing.
After a quick GitHub search and more time than I would admit to on checking out each of the interesting projects there I narrowed my selection to a few: Serial Port Plotter by CieNTi, Processing Grapher by Simon Bluett, and SerialTest by Self Not Found 😉.
Each of them has something that I found useful or interesting.
TL;TR: SerialTest is the best.
Serial Port Plotter
First off, I like the UI and color scheme. So much in fact that I prefer it over the others regardless of its minimal features. It is a basic serial plotter, select the port, its speed, some other options if you need to, click connect, and your off. You can save all incoming data to a CSV file for further processing but one major thing that’s missing is the serial send option. You can receive data but cant send data over to the device. That is just a dealbreaker. I like the UI and design but not being able to send data is just weird. Also, if you want to see multiple values processed into graphs you will need to send them in as messages that must start with '$' and end with ';' (semi-colon), and the integers inside need to be space-separated.
Processing Grapher
The Processing Grapher is a web-based tool developed by ChilliBasket, a software development company based in India. The tool allows users to create and customize interactive graphs and charts using the Processing programming language.
Unlike Serial Port Plotter, Processing Grapher can act like a serial terminal. It can also display 4 graphs at the same time. It still requires incoming data to be formatted how it likes it but at least it’s compatible with already deployed Arduino style of messages for serial plotters, or values separated by a comma, for example, 17,01,-97.646. Each value can then be put on its own graph making it easy for fast analysis without the need to save a CSV file and create graphs for separate values in some external software.
Another benefit of the Processing Grapher is its versatility. The tool can be used to create a wide range of graphs and charts, including line graphs, bar graphs, scatter plots, and more. Users can also choose from a variety of data input options, including uploading a CSV file or manually entering data into a table.
SerialTest
Now, SerialTest is a weird one. It suffers from “I Think This Would Be Better”, or “I’ll Just Put it Here” UI choices that many single programmer programs are plagued by, this includes mine.
This program is a full package. It’s cross-platform and can be installed almost everywhere, Windows/Linux/Android, and Mac lovers are exempt from this awesome tool.
It can send and receive data over widely different protocols such as serial port, Bluetooth SPP client/server, Bluetooth LE client, TCP client/server, and UDP.
What I love about this tool especially is that you can provide your incoming data format and it will split the values for graphing making this tool extremely useful.
If you have a device that you control over a serial port you know how tedious it is to constantly type in commands. Well, SerialTest has you covered. Under the control tab, there is a handy little UI builder for sending commands. You can add Checkboxes, sliders, or textboxes with predefined or input a value to send. If you click the arrow to the right you get additional options for that field like if the value has any prefix or suffix, is it unescaped or is it Hex. Nifty to have when testing devices.
Also, as soon as I realized that now there’s a Dark Theme for SerialTest its ranking jumped considerably.