Serial Studio: Easily Visualise And Log Serial Data

Outputting data from a microcontroller over a serial port is convenient and easy, but formatting, visualizing, and analyzing the data can be tedious and frustrating. [Alex Spataru] knows this all too well, having spent too many hours building and debugging custom dashboards. To save himself and others the same frustration in the future, he created Serial Studio, a tool for quickly building dashboards for serial data.

The only input required for Serial Studio to create a dashboard is a simple JSON structure specifying the data’s format, and how it should be grouped and displayed. Originally Serial Studio required all the JSON data to be sent over serial, which is fine for simple data but quickly becomes cumbersome for more complex applications. To solve this, [Alex] added a feature allowing the JSON document with the format information loaded from the computer, while only the data is sent over serial.

Serial Studio includes several visualization options, including raw line graphs, bar/level indicator, dial indicator, the artificial horizon for IMU data, or a map widget. It can also output the formatted data to a CSV file for further analysis in other software. A console window is also included for viewing raw data or debugging purposes. See the usage demo after the break.

We like Serial Studio’s ease of use and adaptability, and we’ll likely use it for our own projects in the future. It is compatible with Linux, Windows, and Mac thanks to the Qt framework, and the code is open-source and available on GitHub.

If you’ve ever watched one of the BPS.Space model rocket launch videos, you’ll know how critical data logging, visualization and analysis is for [Joe Barnard]’s work. Serial Studio is perfect for such applications, and [Alex] used it extensively for simulated satellite competitions at his university.

28 thoughts on “Serial Studio: Easily Visualise And Log Serial Data

    1. That was a problem in the early KDE days that resulted in a big controversy and the creation of Gnome. It’s only been 20 years since that was all resolved with QT going LGPL so I understand how that news might not have gotten to everyone yet.

      1. Please don’t. Electron/Chrome has terrible rendering without high DPI. Well even then, but you notice less there.
        Apart of that, Electron has terrible OS integration and doesn’t follow any standards.

        Qt is far from perfect, but vastly superior.

      1. i used to use realterm but its somewhat limited.

        i also had an abomination serial grapher of sorts written in lua. its not really a useful tool unless you are the idiot that wrote it, which i was. it started as something for a specific application and accreted completely unrelated features over time.

  1. Below is a link to the free Serial Oscilloscope application by X-IO Technologies (UK) that’s been around since 2013. Serial Oscilloscope is a Windows application. The link takes you to Serial Oscilloscope’s home page which has links to a YouTube demo video and a GitHub repository. I’ve never tried Serial Oscilloscope in Linux, but I bet it will work OK under Wine. I think Serial Oscilloscope is a much better application than the Arduino IDE’s built-in Serial Plotter, but it’s not as simple to use. Quoting from Serial Oscilloscope’s home page:


    Printing data to a serial terminal is a useful debugging tool when developing embedded systems but often the data of interest is a continuous stream of numbers that is of little use displayed as text. For example, this might be data from a sensor or real-time statistics such as bandwidth performance. Serial Oscilloscope is a Windows application that plots comma-separated variables within any incoming serial steam as channels on a real-time oscilloscope. The application also functions as a basic serial terminal, received bytes are printed to the terminal and typed characters are transmitted. The project uses Michael Bernstein’s oscilloscope library to plot up to 9 channels on 3 different oscilloscope with view and trigger menus.

    Serial Oscilloscope is compatible with any serial stream containing comma-separated values terminated by a new-line character (“\r”). For example,”11,22,33\r” will be interpreted as values 11, 22 and 33 for channels 1, 2 and 3 respectively. The serial stream can also include non numerical characters which will be ignored. For example, “a=0.5,blue,x=3.14,t1t2t3,8\r\n” will be interpreted as values 0.5, 3.14, 123 and 8 for channels 1, 2, 3 and 4 respectively.

    The open-source resources also include an Arduino sketch to send analogue input values over serial. In the video I use the Arduino and Serial Oscilloscope to plot data from an IR distance sensor, a triple-axis accelerometer and a microphone.

    —-[END QUOTE]—-

    * Serial Oscilloscope by X-IO Technologies

  2. I like the idea of the JSON structure being sent in the serial. That way you could have any number of headless devices collecting data. They just have to be programmed to send the JSON first whenever something attaches before sending data.Then a single viewer “dumb graphical terminal” can plug into any one of them without any prior setup. Just plug it in where you want to know what is happening.

  3. From the write up and project name I thought this would be a tool to snoop on and analyze two-way serial communications, but it appears to be more of a front end builder for a data stream only. Sadly, things linked in the comments appear similar.

Leave a Reply

Please be kind and respectful to help make the comments section excellent. (Comment Policy)

This site uses Akismet to reduce spam. Learn how your comment data is processed.