Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/dilawar/serialscope
A simple Serial Port Oscilloscope
https://github.com/dilawar/serialscope
arduino arduino-uno oscilloscope python3 serial-port
Last synced: about 2 months ago
JSON representation
A simple Serial Port Oscilloscope
- Host: GitHub
- URL: https://github.com/dilawar/serialscope
- Owner: dilawar
- License: gpl-3.0
- Created: 2019-06-15T15:30:03.000Z (over 5 years ago)
- Default Branch: master
- Last Pushed: 2020-08-29T08:07:49.000Z (over 4 years ago)
- Last Synced: 2024-10-11T22:25:05.891Z (3 months ago)
- Topics: arduino, arduino-uno, oscilloscope, python3, serial-port
- Language: Python
- Homepage:
- Size: 495 KB
- Stars: 27
- Watchers: 7
- Forks: 7
- Open Issues: 2
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
[![PyPI version](https://badge.fury.io/py/SerialScope.svg)](https://badge.fury.io/py/SerialScope) ![](https://img.shields.io/pypi/pyversions/serialscope.svg)
A serial port dual-channel oscilloscope. __Python 3 only. Very slugging performance on Windows__.
![Screenshot (v0.1.3)](https://user-images.githubusercontent.com/895681/59994995-83506400-9673-11e9-861a-eb4f2984905e.png)
$ pip install SerialScope --user # just for you
or,$ sudo -E pip install SerialScope # for all users
After installation, launch it.
$ serialscope
Path `~/.local/bin` should be in your `PATH` environment variable.or,
$ python3 -m SerialScope
The default baud rate is `115200`. The oscilloscope will automatically
find any serial port which has arduino connected to it.You can change these values from command line
```
usage: serialscope [-h] [--port PORT] [--baudrate BAUDRATE]Arduino NeuroScope.
optional arguments:
-h, --help show this help message and exit
--port PORT, -p PORT Serial port.
--baudrate BAUDRATE, -B BAUDRATE
Baudrate of Arduino board.```
## Dependencies
- pyserial
- pysimplegui
- screeninfo (optional)# How it works
This oscilloscope has two channels. It assumes that 1 byte of data is sent
for each channel. If you are using arduino's analog pins to read data, then
your resolution would be `5/255` volts.## Arduino board
Function `analogRead` returns 10 bit value i.e., between 0 and 1023. You should
scale it to 255, cast it to `char` before writing to serial port. This is for efficiency.
Sending 10 bits data requires sending 2 bytes. For 2 channels, this would slow
down the sampling rate by 4X compared to when only 1 byte is sent per channel.You can use following snippets in your sketch.
Make sure that your arduino is set to use maximum possible baud-rate. I have
used 115200 baud rate.,```
// Two critical functions.
char intToChar( int val)
{
// analogRead is 10 bits. Change it to 8 bits.
char x = (char) (255.0 * val/1023.0);
return x;
}void write_data_line( )
{
// channel A is on pin A0 and channel B is on A1
char a = intToChar(analogRead(A0));
char b = intToChar(analogRead(A1));
Serial.print(a);
Serial.print(b);
Serial.flush();
}
```A sketch is available in `SerialScopeArduino/` directory. Open it in your
arduino IDE and upload to your Arduino board.