[amsat-bb] SDR transmitter asa Doppler dig-gen
Zach Leffke
zleffke at vt.edu
Mon Apr 17 16:23:43 UTC 2017
Hi Bob,
I don't have whip out level software, but can offer a few rabbit holes
for the students to go down. I did a similar project for my graduate
SDR class a few years ago where I built a 'satellite simulator' using
USRPs. Trust Me you don't want that code (I was new to all this at the
time), but below are my two cents from lessons learned and new things
since then.
1. The USRP 2922 SDR from national instruments is an Ettus Research
(now owned by NI) USRP with an SBX daughtercard installed. The RF
output of this device is between 400 MHz and 4.4 GHz. So if you are
looking to use it as a programmable LO, it likely won't do. (also, kind
of moot, but if you buy direct from Ettus Research, it is cheaper).
What I would recommend is an Ettus Research N210
(https://www.ettus.com/product/details/UN210-KIT, $1896) and a different
daughtercard that will work at the required Frequency, like a BasicTX
that operates from 1-250 MHz
(https://www.ettus.com/product/details/BasicTX, $83). While your at it,
you might as well get the BasicRX so you can monitor the spectrum with
the same device (has independent tuning between TX and RX, and you can
install both daughtercards in one N210).
2. If you are using USRPs you are probably using GNU Radio (Awesome!).
As Dani mentioned, there is a gr-gpredict-doppler out of tree module
that can be linked with Gpredict to control tuning in GNU Radio. This
is for sure probably the simplest most direct way to get up and running,
so I second that idea (feel free to ignore my number 3). For my
graduate class project, I used the UDP server feature of plain ole
'predict' (actually 'predict-g1yyh') to do achieve basically the same
goals. The problem I ran into with this type of interface was time
(like UTC time). At the time I didn't understand how to properly use
predict via the UDP server function to query it for different time
stamps other than 'now.' End result was I could only run simulations
when an actual satellite was overhead, pretty clunky. Gpredict has a
pretty simple interface for controlling time though (to move the
simulation into the future or back into the past), and I'm sure it can
be done in predict via the UDP interface, I was just new to everything,
so lots of 'student operator error.' I mention it only as a 'watch out
for this one' type thing.
3. One way to think of GNU Radio is that the 'flowgraph' or 'modem' is
just a python class, which can be imported and controlled by large
python programs (you can start/stop the flowgraph, update parameters,
etc.). So for a bit finer control, and if I could do it all over again
the way I would probably go, is another option called 'pyephem'
(http://rhodesmill.org/pyephem/). This handy little python module is
capable of importing TLEs and executing the SGP4 algorithm for orbital
propagation. In addition you can feed it ground station coordinates and
times (UTC) and then query it for az/el/range/range rate (doppler)
information. Its basically a python version of the 'engine' that runs
under the hood of predict or gpredict. So for a bit finer resolution,
and to make a single compact python program that doesn't rely on an
external program (only one 'thing' to execute and control), you could
use pyephem to compute the doppler values and then feed that to GNU
Radio. To be clear though, this is not a GNU Radio out of tree module,
it is a standalone python module, and some coding would be required to
merge the two (I would run pyephem in one thread or process with
callbacks to control the GNU Radio parameters).
4. Last little nugget, when you install GNU Radio, it comes with a
handy little set of executables. One of the commonly used ones is
'uhd_find_devices' which locates connect USRPs (IP or USB based
connections) and returns basic information about them (IP addr, serial
numbers, installed daughtercards, etc). If 'uhd_find_devices' works and
returns info, then when you execute the flowgraph it should be able to
locate the device. Another common one is 'uhd_fft' which is a quick way
to get a spectrum analyzer like display up and running. The other
lesser known tool is 'uhd_siggen' or 'uhd_siggen_gui.' This little tool
lets you quickly generate transmit signals. So for a 'static test' to
make sure the USRP is working as an LO (right power levels, frequency,
etc.) you can use this to get a quick feel for whether or not it will
work for your application. It has a bunch of sliders for controlling
transmit gain and center frequency so you should be able to 'manually'
test out your system and verify things are working before diving into
the complexities of custom flowgraphs with the doppler simulations.
Hope this helps. Cool Stuff!
God Luck and 73s,
-Zach, KJ4QLP
Research Associate
Aerospace Systems Lab
Ted & Karyn Hume Center for National Security & Technology
Virginia Polytechnic Institute & State University
Work Phone: 540-231-4174
Cell Phone: 540-808-6305
On 4/17/2017 10:37 AM, Robert Bruninga wrote:
> USRP 2922 SDR
More information about the AMSAT-BB
mailing list