User:Duggabe: Difference between revisions

From GNU Radio
Jump to navigation Jump to search
(DRAFT 2nd REVISION)
mNo edit summary
 
(78 intermediate revisions by 4 users not shown)
Line 1: Line 1:
<!-- Guided_Tutorial_Hardware_Considerations -->
Barry Duggan is a graduate of Georgia Tech in Electrical Engineering and is a career computer programmer specializing in real-time control, data communication systems, and email security. He has been an amateur radio operator since 1953.
<!-- "Using GNU Radio with Hardware" -->
<!-- 14 May 2020 -->
= DRAFT 2nd REVISION Guided_Tutorial_Hardware_Considerations =
== Introduction ==


One of the more basic (and also incredibly useful) things you can do in GNU Radio with a receiver is to create a software radio spectrum analyzer. This is also a great first step because it will verify that your hardware is working correctly. Later we will create a broadcast FM receiver.
Barry started working on the GNU Radio project in 2019 and now devotes most of his time doing Wiki documentation, and development of amateur radio applications. He is a member of the GRCon24 Organizing Committee.


== Prerequisites ==
Summary of programming languages used (roughly in chronological order):
 
* FORTRAN
* Tutorials:
* assembly languages of various computers
** [[Guided_Tutorial_Introduction|'''A brief introduction to GNU Radio, SDR, and DSP''']]
* COBOL
** [[Guided_Tutorial_GRC|'''Intro to GR usage: GRC and flowgraphs''']]
* C
** [[Sample_Rate_Tutorial|'''Understanding sample rate''']]
* Pascal
 
* HTML5
== What Will I Need? ==
* CSS3
 
* XML
There is a large and growing number of vendors who provide hardware with GNU Radio drivers.They span from very cheap ($20) receivers to very high-performance tens-of-thousands-of-dollars systems. Parameters for four of the most popular devices are presented below. Other devices are listed in [[Hardware]].
* JavaScript
 
* JSON
== Creating a Software Radio Spectrum Analyzer ==
* node.js
 
* PHP
Using gnuradio-companion (GRC) and the following Block descriptions, build this flowgraph.<br>
* Python
 
(put flowgraph here)
 
=== Parameters For Popular Devices ===
 
This example uses an [https://kb.ettus.com/B200/B210/B200mini/B205mini Ettus Research USRP B200] and uses the [https://github.com/EttusResearch/uhd USRP Hardware Driver (UHD)].
 
* The USRP B200 provides a fully integrated, single board Universal Software Radio Peripheral platform with continuous frequency coverage from 70 MHz to 6 GHz. In order to use UHD blocks, you must have UHD installed. See [https://kb.ettus.com/Building_and_Installing_the_USRP_Open-Source_Toolchain_(UHD_and_GNU_Radio)_on_Linux Installing the USRP].
** General Tab
*** Output Type: Complex float32
*** Wire Format: Automatic
*** Stream args: (blank)
*** Stream channels: []
*** Device Address: "serial=xxxxxx"  (supply your serial number)
*** Device Arguments: ""
*** Sync: No Sync
*** Clock Rate (Hz): Default
*** Num Mboards: 1
*** Mb0: Clock Source: Default
*** Mb0: Time Source: Default
*** Mb0: Subdev Spec: (blank)
*** Num Channels: 1
*** Samp rate (sps): samp_rate
** Advanced Tab
*** Show LO Controls: False
** RF Options Tab
*** Ch0: Center Freq (Hz): tuning
*** Ch0: AGC: Disabled
*** Ch0: Gain Value: rf_gain
*** Ch0: Gain Type: Absolute (dB)
*** Ch0: Antenna: TX/RX
*** Ch0: Bandwidth (Hz): 500000
<br>
 
* The ADALM-PLUTO (PlutoSDR) is a portable, self-contained RF learning module which is supported by GNU Radio source and sink blocks. It can operate from 70MHz to 3.8GHz. The source and sink blocks are created by an 'Industrial I/O' module. See https://wiki.analog.com/resources/tools-software/linux-software/gnuradio for details.
** IIO context URI: "ip:192.168.2.1"  (without the quotes)
** LO Frequency: tuning
** Sample Rate: samp_rate
** RF Bandwidth: 500000
** Buffer size: 16384
** Quadrature: True
** RF DC Correction: True
** BB DC Correction: True
** Gain Mode (Rx1): Manual
** Manual Gain (Rx1)(dB): rf_gain
** Filter: (leave blank)
** Filter Auto: True
<br>
 
* The RTL-SDR is a receive-only, low-cost, self-contained RF signal tuner supported by GNU Radio. There are several varieties of this device; the one used in this section is the V.3 Model. The full description is RTL2832U R820T2 TCXC + BIAS T + HF. The device has a frequency range of 500 kHz to 1766 MHz, with operation from 500 kHz to 24 MHz in direct sampling mode. The source block is created by an Out of Tree module. See https://github.com/osmocom/gr-osmosdr for details.
** Output Type: Complex Float32
** Device Arguments: rtl=0
** Sample Rate (sps): samp_rate
** Ch0: Frequency (Hz): tuning
** Ch0: RF Gain (dB): rf_gain
** Ch0: IF Gain (dB): 20
** Ch0: BB Gain (dB): 20
** Ch0: Bandwidth (Hz): 200000
<br>
 
* The FunCube Pro+ is a receive only USB "dongle" with a range of 150kHz to 240MHz and 420MHz to 1.9GHz. The source block is created by an Out of Tree module. See https://github.com/dl1ksv/gr-fcdproplus for details.
** Device Name: (see [[Audio_Source#Device_Name]] for details)
** Unit: 1
** Lna enable, disable: 1  (enables low noise amplifier)
** Mixer gain enable, disable: 1
** Frequency (Unit Hz): tuning
** Frequency corr. (ppm): 0  (frequency correction in parts per million)
** If gain: rf_gain
 
=== Tuning and Using the Spectrum Analyzer ===
 
Set the following parameters in the QT GUI Sink
* Center Frequency (Hz): tuning
* Bandwidth (Hz): samp_rate
* Show RF Freq: Yes
 
The analyzer can be tuned with the Frequency control widget. If you check the "Display RF Frequencies" box in the run-time GUI window, then the scale on the 'Frequency Display' and 'Waterfall Display' tabs will show the actual frequencies with the tuned frequency in the center.
 
== Building an FM Radio Receiver ==
 
Now that you have a basic receiver application running with a real-time display of your received data, let's build a useful application! Leave your current flowgraph in place. We will simply add more functionality rather than replacing what is already there.
 
Choose the flowgraph below for your hardware device.
 
<b>UHD / USRP</b>
 
[[File:USRP_FM_fg.png|800px]]
<hr>
 
<b>ADALM-PLUTO</b>
 
[[File:Pluto_FM_fg.png|800px]]
<hr>
 
<b>RTL-SDR dongle</b>
 
[[File:RTLSDR_receive_fg.png|800px]]
<hr>
 
<b>FunCube Pro+</b>
 
[[File:FunCube_FM_fg.png|800px]]

Latest revision as of 16:37, 26 October 2023

Barry Duggan is a graduate of Georgia Tech in Electrical Engineering and is a career computer programmer specializing in real-time control, data communication systems, and email security. He has been an amateur radio operator since 1953.

Barry started working on the GNU Radio project in 2019 and now devotes most of his time doing Wiki documentation, and development of amateur radio applications. He is a member of the GRCon24 Organizing Committee.

Summary of programming languages used (roughly in chronological order):

  • FORTRAN
  • assembly languages of various computers
  • COBOL
  • C
  • Pascal
  • HTML5
  • CSS3
  • XML
  • JavaScript
  • JSON
  • node.js
  • PHP
  • Python