Enhanced Serial Monitor - Version 3.1.3 UPDATE

Version 3.1.3 now available with support for additional baud rates of 500000, 1000000 and 2000000. For those people already with a download link simply replace the program name with SerialMonitor3_1_3.exe.

Anyone else interested enough please email me or post a message in this thread.

Cheers, Alan (16th April 2017)

Latest version of Enhanced Serial Monitor (ESM) 3.1 now available. Many little fixes (cosmetics, bugs and features).

Big changes are the support for output to file with a new logger visualiser plus all the existing ones can echo their input to the logger.

Also the support for writing out to the ESM and reading from it and the Arduino IDE updated completely with new functions. Same underlying messages but much easier to use function library. Which can be found in the ZIP file on the support page Getting Started

The help/documentation is now online and can be found here.

Download is the same as before but with the program name replaced with SerialMonitor3_1.exe If you have lost your download link or are a new user please leave a message here and I will send you the new one.

Add a note here or message me for a download link
Also visit Instructableshttp://www.instructables.com/id/Arduino-Development-Tool/ for an earlier version description.

Cheers Alan (July 16, 2015)

Contact.txt (117 Bytes)

What great fun the Arduino is but…
The IDE serial monitor just isn’t sophisticated enough for my liking. I found it difficult to get a mass of information displayed meaningfully. The monitor whizzed past and intermixing different types of information just made the display a muddle of text.
I output my IMU data to a Processing sketch which was very informative but was prettier than I needed and I found myself struggling to add more output styles especially when I wanted them to be running concurrently.
So I wrote my own serial monitor I was wondering if others would be interested in it. I’ll show/describe it below and would be interested to know people’s thoughts. If there is sufficient interest I will look into making it available.
It’s been tested on an Arduino UNO, Mega256, Nano and Pro Mini (all clones) and also on self builds using the ATMega328 with a CP2102. It was interesting to discover that the UNO and Mega do not work reliably at 300 baud and the buffering of data between them and the PC is also different. These differences are not noticeable in ‘normal’ conditions but show up at the limit of performance such as when transmitting a lot of data very quickly, in either direction, especially at the lower or higher baud rates.
I also wanted to integrate data being sent out to the Arduino into the trace so I could observe how long and how much data can flow before it is received and replied to.
The program runs on Windows and has the following window forms:
• Main monitor
• Message sender
• Trace copy
• LCD emulator
• Freeform drawing surface
• Alert reporter with ability to run external programs
• PS3 controller visualiser
• XY scatter plotter
• Sweep plotter
• Histogram plotter
• IMU visualiser
These can be controlled and configured from the PC and/or from the Arduino. To make the above forms respond to the data stream a simple protocol is used with commands identified with a # prefix and parameters separated by a ~ character. Free text is supported for viewing in the main monitor. All window forms have a quick button back to the main monitor window, a clear/reset button, a pause option, tracer text for that particular window form and a test button to try out commands directly as if sent via the serial port.
I adopted text representations rather than binary so it is possible to ‘see’ what is going on in the Arduino IDE’s serial monitor which aids development speed. It may not be as compact or fast as binary (which could be made more data efficient) but its convenience outweighs this benefit and the typical PC is well able to cope - it is possible to have all of the above forms being updated simultaneously from an Arduino running 19200 baud.

Main monitor window • This allows selecting, refreshing, opening and closing the COM port. • Choose a reading strategy - fast read normally and one line at a time where more control over the sequencing of messages to and from is important. • Control the display - pausing, clearing and copying the trace, adding in a timestamp which also shows whether the data flow is inbound, outbound or looped back (for test purposes where the serial device does not need to be connected). • Choosing a display refresh rate to optimise the loading on the PC when large quantities of data are being transmitted. Whilst reading the trace at high speed is difficult it is useful for the real time visualisers such as the IMU. • Read and display buffer usage is displayed to allow tuning and warn of either the PC or the Arduino generating too much data for the other. • It is used to manually open the other forms if not opened automatically by the Arduino.

Message Sender • This allows data to be sent outbound on the COM port and controls whether the output is included in the trace window. • Control whether the output is not sent out but simply looped back. This is used for convenient experiments with data streams to see how they work with the various forms and visualisers. • A looping tool allows multiple parameter substitution and repeats. • A joypad simulation with user adjustable data. • A keypad simulation with user adjustable data.

Trace copy • This allows you to review the trace output while the main trace window is running. • This contains the text of the trace window when requested for by either the user or the Arduino.

LCD emulator • 80 columns by 25 rows. • Write text anywhere on the ‘screen’ in any of 7 colours for foreground and background. • Scroll command to you can treat it like a TTY display. • Make up your own user interface.

Freeform drawing surface • 500 pixels by 500 pixels drawing surface. • Commands for line, rectangle ellipse, arc and pie, filled and unfilled, cross and text, in various sizes and orientations and in 5 colours. • For example plot out your robot path.

Alert reporter with the ability to run external programs • Somewhere to report special events to the user. • Option to send run commands to start programs.

PS3 controller visualiser • Displays PS3 or similar controller button and joystick values. • Green shows values unchanged since last reading. • Orange shows values that have changed since last reading. • Red shows values that are at maximum. • Joystick position cross hairs. • Useful for watching what the controller is sending to your robot for example. • See how sensitive the different buttons are. • Note if the joysticks are not self centring or minimum/maximum values not reached.

XY scatter plotter • See the relationship between two values for up to five different sets. • Easy user control of axis settings.

Sweep plotter • Trace like oscilloscope. • Five traces with a resolution between 10 and 1000 points. • Easy user control of axis settings. • For example watch accelerometer and gyro readings.

Histogram plotter • 21 bar histogram. • Shows percentage of observations and count of observations. • Easy user control of axis settings. • Over and under range outlier recording. • Simple statistics - mean, min and max of within range observations.

IMU visualiser • Roll and pitch visualisation. • Invert option to suit installed orientation of breakout board. • Accelerometer and gyroscope readings (including gyro drift summation)


2 questions came up: Can I save the plots made as JPG, (or better as csv file and rerun ?) support for VT100 emulator?

20+years since I did a VT100 emulator.... I think not :astonished:

I'll add print and save to the wish list - good ideas

Wow! Lot of capabilities there!

Sorry if I have missed something, but what is the current status of this? It sounds brilliant, but the only link I can find has a warning above it saying not to download it. Is there a stable version yet: if so, where would I find it?

JohnGeddes: Sorry if I have missed something, but what is the current status of this? It sounds brilliant, but the only link I can find has a warning above it saying not to download it. Is there a stable version yet: if so, where would I find it?

There was insufficient interest shown by the community to justify me freezing a build version and allowing it to be downloaded. So I just keep on using it and updating the features as I need them (auto scaling has been added, for example, to the scope style trace).

I was expecting more interest as this adds a shed load of information to the developer...

If more interest can be generated then I'll look into letting it out again.

Cheers Alan

Hi Alan,

Think it is a pity you do not provide a latest (BETA) version of your Serial tool, so please reconsider.

I have written several classes/libs for Arduino and posted them on the playground and for most of them there was little feedback too, especially after the first days. So I recognize your argument.
Still by keeping providing the (almost) latest version I collected valuable feedback over time - yes, in small amounts with large intervals - But sometimes I get a thank you mail or I find a lib back in some university project, indicating there is more interest than on first sight.

I rest my case :wink:

This may be exactly what I'm looking for. I'm looking for a way to monitor 4 sensors (3 temp and one flow meter) and plot data to a graph. I'll have to play with this and see what I can come up with. Thanks!