SerialUI provides a graphical interface to send and receive text from the serial port, including a serial plotter for displaying numerical data. It offers features beyond the Arduino IDE Serial Plotter.
BLESerialUI is equivalent to SerialUI but uses the Nordic Serial UART on a BLE connection (Experimental, Unfinished Code)
The programs are written in python using pyQt.
Comparing Arduino IDE with SerialUI:
Text Display
Teensy 4.0 using the Test Program from Paul Stoffregen with default settings:
- Arduino IDE : 526k lines/sec
- Putty 483k lines/sec
- SerialUI: >64k lines/sec and 800 kBytes/sec
Arduino IDE is about 8 times faster in raw text display. This is likely due to Qt plainText widget. appendText
would be the most efficient approach to display text but this method can not be used as it adds a newline after each insertion.
ESP32-S3 Adafruit Feather:
- Arduino IDE : 17k lines/sec
- Serial UI: 17k lines/sec and 560 kBytes/sec
There is no difference between Arduino IDE and SerialUI.
Charting
With simple simulated data from Teensy 4.0 we can retrieve and plot about 2 channels with 80k samples/second/channel.
Arduino IDE plotter does not provide performance metrics.
One liner Windows:
- pip3 install pyqt5 pyqtgraph numpy pyserial markdown wmi bleak qasync
One liner Linux:
- pip3 install pyqt5 pyqtgraph numpy pyserial markdown pyudev bleak qasync
pyqt5
orpyqt6
user interfacepyqtgraph
displaynumpy
data gathering and manipulationpyserial
serial interfacemarkdown
help filewmi
on Windows for USB device notificationspyudev
on Linux for USB device notificationsqasync
andbleak
for bluetooth communication
In future version we will also need:
scipy
image decompressionnumba
acceleration of numpy codecobs
serial data encoding (byte stuffing)zlib
andtamp
for compression
Installation of PyQt5/6 has its own dependencies. If it fails, read the suggested solution in the error messages. For example pyOpenGL might be required.
The main programs are SerialUI.py
and BLESerialUI.py
. The use files in the assets
and helper
folders.
In the Arduino_programs
folder are example programs that simulate data for display.
Urs Utzinger, 2022-2025 (University of Arizona)
Cameron K Brooks, 2024 (Western University)