A simple app to log and plot data from a serial or COM port.
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:
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
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.
- Python 3.x
- Tcl/Tk (should come with Python 3)
- numpy
- pyserial
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