Dr. Marc Lichtman has recently released his free online PySDR guide to Digital Signal Processing (DSP) explained with the help of software defined radio and Python code. Over the years we've seen numerous SDR & DSP courses come out, some requiring payment and some free. We note that this guide is completely free, and appears to be one of the better if not the best guide in terms of explaining DSP fundamental concepts in an easy to understand way. A lot of visualizations and animations are used which really help anyone new to the subject.
While the explanations are very good, please note that this is still a technical University level guide intended for Computer Science or Engineering students, so prerequisite knowledge is required. Dr. Marc recommends it for someone who is:
- Interested in using SDRs to do cool stuff
- Good with Python
- Relatively new to DSP, wireless communications, and SDR
- A visual learner, preferring animations over equations
- Better at understanding equations after learning the concepts
- Looking for concise explanations, not a 1000 page textbook
The SDR hardware used in the book examples is the PlutoSDR which is a fairly low cost SDR intended for use by students. However, the PlutoSDR isn't required as most of the code examples use generated data.
[Max-Felix Müller] wanted to develop his own SDR application with the goal of learning python and a bit about signals processing. To accomplish this goal he’s using [pyrtlsdr] a library which wraps many of the functions from the [rtlsdr-dev] library into a Pythonic set of functions that you can use to develop SDR applications for an RTL based SDR in python. Over on Hackaday.io Max-Felix has been writing about his Python RTL-SDR experiments and has been uploading sample code for anyone to take a look at and learn from.
Using the library is pretty simple as it handles the basics of setting up the frequency and PPM settings as well as gain and proceeds to tunnel samples into your application. Max-Felix’s examples take us from the very first steps of setting up the dongle and gathering samples, to plotting the spectrum and creating a waterfall. This generally entails the use of another python library known as [matplotlib] and [numpy], which together you can use to create your own FFT.
It is nearly limitless what you can do with a little bit of Python and a few libraries given enough development time and you don’t need to be a software developing master to get started. You may be interested in taking a look at [PLSDR] which we covered in a previous article where [P. Lutus] developed his own SDR application completely in Python. It’s open-source so feel free to take a look and learn more about how you can implement amazing things with just a little bit of code.
Thomas Winningham, author of the rtl_fm_python web application for the RTL-SDR has given a talk at the PyOhio 2014 conference. In Thomas’ presentation he gives an overview of the RTL-SDR dongle and then goes on to discuss his RTL-SDR Python library and software.
If you are interested in developing your own software for the RTL-SDR this talk may be of interest to you as he discusses several aspects of the code used in his RTL-SDR library.
Software Radio with CTypes