Skip to content

qwertpas/SerpentSerialTool

Repository files navigation

Serpent Serial Tool

A simple app to log and plot data from a serial or COM port.

Serpent Serial Tool

Like the Arduino serial monitor and serial plotter, but with a few more features:

  • Easily change port
  • Detection for end of message to keep values aligned
  • Option to send keystrokes immediately without pressing enter
  • Text monitor, plot, and send data simultaneously
  • Zoom in and out with Cmd + and Cmd -
  • Plot scaling
  • Looks nicer

Vertical and horizontal scaling: Serpent Plotter

Usage

For MacOS, I've packaged the app into SerpentSerialTool.dmg.zip. After opening the .dmg, a new volume should appear in the filesystem containing SerpentSerialTool.app, which you can drag into your Applications folder.

With pyinstaller, the app can be compiled into an executable for your own system (tested on MacOS and Windows 10):

pip install -r requirements.txt

pyinstaller SerpentSerialTool.spec

or

pip install -r requirements.txt

pyinstaller --clean --windowed --icon icons/serpent.icns --add-data "icons/serpent.png:." --noconfirm --name SerpentSerialTool serpent.py

--clean clears any existing temporary build files

--windowed generates an application file on MacOS

--icon <icon.ico or icon.icns> sets the application icon

--add-data "<filepath>:." includes a file or directory

Print syntax

If you are using this app to monitor variables from another device, you can use the following format to make sure the values align when in autoscroll mode:

  • Each line represents a single variable, consisting of a label and a floating point number, separated by a colon. The line should be terminated with "\n".
  • After printing all the variables, indicate the end of the message with "\t".

Example Arduino code:

void loop(){
    Serial.println("value1: 3.1415");
    Serial.println("value2: 2.7182");
    Serial.print("\t");
}

This format is required for the plotter to parse the variables properly, but is not necessary if you need only need to receive serial data as text.

Dependencies:

  • Python 3.x
  • Tcl/Tk (should come with Python 3)
  • numpy
  • pyserial

Connections

This app was built to debug the Ø32 controller, a miniature brushless DC motor controller. It is part of the Pintobotics project: https://pintobotics.substack.com/

Hackaday project: https://hackaday.io/project/191983-serpent-serial-tool