SP-Comm Tutorial using scikit-dsp-comm
A tutorial on signal processing and communications using
scikit-dsp-comm, including hardware interfacing to a software defined radio (SDR) and the PC audio subsystem.
Note: To immediately jump into OS specific hardware and software configuration visit the wiki pages, but I suggest cloning the repo before you start setting up any hardware drivers, especially for Windows users.
git clone https://github.com/mwickert/SP-Comm-Tutorial-using-scikit-dsp-comm.git
With the terminal in the root directory of the cloned repo perform an editable pip install using
$ pip install -e .[helpers]
To not install without the PyAudio and RTL-SDR dependency and hence not be able to use those modules
$ pip install -e .
On Windows the binaries needed for the
pyaudio should install, but on other platforms you will have to do some more work (Conda Forge install pending at the close of Scipy 2017 sprints). All the capability of the package is available less
pyaudio and the RTL-SDR radio with doing any special installations. See the wiki pages for more information.
This project provides the set-up instructions and content needed for the Scipy 2017 tutorial on signal processing and communications using the
scikit-dsp-comm package. To get the most out of this tutorial you will want to take the time to install and configure both software and hardware interface drivers for the RTL-SDR low-cost software defined radio platform and Pyaudio.
pip install -e .[helpers] from the location of the package repo, with helpers
pip install -e . from the location of the package repo, without helpers pyAudio/RTL-SDR
Newly added: To drive signals into PyAudio you should have a 3.5 mm audio cable to interface your cell phone to your PCs audio input jack (perhaps on an external sound card ) . Add to this a signal generator app for your cell phone. On the iPhone I like using (https://www.cateater.com/signalgenerator/). Screen shots of these items are at the bottom of this page.
Getting Ready for the Tutorial
Python Version and Packages
- Python 3.6 preferred, but Python 2.7 also works, as this is the origin of scikit-dsp-comm
- I recommend using Anaconda as your Python base, and its ability to use virtual environments
- Note a virtual environment is however not included in the repo
- The following Scipy packages are required:
jupyter, as well as related dependencies; with the full install of Anaconda you are good, less the packages you install under the hardware set-up
- PIP install (pending conda install)
Best Option: With a bash shell, command prompt, or power shell sitting at the location of the clone, type:
pip install -e .[helpers]; This is known as an editable install, which means if you pull new versions in to the local repo you can quickly reinstall the changes. This is recommended for the tutorial, as updates may come on Monday evening or Tuesday morning of the conference. I will use Slack to alert you.
To import the package, or portions of it, use for example:
import sk_dsp_comm.sigsys as ss
PyAudioand the new
pyaudio_helpertype the following at an IPython/Jupyter notebook prompt:
In : import sk_dsp_comm.pyaudio_helper as pah In : pah.available_devices() Index 0 device name = Built-in Microphone, inputs = 2, outputs = 0 Index 1 device name = Built-in Output, inputs = 0, outputs = 2 Index 2 device name = USB Audio Device, inputs = 1, outputs = 2
Your list of audio devices found will depend upon your system configuration; I clearly have a USB audio device plugged into my MacBook
Cloning this Repo
- Clone this repo to some convenient location on your PC:
git https://github.com/mwickert/SP-Comm-Tutorial-using-scikit-dsp-comm.git. This will place a directory structure for testing the hardware and also all the folders which contain the lecture material and Jupyter notebooks for hands-on exercises
- The lecture material and Jupyter notebooks are in development, and will appear over time as the conference approaches. The absolute newest version will be pushed just before the tutorial; using
git pullyou will be see the changes and then them merge them with your local repo
Setting Up Hardware Interfaces
Visit the Wiki pages and choose your operating system. Python packages related to the configuration will also be installed in this process
At the end of the installation process you will have the opportunity to test you install using content from the