Skip to content

A software oscilloscope for Arduino made with Python and PyQtGraph

Notifications You must be signed in to change notification settings

suyashb95/SoftwareOscilloscope

Repository files navigation

Software Oscilloscope

A python project which takes in data from any stream(Serial port, TCP socket or any generic stream) and plots it in real time using PyQtGraph. The stream must implement open(), close() and readline() methods to work with the package.

Installation

  • Works with Python 2/3
  • Clone the repo or download the zip
  • Install VC++ for Python from here
  • cd to the folder
  • run pip -install -r "requirements.txt"

Dependencies

  • pyqtgraph
  • PySide or PyQt 4.8+
  • numpy
  • pySerial

Usage

  • The stream has to implement open(), close() and readline() methods
  • Data from multiple sources has to be space separated and each reading must be on a new line
    source1_value1 source2_value1
    source1_value2 source2_value2
    and so on
  • X/Y axis limits, Frame interval, Autoscaling(True by default) and the number of lines(1 by default) to read can be specified via kwargs.
'''
Uses the SocketPlot-Test example to plot a sine wave.
Run SocketPlot-Test.py on a different console window
'''
>>>from SoftOscilloscope import SocketClientPlot
>>>plot = SocketClientPlot('localhost', 5000)
>>>plot.start()

'''

Example for serial plots
'''
>>>from SoftOscilloscope import SerialPlot
>>>plot = SerialPlot('COM_PORT_NUMBER', BAUD_RATE)
>>>plot.start()

'''
Takes a generic stream and sets custom parameters
'''
>>>from SoftOscilloscope import GenericPlot
>>>plot = GenericPlot(
	myStream, 
	xlim=(-100,100),
	ylim=(-50, 50),
	interval=1, 
	autoscale=False,
	read_size=1)
>>>plot.start()

Demos

alt tag
Plotting x,y,z data from a 9DOF IMU over a serial port.

Contributions

If you want to add features, improve them, or report issues, feel free to send a pull request!

About

A software oscilloscope for Arduino made with Python and PyQtGraph

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages