User:Duggabe: Difference between revisions

From GNU Radio
Jump to navigation Jump to search
mNo edit summary
 
(57 intermediate revisions by 4 users not shown)
Line 1: Line 1:
= DRAFT 3rd REVISION 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" -->
<!-- 16 May 2020 -->
== 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 has basic functionality.
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 SDRs that have GNU Radio support.  They span from very cheap ($20) receivers like the RTL-SDR to very high-performance tens-of-thousands-of-dollars systems. Parameters for four popular devices are presented below. Other devices are listed in [[Hardware]].
* JavaScript
 
* JSON
== Creating a Software Radio Spectrum Analyzer ==
* node.js
 
* PHP
This example uses an [[USRP Source]] block, so it should work for almost all USRP SDRs, such as the [https://kb.ettus.com/B200/B210/B200mini/B205mini USRP B series] which have a continuous frequency coverage from 70 MHz to 6 GHz and a maximum sample rate of 56 MHz.
* Python
 
In order to use UHD blocks, you must have UHD installed, although most methods of installing GNU Radio come with UHD. See [https://kb.ettus.com/Building_and_Installing_the_USRP_Open-Source_Toolchain_(UHD_and_GNU_Radio)_on_Linux Installing the USRP] for more info.
 
Using gnuradio-companion (GRC), build the following flowgraph.<br>
 
[[File:HW_tutorial_fg.png]]
 
=== Setting Parameters ===
 
The USRP Source parameters are set as shown below. 
 
Note that we want the Automatic Gain Control (AGC) to be disabled, because we will be browsing spectrum that often will be empty, and it's tough to tell when a signal is present or not when the AGC is constantly adjusting the gain so that the received samples are always at a constant level.  You can think of AGC like something automatically adjusting the volume knob.  AGC being enabled is better suited for applications when you know a signal exists on the frequency you are tuned to.
 
[[File:HW_tutorial_p1.png|400px]] &nbsp;&nbsp;&nbsp;&nbsp; [[File:HW_tutorial_p2.png|400px]]
 
=== Tuning and Using the Spectrum Analyzer ===
 
Set the following parameters in the [[QT_GUI_Sink|QT GUI Sink block]]:
* 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.  Keep in mind that the IQ samples coming from the SDR are at baseband, i.e. at 0 Hz, the signal was down-converted to baseband before it was sampled by the Analog to Digital Converter (ADC).
 
With the message output of the QT GUI Sink block (freq) connected to the message input (command) of the USRP Source, you can double click the display on the Frequency or Waterfall screens and it also will tune to the selected frequency.  This is useful for centering on a signal.  Before you click, the frequency will be displayed with the cursor. 
 
You can adjust the Sample Rate to see more or less spectrum at a time (because these SDRs use quadrature sampling, the amount of bandwidth we see at once is equal to the sample rate). This trace shows four FM stations.
 
[[File:HW_tutorial_freq.png|800px]]
 
== Hardware Considerations ==
 
Setting the sample rate involves several factors to consider.
* The various hardware devices have limits on what sample rates they can deliver. Some, such as the FunCube Pro+, have a fixed sample rate of 192kHz. Setting the flowgraph sample rate must be within the limitations of the device.
* The computer hardware and operating system you are using will set limitations on the data throughput, such as:
** USB2 vs USB3
** processor speed
** number of CPU cores
* If you are using a USRP, data overruns are indicated by the letter 'O' displayed on the terminal screen. These are because the input data stream is producing data faster than the flowgraph can consume it. Adjusting the sample rate and/or the input buffer size (where available) should alleviate the problem.
 
== Building an FM Receiver ==
 
Now that you have a tested input device, you can build an FM Receiver with it. See the following examples and use your hardware.
 
* [[WBFM_Receive|Wide Band FM Receive Block]]
* [[NBFM_Receive|Narrow Band FM Receive Block]]
* [https://wiki.gnuradio.org/index.php/File:RTLSDR_receive_fg.png RTL-SDR FM Receiver]
 
For audio considerations, see [[Audio_Sink]].

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